+2 votes

I have projects in mind involving heavy reliance on Level of Detail, however something confuses me with Godot:

Usually, the idea is to render a different mesh depending on the distance you are from it. So it looks easy to script that on a Spatial having several MeshInstances as child, each of them being a different LOD.
But...
This will not work if there are multiple cameras in the world, because only one LOD can be active at a time with this method :/

So I'm wondering... how is this possible to do with Godot, assuming that the project could be an open-world with a huge streamed map?

in Engine by (27,966 points)

You could measure the distance to the nearest camera and determine the LoD from that distance.
One thing to think about is:
When you have one camera near at your object and one far away, the object will be rendered in high LoD. I don't know if it's better to render the same high-LoD mesh twice or two different meshes with one high and one low LoD...

This is exactly what I'm concerned about. The only way I know would be to determine the LOD at the render stage, not the process stage. But I have no idea how Godot handles it, or if it handles LOD at all.

1 Answer

+1 vote

You should be able to use different mesh instances, and set their "Range Begin" and "Range End" parameters, you shouldn't have to worry about cameras then.

by (122 points)
Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to webmaster@godotengine.org with your username.