1
votes

I’m attempting to place a large 3D-model several hundred meters high at different distances from the camera. The models texture and shadows are flickering a great deal which is destroying the immersive feeling, even when adjusting the z-near and z-far properties of the camera and of the light sources. This is especially true when incorporating the lighting and shadows (an ambient light source and a directional).

Is there an optimal value of z-near and z-far, both for the camera as well as the light sources which could reduce the flickering? Or is there any other properties that could be set to render the scene more accurately? Or is SceneKit just not good enough to render such large objects at large distance and I should instead be using unity or unreal?

I saw that SCNLight has a .shadowBias property that could be a potential solution, but I have no idea of what would be a good value and from what I’ve seen so far it does not really change anything.

1

1 Answers

0
votes

Even if SceneKit's high-scale objects (for VR app) can be rendered within 3000 + meters from SCNCamera without flickering artifacts, ARKit's high-scale objects (for AR app) can't brag about it, because the maximum allowable distance for rendering, without visual discrepancies, of 3D objects and their shaders in ARKit's ARSCNView is not more than 950 meters.

But optimal distance for AR objects is 300-700 meters.

We have this limitation because a compositing based on the ZDepth channel is impossible at such a distance (no useful pixel values in Z-channel for compositing).