Curved Surfaces
If you've spent any time creating maps for Quake 3 Arena at all, you know that curves/patches can be used to create smooth curved surfaces. This feature can of course also be used to generate smooth rolling terrain, and GenSurf will take some of the drudgework out of editing those patches for you. Curved surfaces come at a price, however. Before committing yourself to using curved surfaces for terrain (and before having yourself committed :-)), take a look at the screenshots here and read up on a few of the problems you might expect. With all the problems outlined below, you may wonder why curved surface support was added to GenSurf in the first place. The short answer is that curved surfaces work exceptionally well for small surfaces, but present many problems if used in a large open area. But read on....

The screenshot below is of a 4096x4096 curved surface. Unless you're extremely picky the surface looks to be perfectly smooth. It has a fairly high price tag, though. Yes, that's a huge surface and yes, this is an unfair test. Shut up, I'm trying to make a point :-). Check out the r_speeds display with graphic details on the highest (best quality) setting. Well yeah, I know you can't actually read it, but you can see that the poly count is 5 digits. Ugh.

Yes, that's 13155 tris. Ouch. And this is
before adding any other architecture.


One of the nice things about curved surfaces is the level-of-detail (LOD) rendering used by Quake 3. At far distances, curves are rendered using fewer polygons (lower level-of-detail) so that the total number of polygons drawn is minimized. However, the game will never use a different LOD on different parts of the same curved surface (if it did you would almost certainly see visual errors). In addition, adjoining curved surfaces will always use the LOD of the surface closest to the viewpoint, again so that there will be no discontinuities at the curve boundaries. So if the patches making up your terrain surface all butt up against each other, you give up the LOD optimizations and you pay a heavy price in the polygon count.

However, if you use multiple patches for a terrain surface and separate those patches with a normal structural brush or brushes, then the game will use a coarser LOD for the distant patches, as in the following screenshot.

Better - 6130 tris. This is identical to the
previous map, but the terrain is produced
using 4 groups of patches separated
by "retaining wall" structural brushes.


Well that's still too high, you say. I tend to agree, which is why (at present) I don't suggest using curves for large terrain surfaces. Sure the end user can turn down his graphic details settings and the r_speeds will plummet, but it would be the height of cheesy map-making to suggest users of your map do that. What's really needed in my opinion is a new shader effect that specifies using a coarse LOD on specific surfaces, rather than using the game-wide setting. With that capability you could produce not-quite-but-pretty-darn-close to perfectly smooth, low-poly terrain surfaces and keep those cylindrical columns and arches in your map nice and round. Perhaps some day...

Back on subject... in my opinion curved surfaces are best used on small areas for terrain - say a courtyard area. For large open terrain I'd suggest using normal brushes, with which you can get much lower polygon counts. The surface will never be as smooth as you can achieve using curves (unless you go nuts with the grid size), but check out these screenshots and decide for yourself which is better.

32x32 grid, no decimation. 2161 tris.

64x64 grid, decimated 90%. 1413 tris.


Note that if we had Tim Wright's ArghRad Phong shading available, both of these surfaces would appear much smoother.... maybe you should let Tim know he needs to get with it.

Another warning concerning curved surfaces: Patches larger than about 512 units will not be lit properly. Whether this is a transient bug in the lighting phase of q3map or a permanent fundamental limitation I don't know. Currently GenSurf will produce multiple small patches in an attempt to get the maximum patch size below 512 units. However, depending on the settings you use this might not be possible (for example if you specify 4 grid cells with the extents in that direction greater than 1024 units).

Using multiple patches with the initial point release of Quake III Arena could result in two more problems. You may note ridgelines in your "curved" surface at the boundaries between patches and/or gaps between patches, even though the adjacent patches used the exact same control points along the border:

Note the gap between patches

Fortunately this problem has been solved in version 1.16j and later versions of Quake III... Hats off to id for solving this problem. If you experience problems similar to the screenshot shown above, ensure that you are running the most current version of Quake III.

BACK to GenSurf main page