I've been working on a Kerbal Space Program-like game, and have a question when it comes to creating a LOD system for planets.
Is it possible to modify a single MeshInstance3D node's mesh to have multiple resolutions across the planet surface, or do I have to separate the planet's mesh into multiple MeshInstance3D nodes, and stitch them together that way?
#Level of detail system for large meshes
1 messages · Page 1 of 1 (latest)
yes. it is possible to modify a single meshinstance3d's mesh to have varying resolution... but it is hard. you need to generate a custom mesh with higher vertex density near the camera and lower elsewhere, i think. this probs involves creating a dynamic mesh with manual lod tessellation... usually done in code. stitching seams is difficult though. managing normals and tangents too. if you mess up. it shows :(
id split the planet into chunks. like quadtree tiles on a sphere? each tile is a meshinstance3d. lod is managed per tile. this way is easier. better for culling and streaming... and updating lods as the camera moves
go with multiple nodes :D unless you're a masochist. or john carmack.
Gotcha, thanks! I'll try the multiple mesh instances over just one, seems better for performance anyway.
I'm still kinda getting my head around managing instantiated nodes from a script, but it shouldn't be to bad, hopefully. Wish me luck!
do note that if you go the hard route
surfacetool and immediategeometry will make your life a biiit easier