[no subject]

In our current project, I've come across some apparent limitations of the 
raytracer that I didn't realize could appear in production scenes. 
Basically, I'm pretty sure they all boil down to floating point accuracy 
problems, either with MR's functions or the BSP algorithm. All of the 
problems are induced by placing or scaling objects so that the scene 
bounding box is large. In the scripts I have somewhat contrived dimensions, 
but we are currently experiencing artifacts in a job where we are rendering 
game environments that came from a 3rd party vendor. You'll have to take me 
at my word that we've done our best to ensure that the assets aren't any 
larger than they need to be. Currently, we're working in feet and our scenes 
are bounded by roughly a 5000 foot radius, which seems fairly reasonable to 
us. Even OpenGL can handle this density without problems. What we've noticed 
is that the scale at which raytracing artifacts are encountered is dependent 
on the density of other geometry in the scene (this is why we're pretty 
suspicious of the BSP algorithms). So, we think the problem is being 
exacerbated by the fact that our environment is both dense and large, though 
we don't believe it to be unreasonable in either sense -- remember, it's 
just a game asset.

The types of artifacts we're getting include: * Shadow inaccuracy that 
produces sub-triange patterns on geometry faces. (Run the first repro 
script -- examine the sphere.)
* Final Gathering artifacts caused by the fact that presample FG rays are 
sent by the raytracer (not scanline) and in our scenes the
raytracer sometimes has what appears to be a "clipping plane." This is weird 
because as I understand it, the raytracer doesn't have
a camera-space clipping plane. Run the second script to see what I'm talking 
about -- the grid gets clipped away near the camera.

I guess my question is, has anyone else encountered this before? Is there a 
solution? (We've tried scaling down the entire scene and camera and the 
artifacts do not seem to change). I'm open to any ideas. Even workaround 
suggestions like rendering the distant parts of the environment to a texture 
and somehow clipping those parts of the scene away are welcome.

Here are the three scripts that should produce problems similar to what I'm 
talking about. One interesting thing is that hiding the distant/scaled 
object doesn't always completely eliminate the artifacts. This is especially 
annoying because it means we'd have to actually delete parts of our 
environment to account for artifacting. I realize that at some point 
floating point accuracy always breaks down. These scripts have pretty high 
dimensions. I didn't bother trying to converge on minimal problem 
dimensions, so it's possible smaller ones create the same problems. And keep 
in mind that additional complexity in the scene seems to reduce the limits 
further, which seems like it shouldn't really happen.


-Andy

'Script to produce shadow problem
NewScene
CreatePrim "Grid", "MeshSurface"
CreatePrim "Sphere", "MeshSurface"
Translate , 0, 4, 0, siAbsolute, siPivot, siObj, siY, , , , , , , , , , 0
SetValue "light.light.soft_light.intensity", 1
SetValue "light.light.soft_light.shadow", True
SetValue "light.light.soft_light.factor", 0
SetValue "Scene_Root.AmbientLighting.ambience.green", 0
SetValue "Scene_Root.AmbientLighting.ambience.red", 0
SetValue "Scene_Root.AmbientLighting.ambience.blue", 0
CreatePrim "Sphere", "MeshSurface"
Translate , 0, 1000000, 0, siAbsolute, siPivot, siObj, siY, , , , , , , , , 
, 0


'Script to produce raytracing "clipping plane" problem
NewScene
CreatePrim "Grid", "MeshSurface"
SetValue "grid.grid.ulength", 50
SetValue "grid.grid.vlength", 50
SetValue "ViewRenderOptions.Scanline", False
CreatePrim "Sphere", "MeshSurface"
Scale , 5000000, 1, 1, siAbsolute, siPivot, siObj, siX, , , , , , , , 0
Scale , 1, 5000000, 1, siAbsolute, siPivot, siObj, siY, , , , , , , , 0
Scale , 1, 1, 5000000, siAbsolute, siPivot, siObj, siZ, , , , , , , , 0

'Script to produce raytracing "noise" problem
NewScene
CreatePrim "Grid", "MeshSurface"
SetValue "grid.grid.ulength", 50
SetValue "grid.grid.vlength", 50
SetValue "ViewRenderOptions.Scanline", False
CreatePrim "Sphere", "MeshSurface"
Translate , 0, 9000000, 0, siAbsolute, siPivot, siObj, siY, , , , , , , , , 
, 0 
---
Unsubscribe? Mail Majordomo(at)Softimage.COM with the following text in body:
unsubscribe xsi


Search the XSI List archives here or use the advanced search form to search across mailing lists. Searching help is available.
This site supposedly brought to you by Benjamin Grosser and the Imaging Technology Group.