Jump to content
  • Advertisement
Sign in to follow this  
Aqua Costa

Terrain silhouette

This topic is 2598 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

Ive implented GPU Geometry clipmaps, but this technique doesn't seem to handle far terrain silhouettes very well... Since the distance between vertices increases far from the view point, when the camera moves the silhouette of the terrain far from the view point keeps changing (is very unstable).

How can I increase the stability of silhouettes without increasing the number of triangles?

Share this post


Link to post
Share on other sites
Advertisement
Usually the outer levels of the clipmap should only change half as frequently as the next closer level.
Are you shifting all the outer levels at the same time as the innermost level?

Share this post


Link to post
Share on other sites

Are you shifting all the outer levels at the same time as the innermost level?

Yes.

But if I update the half as frequently as the next closer level, the levels will overlap each other right?

Share this post


Link to post
Share on other sites

[quote name='PrestoChung' timestamp='1304633829' post='4807134']
Are you shifting all the outer levels at the same time as the innermost level?

Yes.

But if I update the half as frequently as the next closer level, the levels will overlap each other right?
[/quote]

If you implemented geometry clipmaps correctly (as in http://research.microsoft.com/en-us/um/people/hoppe/geomclipmap.pdf) then it shouldn't ...
(sorry if this is not really usefull, but apparently what you implemented is NOT geometry clipmaps, so until you explain your algorithm/implementation, we won't be able to help much :))

Share this post


Link to post
Share on other sites
Ive read the paper again, and it seems my implementation is missing somethings :blink:

For what, Ive understood the coarser levels are only updated when the next vertex position is exactly in the position of the old vertex (well I didnt explained it very well :huh:)

"The choice of grid size n = 2k?1 has the further advantage that the finer level is never
exactly centered with respect to its parent next-coarser level. In other words, it is always
offset by 1 grid unit either left or right, as well as either top or bottom (see Figure 2-4),
depending on the position of the viewpoint."[/quote]

This 1 grid unit offset is the L-shaped strip right? But how do this prevent levels from overlapping?

Share this post


Link to post
Share on other sites

Ive read the paper again, and it seems my implementation is missing somethings :blink:

For what, Ive understood the coarser levels are only updated when the next vertex position is exactly in the position of the old vertex (well I didnt explained it very well :huh:)

"The choice of grid size n = 2k?1 has the further advantage that the finer level is never
exactly centered with respect to its parent next-coarser level. In other words, it is always
offset by 1 grid unit either left or right, as well as either top or bottom (see Figure 2-4),
depending on the position of the viewpoint."


This 1 grid unit offset is the L-shaped strip right? But how do this prevent levels from overlapping?
[/quote]

Quick answer : there always is a gap between 2 levels. This gap allow you to move the finer level one unit without moving the next coarser one. The L-shape is there to fill the gap. When your finer level move so that it will overlap the next coarser level, then and only then you move your coarser level.

Long answer : English is not my primary language, so explaining something like this in english is a bit above my abilities :) (I've had a bit of trouble understanding the whole geometry mipmapping stuff myself :P)
What I would advice is : take a pen, a paper with a grid, and draw a sample case. This is what I did, and it helped me visualize the whole thing.
It's not so difficult, but explaining it by words is :)

Share this post


Link to post
Share on other sites
Your english is ok and thank you for trying to help me ;)


there always is a gap between 2 levels. This gap allow you to move the finer level one unit without moving the next coarser one. The L-shape is there to fill the gap. When your finer level move so that it will overlap the next coarser level, then and only then you move your coarser level.


So the finer level always has to move two units right? Because the height of the L-shape of the next coarser level is always twice of height of each finer level quad...

Share this post


Link to post
Share on other sites

Your english is ok and thank you for trying to help me ;)

[quote name='intyuh' timestamp='1304958070' post='4808591']
there always is a gap between 2 levels. This gap allow you to move the finer level one unit without moving the next coarser one. The L-shape is there to fill the gap. When your finer level move so that it will overlap the next coarser level, then and only then you move your coarser level.


So the finer level always has to move two units right? Because the height of the L-shape of the next coarser level is always twice of height of each finer level quad...
[/quote]

Yep, that's right.
if you haven't already, take a look at http://research.microsoft.com/en-us/um/people/hoppe/gpugcm.pdf
It explains things in a different manner, and it helped me understand a few things (I used both papers to fully understand the geometry clipmap algorithm)

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

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

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!