Jump to content
  • Advertisement

Archived

This topic is now archived and is closed to further replies.

sross

Progressive mesh for lod... what you think

This topic is 5630 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I would like to know what you think about progressive mesh for lod and scene optimization... and how would you implement it (if you have lots of different levels of quality it might take too much memory? but at the same time if you have not enough, you might see the difference in the screen when you change to a lower or higher detail mesh... so what is a good approach... like how many levels of different quality etc...) and also would mixing progressive mesh with the famous billboard technique be better? Yann L PWNS Carmack

Share this post


Link to post
Share on other sites
Advertisement
Some day ago, I used a dinamyc LOD... every X meter I dropped few vertices...
Then very people said me that the best method was to use N models (with different LOD) and to swich they if the model was enough far...

Now I use 3 LOD for each model .. closed...medium.. and far distance, but I''ve read that some engine use 9 different LOD.

Billboard is good only if the model is the same for each view..
like a tree or a barrel.... for a man or a car it doesn''t work (IMO)


byezzz

Share this post


Link to post
Share on other sites
ok yea true... i didnt think about that for the billboard... thx for the info... so basicly you use billboard for objects that are the same even if the point of view change and you use progressive mesh for the other objects... that sounds good

Yann L PWNS Carmack

Share this post


Link to post
Share on other sites
Look into impostors - these are billboards that are updated at runtime (by rendering to a texture), so they work for non-symetrical objects too.

As for progressive meshes and other alternatives: progressive meshes are a good form of continueous LOD, but to the best of my knowledge you have to update the vertex buffers almost every frame to do this. This is often expensive. The other option, mentioned by BlueChip, is to use a set of versions of the model (i.e. LODs), each of a lower resolution than the previous one. Then you select one of them based on distance. The impostor can be the last LOD. This has the advantage that you can keep your vertex buffers static, but the distadvantage is that you get popping. The popping can be reduced by carefully adjusting the distance at which the switch is made, or even calculating the maximum pixel-error between two adjacent LODs. Another option for reducing the popping is to alpha-blend between two adjacent LODs, but this may not always look very good... I think you could also interpolate between two LODs in a vertex shader, but I'm not sure how this is done.

Michael K.,
Co-designer and Graphics Programmer of "The Keepers"



We come in peace... surrender or die!

[edited by - technobot on June 19, 2003 9:22:37 AM]

Share this post


Link to post
Share on other sites
quote:
Original post by technobot
Look into impostors - these are billboards that are updated at runtime (by rendering to a texture), so they work for non-symetrical objects too.



Yea for sure but if you render again and again to texture wouldnt it just do the same as if you would render it to the screen, therefor no optimization? (my knowledge of the billboard technique is that when the object is far you render it to texture and save the texture and after you just need to display the texture every frame without rendering again to the texture)

Yann L PWNS Carmack
»Yann''s engine shots
»Yann''s game concept

Share this post


Link to post
Share on other sites
quote:
Original post by sross
Yea for sure but if you render again and again to texture wouldnt it just do the same as if you would render it to the screen, therefor no optimization?


You only update when the angle from which you''re looking at the object changes beyond some threshold (e.g. you were looking at it from the front, but now you''re looking at it from 15 degrees to its left). Once you''ve rendered your object, from some direction, you usually don''t need to update it for quite a while. And btw, the further the imposter is, the less frequently you will need to update it. Google for more info (should be plenty of it around).

Michael K.,
Co-designer and Graphics Programmer of "The Keepers"



We come in peace... surrender or die!

Share this post


Link to post
Share on other sites
ah k now i see your point, it sounds good.

so to sum up, the best thing to do is to have around 9 level of quality for mesh depending on distance and then use the billboard technique and update the billboard only when the angle of view change of a certain amount. so i guess then that the best thing to do would be to render the lowest quality mesh to the billboard to save more time

ok now ill try to implement this in the engine im currently working on

thx for the help

Yann L PWNS Carmack

Share this post


Link to post
Share on other sites
I think what your looking for is called CLOD, continuous level of detail. Instead of creating a mesh for every level of detail, it does it dynamically. Check on google, you should find some resources to help you out. Good luck on it.


-UltimaX-

"You wished for a white christmas... Now go shovel your wishes!"

Share this post


Link to post
Share on other sites
If you wan''t some industrial strength CLOD, check out FastMesh:
www.ics.uci.edu/~pajarola/pub/FastMesh.pdf
Combine that with DStrips:
http://www.ics.uci.edu/~pajarola/publications.html
to dynamically manage your triangle strips and you got some pretty good VDPMing. Probably an overkill if you models are below a few thousand polys, but it''s still cool to walk around an 8 mill. poly model in real time!

Karg

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
regarding progressive meshes, you can in fact update them every frame in a relatively quick manner provided you''re clever about how you do it.

http://darwin.arc-9.com/terrain/

the link above has some screenshots of my progressive mesh algorithm working. Occlusion testing, LOD, and rendering are all accomplished in the same step, there is constant system overhead, it can be scaled to sub-pixel accuracy if so desired, and there is no spatial partitioning system required. opengl2.0 compliant cards will be able to implement the entire algorithm cardside (although without occlusion testing) except for a relatively small initialization phase.

the two boring looking pictures show the camera view and a different view of the same camera position. blue areas are occluded and green are visible. The mesh used has approximately 5000 triangles in the frustum, and is updated in under 1 ms. The last shot shows a much more tesselated landscape running the same algorithm. This lanscape has about 160,000 tris in the frustum, and is simply a test to see whether there were any significant visual artifacts (there aren''t).

james

Share this post


Link to post
Share on other sites

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!