LOD's (Too much work for me!)

Started by Santiago, September 09, 2019, 17:07:01

Previous topic - Next topic

Santiago

Hi, I hope you are having a good Monday.

I was playing World of Tanks, which made me wonder in terms of its graphic quality and especially because of its dynamic LODS system for details, both in mesh and textures.

I was studying a lot as in wargamming they used LODS, which led me to the next thought.


I have been working in 3D modeling for 20 years, especially for architects, of course since I learned to use blitz, I was specializing in making lowpoly models.

Even so, today, when making a game alone, it gives me a lot of work to prepare a model for a game, and then make its LODS.

and for a change, if I make a modification to the model, I must update all its LODs, which makes it a nuisance.


Seeing how the WoT works, it occurred to me to generate a generator of LODs, a function, that automatically optimizes 3D objects within the game, either converting it to a 2D-texture-mask, or generating a simplified 3D model by applying a texture of its own render.


Have you ever done something similar? And do they have the same problem on this issue of models and LODs and the work they carry?

I see that in Wot it is optimized, in a Google earth style, buildings and trees go to 2D plane, although it also has tessellation in EVERYTHING. which is a little behind.

Well, that's how I started on Monday. taking Mates and modeling 3D.

Naughty Alien

..i think Wot is using tesselation to play with details, coupled with nice parallax/normalmap..

RemiD

#2
for your type of game (boats on the sea / ocean) with far away view, the best approach imo, is to make 2-3 versions for each model :
->one high details for when entity in camera field of view, and near enough, and visible
->one low details for when entity in camera field of view, and far enough, and visible (facultative)
->one impostor (textured quad) (automatically), for when entity in camera field of view, and very far, and visible

for far away shapes, impostors (textured quads) are the best, and you don't need to update their appearance each mainloop, a simple example of a procedure :
-determine the far away entity orientation related to the player point of view (deltayaw()), if it has not changed much, stop the procedure, if it has changed enough, continue the procedure
-hide all others entities (except the skybox ?)
-put the camera at the player point of view
-make the camera look at the far away entity
-set the camera background color as black (unless you prefer to render the skybox as the background)
-show only a low details version of the entity
-render the camera view to a low resolution texture (for a boat shape you could use one texel per 10cm so for a shape of maximum 12.8m*6.4m, a 128w64h texture would be enough)
->let the high details entity hidden, and show the impostor (textured quad)
->show all others entities

->if you render with a black background, you would have to set the alpha of the background color (black in this case) to 0, and set the texture blend mode to alpha (1)

so a render of a big far away shape like a boat or a building can be done maybe once every few seconds instead of 30times per second...


a tip to make a low details mesh of a high details mesh : load your high detail mesh in a mesh editor (fragmotion !), temporarily make all its surfaces almost transparent (with a material alpha 0.25), then select all its vertices and hide them (so that you can't select them, temporarily), then use primitives to make similar simplified shapes (following the high details shapes outlines) (quite fast to do), then use only one texture (for example 128w8h) with 8*8texels per important color, then select all triangles that must be colored with this color, unwrap "à l'arrache" (=in a fast messy way), and scale / position the unwraped shape so that all its vertices are in the middle of the 8x8 texels area, and they will be colored with this color (quite fast to do)

Santiago

Thanks for the answers, i trying to start to apply all you mention in this post and the other.

tranks!