Archived

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

3dcgi

Quake 3 and curved surfaces

Recommended Posts

3dcgi    127
What does the Quake 3 engine do that caused it to get a reputation for being good at rendering curved surfaces? I''m sure the reputation is well deserved I''m just curious about the technology behind it. -- Todd http://www.3dcgi.com/

Share this post


Link to post
Share on other sites
3dcgi    127
Thanks Mental, but do you know what they do technically?

Do they automatically generate triangles from an equation that describes the curve? A form of scalable geometry.

Another option I thought they might use is smoothing groups to specify curves? In this case the curved surface would already be tessellated, but the smoothing group would cause polygons to share vertex normals along their edges, resulting in smoother shading.

I''m not looking for enough information to duplicate what they do I''m just curious

Thanks.


--
Todd
http://www.3dcgi.com/

Share this post


Link to post
Share on other sites
MK42    127
Quake 3 uses biquadratic Bezier patches ... so in essence they generate a triangle grid from a parametric formula. The number of subdivision steps is determined by the curvature of the patch and the selected geometry detail (Low/High). They do run-time LOD by removing columns/rows of vertices in the grid.

Hope this helps a bit,

MK42

Share this post


Link to post
Share on other sites
Memir    129
You know, I was playing Q3A on my LAN with 3 computers. and on one of them, the graphics was messed up. - Many of the meshes, especially the arch-ways (obviously using the curved surfaces) were like flashing random colors. But the really neat thing about it was it revealed how they were performing their curved surfaces trick.
Basically, as you moved closer to the wall, the triangles were being modified, i.e extra triangles being added.

This seems the obvious thing to do, they probably have a system of calculating how many triangles to use to approximate a curved arch-way/pillar etc.

Something like:

segments = DETAIL_LEVEL * 1/distance_of_camera_from curved surface + K.

where:
DETAIL_LEVEL - is just a setting that the user sets. i.e if you have a crap computer+gfx card, then this would be a low value. as opposed to someone on a Geforce 2 etc.
1/distance... - as you approach the pilar/archway, more detail (hence more triangles), would need to be put into it. - If you''re a mile a way, then the archway can just be a triangle
K - well all equations need a const

(not saying, that it''s as simple as this, but I''d imagine the no. of triangles used to render the curved surface, would be determined by these factors.)

/Memir

Share this post


Link to post
Share on other sites