Jump to content
  • Advertisement

Archived

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

AndreySerba

Problem with 6DOF Voxel terrain rendering algorithm

This topic is 5935 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 make simple hardware accelerated (using OpenGL) 4dof voxel landscape (you can check it at http://www.gametutorials.com/download/CodeDump/glimmerse.zip or http://www.immerse.dp.ua) But with 6dof I have a problem. Can somebody help me with 6dof voxel landscape rendering algorithm? Or may be somebody know links to tutorial or other technical paper about? Thanks to all…

Share this post


Link to post
Share on other sites
Advertisement
I love what you''ve got so far with your terrain engine! With everybody using ROAM nowadays, it''s refreshing to see somebody applying an old algorithm to new hardware to get good results. I saw a similar demo at flipcode. It supported texturing, but the geometry suffered too much distortion. I have a feeling yours would show the same artifacts, except you tesselate it more. But it seems that the overall efficiency of the algorithm (implicit frustrum culling, occlusion culling, and LOD!) more than makes up for that. Nice work! It''ll be really interesting to see what you can do in terms of a 6 dof engine.

Now, in terms of 6 DOF... It seems that as "projection scale" approaches infinity, the view approaches vertical... (will return to finish post; thunderstorm)

Share this post


Link to post
Share on other sites
Voxel engines are nothing else as heightmap raycasters ... raycasting a heightmap is usually pretty slow though.

What makes it fast for voxel engines is that they make use of what has been called vertical ray coherence, what this means is that you use the fact that lines on the screen line up with the normal of the ground plane (the vertical direction, along which the surface is displaced by the heightmap). This fact allows you to do the raycasting for an entire line (along vertical lines on the screen in the case of 4dof) as a simple iterative 1D search along a line in the heightmap.

I understand you know all this, but I just need to make the exact reason why voxel engines work come to the forefront for a moment.

The only way to make a 6dof engine which works in the same way as the 4dof one is to once again find lines for which there is verical ray coherency. Fortunately these lines do still exist in the 6dof case, unfortunately they originate from a center in a fan shape (in the the special case of 4dof this center is at y=infinity, making the lines on the screen all go straight up). So to cover the screen with them you need to scan it in a slightly awkward way ... its the only way to extend the basic principle behind 4dof engines to 6dof though.

See the paper titled "A Terrain Rendering Method Using Vertical Ray Coherence" at http://www.base-sixteen.com/terraVox/Links.shtml (you might also check out more of the site and the old messages on the board, though it pretty much went and died) and http://graphics.lcs.mit.edu/~gs/research/dispmap/

There are also some hacks of course, 5 dof is easy ... but once you start messing with pitch it all breaks down really fast. You cant do full 6dof with 4dof rendering and screen space based distortion hacks.

[edited by - PinkyAndThaBrain on April 19, 2002 9:11:01 PM]

Share this post


Link to post
Share on other sites
I''m back!

OK, I was about to suggest some "screen based distortion hacks." Thinking about it now, I realize, as PinkyAndThaBrain said, that full 6 DOF is impossible. But I still think you have a surprising amount of flexibility.

As I was beginning to say, as "projection scale" approaches infinity, the view approaches vertical. At some threshold, flip the camera''s XZ view vector, and make it upside-down. Then begin to decrease the projection scale. Sure, it''s a hack, but it will provide one desired effect: pitch.

One thing I mentioned you will need for pitch is roll. That''s a simple screen-space rotation: no biggie.

So now, just from simple "hacks," you have yaw, pitch and roll. Sure, there are some orders of rotations you can''t do, but, even with these limitations, I think you can get quite a lot done.

Now I''m going to go look into that paper PinkyAndThaBrain posted...

Share this post


Link to post
Share on other sites
I don’t think that is possible to compare voxel-based and ROAM landscape! I like main idea of voxel landscape – get speed by removing invisible part of terrain. I see lots ROAM landscapes, but NovaLogic landscapes (especially in Comanch4) much better then any ROAM landscapes. With current computers CPU speed voxel based landscapes have more feature then other… As far as I think so…

I’ll check «A Terrain Rendering Method Using Vertical Ray Coherence» too… Thanks. Things slightly stay clear… But it’s take long time until I understand fully. In any case thanks, now I know in what direction I must work!



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!