Skip to main content
GameDev.net gamedev.net
🔒 Locked

Crysis' voxel-based terrain engine

Started by dchavez999 Mar 12, 2007 at 7:14 PM 20 replies 28.2k views
Original Post
dchavez999
dchavez999
Hey, Those of you that have seen the GDC07 demo of the CryEngine 2 Sandbox Level Editor may have noticed that they said that the terrain system they are using is voxel-based (like the old Outcast game), thereby allowing them to create detailed terrain features like overhangs and caves via a terrain 'brush' in the editor. It looks amazing! I was wondering if anyone had any recent links to papers describing how such terrain could be implemented? Specifically how to efficiently tesselate a 3d voxel grid for modern GPUs? Thanks :-)
spacerat
spacerat
To achieve the visualization of large voxel volumes, there are many ways.

The following methods are designed to visualize large polygon meshes. However, in case that all voxels are converted to polygons by marching cubes or a similar algorithm before, its about equal.

[1] Adaptive TetraPuzzles - Efficient Visualization of Gigantic Polygonal Models

[2] GoLD: Interactive Display of Huge Colored and Textured Models

[3] HLODs for Faster Display of Large Environments

[4] Far Voxels - A Multiresolution Framework for Interactive Rendering of Huge Complex 3D Models on Commodity Graphics Platforms

Alternatively, the two following methods are usable directly on voxels:

[5] Interactive View-Dependent Rendering of Large IsoSurfaces

[6] Visualization of Large Isosurfaces Based on Nested Clipboxes

I'm not sure which method they used - but I guess it will be either [2] or [3], as they are the most practical for the game-industry. All meshes can be pre-computed and rendered as static meshes without much CPU cost.

Here other related links to other voxel-based terrain engines:
Iehova (by Peter Venis)
Hvox (by me)
Voxlap (by Ken Silverman)

Oh,btw - here a video from the GDC07 where it is shown.
http://www.gametrailers.com/umwatcher.php?id=47885

Greez, Sven

Sven Forstmann
http://www.p0werup.de

[Edited by - spacerat on April 2, 2009 12:07:33 AM]
dchavez999
dchavez999
Thanks a lot for all that info Sven! I'll check them out.

Cheers,
Mark.
Steadtler
Steadtler
Quote:
Original post by spacerat
To achieve the visualization of large voxel volumes, there are many ways.

The following methods are designed to visualize large polygon meshes. However, in case that all voxels are converted to polygons by marching cubes or a similar algorithm before, its about equal.


Careful! Isnt Marching Cubes patented? ;)

I remember the Delta Force series also used a voxel engine, maybe you can find a post-mortem of some sort.

spacerat
spacerat
As far as I remeber, the patent expired this year or already the last one.
However, its just an example - there are many alternative ways for the conversion like this one, which are not patented.
lc_overlord
lc_overlord
The crysis engine uses something similar to marching cubes to build bit's of geometry to put in holes made the big heightmap, it is actually something you could have done by hand in the first engine, so in theory it's nothing uncommon or even that advanced, but their implementation of it is pretty sweet.
soconne
soconne
Does anybody think this will be the next new rendering method for terrain? Seems pretty slow to me, plus I'm sure in all their demo videos of Crysis they're running it on the Intel Dual Core X6700 or the Quad Core 6800 with an Nvidia 8800, which we all don't have.
Author Freeworld3Dhttp://www.freeworld3d.org
ViLiO
ViLiO
I don't see why not. It allows for completely destructible terrains with overhangs, caves and cliffs, appears to lend itself to existing terrain LOD algorithms such as clipmaps and I can only imagine how good it would look combined with id's MegaTexture. [smile]

FYI, GraphicsDev.net is holding a discussion on Crysis Technology Breakdown tomorrow (more info here)
[smile]

Sven, I remembering seeing your volumetric terrain screenshots ages ago on Flipcode IOTD, seriously impressive stuff

All the Best,
ViLiO
Richard 'ViLiO' Thomasv.net | Twitter | YouTube
soconne
soconne
I just watched the following video from GDC
http://www.crysis-online.com/video_downloader.php?dir=/video/SD/(Crysis-Online) GDC 2007 Sandbox Demo 2.wmv

And it doesn't seem like they use a voxel approach for their entire terrain. It seems they only render small pieces of the terrain using a voxel method and the rest is still a regular heightmap. If anybody has watched the video, am I wrong?
Author Freeworld3Dhttp://www.freeworld3d.org
dchavez999
dchavez999
yeah, I think you're right - looks like they've augmented the CryEngine terrain renderer with a voxel component for drawing small chunks of terrain to handle natural terrain features. Makes sense, and gives the best of both worlds.
soconne
soconne
I would think its better b/c its completely dynamic and storing voxel information takes up much less disk space than a mesh. Plus, its seems it would be much easier to sculpt in the editor, since you're only modifying single values in a 3d volume stating whether that particular point is solid or not.
Author Freeworld3Dhttp://www.freeworld3d.org
spacerat
spacerat
Quote:
Original post by soconne
.. storing voxel information takes up much less disk space than a mesh.


Thats true - for example by compressing the volume using run-length encoding, the data size can be kept very moderate.
Rompa
Rompa
I wonder how they texture it then?
spacerat
spacerat
Quote:
Original post by Rompa
I wonder how they texture it then?


Related to this, has anybody seen the Making-Of of NVidia's cascades demo on the GDC ? Maybe they unveiled something about texture mapping for iso-surfaces. Or is there even a video somewhere available ?
Schrompf
Schrompf
Actual free-formed terrain is not really complicated, I think. It's just the many detail problems in keeping the mesh consistent among all possible detail situations that can cause a lot of work. Texturing is a different topic, though. I haven't found a way to texture large meshes automatically. The NVidia demo looks like they have solved this issue... anyone has an idea how they achieved this?
----------
Gonna try that "Indie" stuff I keep hearing about. Let's start with Splatter.
soconne
soconne
Texturing seems it could be pretty easy. All you would need is the vertex position and the normal. Then in the shader, you could calculate texture coordinates based on just those pieces of data. Correctly lining up the texture to match where it is on the terrain is done through the vertex position. Then deciding which texture to use could be done with the normal. I've seen it done this way in some of the sites demos that were listed above.
Author Freeworld3Dhttp://www.freeworld3d.org
HellRaiZer
HellRaiZer
Quote:
Original post by spacerat
Quote:
Original post by Rompa
I wonder how they texture it then?


Related to this, has anybody seen the Making-Of of NVidia's cascades demo on the GDC ? Maybe they unveiled something about texture mapping for iso-surfaces. Or is there even a video somewhere available ?


nVidia's presentations from GDC '07

HellRaiZer
HellRaiZer
razorjack
razorjack
I've heard that Crysis uses one of these new features of DX10: There are these "geometric shaders" which generate new vertices each frame.
Look also http://www.atomicmpc.com.au/article.asp?CIID=73893

Maybe crysis renders a simplificated terrain mesh with displacement maps by using some geometric shaders. The other LOD stories with Octrees could be used additionally.

I've found also a cool technical note:
http://www.behardware.com/news/lire/21-02-2006/
My spacesim project blog:http://www.simerge.com/

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.