Hello,
Do you think that Unity will add a feature that would allow to keep the player in an acceptable distance to the origin on bigger scenes/multiscene world by shifting the origin or maybe with some other method?
I’ve noticed that some problems occur even if some objects are placed not that far from the origin. I was doing some tests and most of the problems so far are visible on animated skinned meshes. Even at 1500-2000 units from the origin you can easily see that skinned meshes are ‘shivering’ when they are animated. It’s mostly visible in parts where other meshes like eyes/teeth are touching skinned mesh (head in this case) but shivering is visible on most verts of the skinned mesh. I’ve even used Challenger Character asset from the Blacksmith demo to doublecheck if there is everything fine with my assets. There is a video link at the end of this post.
I know that some games can solve the problem just by moving everything manually to keep the player near the origin. I was wondering how good is that approach and I’ve noticed that it would probably be not possible with static Unity scenes and features like Navmesh, Occlusion Culling and GI. Please let e know if I’ wrong in any of these poitns.
- You can’t move navmesh (?)
- You can’t movie static objects (batching) in runtime.
- You probably can’t move occlusion data (?)
- I don’t know about GI data (both baked and precomputed for realtime GI), but you can’t move static meshes and GI requires them to be static.
Maybe these things can be somehow moved by the editor under the hood? Is it possible to change their transforms in runtime from the script?
I think that it may be solved but I have no idea if it’s possible with the actual architecture of the editor.
- Add a feature that would somehow be able to ‘magically’ shift the origin to a new position (can be acutal player or camera position etc.)
- Add features that would allow script to change position of the whole scenes (with all additional data like Navmesh, OC, GI, batched meshes data etc.)
Do you think that Unity will add a feature/features? Is it even possible with the actual setup? With all the features that are coming like multi-scene editing and other similar stuff I think that feature that would take care of origin shift will be very useful.
Maybe there is some other way to solve the problem?
As I’ve mentioned earlier I’m seeing most of the problems with precision in animated skinned meshes. Maybe there is some other way to solve the problem just for the animation?
Here is a video - https://vid.me/It9E - of the Challenger prefab placed at (X: 2000, Y: 0, Z: 2000). Animation speed is set to very low, so it’s easier to see the floating point precision results on bones that moves the meshes (both skinned and standard). Result is same if the Animator is disabled and prefab is moved just by the main transform. Shivering is not visible only if the prefab is not moving at all.