I loaded a single PRT into the PRT Loader and set “Load Single Frame Only”, keyframed the PRT loader rotating over 2 frames. Set mode to Voxel, enabled Motion Blur. Render reports: “tree_array2D.ensure_root_coontains() - Cannot grow to contain the specified point.”
If I had to guess, I would say your voxel array size is dynamic, and is not reconfiguring properly to enclose the bounding region of the entire transform.
BTW, I’m digging the point-to-voxel-on-the-fly-not-eat-up-RAM approach.
BTW, even then this error doesn’t show up, the renders are incorrect. Parts of the scene are getting clipped, and other parts end up rendering hot white.
Cannot get that specific error message, I assume some particle has produced infinite/invalid position
But I am getting the wrong/clipped/overbright/negative values you mentioned (and I think we have some inhouse case that looked very wrong two weeks ago) with Motion Blur using both the Velocity channel and animated PRT Rotation.
We will be looking into it (it does work in some cases).
Eeps. Now I’m getting that message WITHOUT motion blur.
But with the same scene, if I move the camera a bit, I don’t get the message. Instead, the render terminates halfway through with NO ERROR. It just silently fails to finish rendering and returns the framebuffer. Ick.
The switch happens when the voxels start drawing from a different direction. Which is something I don’t quite get yet. Sometimes it’s front to back, other times it’s back to front. In this case, front to back gets error message, back to front gives me the silent treatment.
The voxels are drawn in a plane which is oriented half way between the light direction and the camera direction. Both the illumination pass and the actual drawing happen in this step, then the plane moves parallel to the next slice.
There CAN be issues with this we haven’t resolved yet depending on where the light and the camera are relatively to each-other. If you can replace the particles with a simpler PFlow while keeping the camera and lights and can repro the problem with that setup, you could send us the scene for debugging.
I’m attaching a PRT file and a scene. No motion blur.
It’s only 7 points, and if I cull any one of them, the scene renders fine. There are two cameras. Camera01 gives the error, Camera02 silently aborts the render.
Are the voxels created in this plane? Meaning, are the voxels locked to something that isn’t view dependent, and the plane intersects the voxels, or is the plane the orientation of the voxel array, so that by changing the light or the camera, particles will move in and out of the voxels?
The voxels are created in a plane which is aligned to the vector halfway between the camera and the light. When the camera and light are facing the same way, rendering happens front to back, and when facing towards each other, rendering happens back to front. Therefore you may notice a static particle set “changing” when moving a light or camera if your voxel size is large. This shouldn’t be an issue with smaller voxels and larger filter radii. Are you expecting artifacts from this approach?
Yes, I am, but I suppose it’s an issue of “how small is small?”
I’ve got sub-pixel sized voxels and I’m seeing artifacts on stills and slow animations, and some other issues, but that’s why I’m asking, to see what I can do about it on my end.
If the voxels are always oriented to the halfway vector, then moving anything in the scene will cause them to reorient or otherwise resample, so there’s nothing clever I can think of to avoid that. Likewise, it’s difficult to suggest any fancy voxel optimizations for that. For instance, if the voxels were aligned to the camera, then you could make the ones near to the camera small, and the ones far away large, as well as making them elongated so that the spacing between them in camera Z would be larger than XY. Or if the voxels were fixed, and the intersecting planes just sampled from the voxels, you could make the voxels non-uniform in size or make an octree type hierarchical structure.
The approach you have is fine, I just seem to be hitting into some issues with it, and I’m not coming up with any good ideas on how to fix them, especially on my end. Hmmm…
The parallel planes… Could you vary the “resolution” of them? So that the ones near the camera might have a voxel size of .2, but the ones further from the camera might be 2? And can their “texture” have non-square pixels? So that you might have the X resolution be higher than the Y? Or more likely, just set the spacing between them to be different? I need more XY resolution than Z most of the time, so the spacing between slices could be varied, no? Messes us the scattering, I’m sure, though. I need to play more and get some more sample images made.