Tutorial - Brush cylinders - written by Taiyo Rawle

This tutorial describes a simple procedure to manually create a 256*256 cylindrical brush with 24 faces using two-point clipping and brush merging. In GtkRadiant 1.5 (and possibly other versions) there is such thing as a polygon tool. However, using the polygon tool to create a 24-sided cylinder will yeild a malformed brush that cannot be compiled or even copied and pasted. The finished manual cylinder will remain workable with all vertices on an 8x8 grid.

Tutorial image
Step 1

Set the grid size to 8 and create a 128*128 brush. This will be clipped into one quater of the cylinder. Use the clipper (x) to cut one corner from the brush, eight grid squares into each face.

Tutorial image Tutorial image Tutorial image
Step 2

Now repeat with the two new corners, clipping four grid squares into each face.

Tutorial image Tutorial image
Step 3

Repeat again. Notice that you are now clipping two grid squares into each face. This is a general pattern for creating approximated circles by face division.

Tutorial image Tutorial image Tutorial image
Step 4

You now have a 90° segment of a cylinder. Copy and paste the brush and flip in the X-axis to make a half-cylinder. Then copy and paste both brushes and flip in the Y-axis to make the cylinder. Finally select all four brushes and merge them into one.

Tutorial image Tutorial image Tutorial image

You now have an approximately cylindrical brush. Except in a few special cases complex brushes like this should be detail brushes to avoid creating an excessive number of portal volumes when compiled. A shader with the q3map_shadeangle set to an angle equal to or greater than the greatest angle between any two adjacent faces can be used to make the cylinder appear smooth (like a patch cylinder) in-game.

Tutorial image

As a side-note, the brush is more cylindrical than a patch cylinder. The below screenshots show the brush (left) and a patch cylinder of the same size, each copied and rotated by 45° then overlayed onto themselves. The patch cylinder is clearly lobed due to the math used to create them. This is particularly noticable when large patch cylinders are used in a func_rotating entity. Brush cylinders may yeild better results in these cases. Another reason to use a brush instead of a patch cylinder is to avoid patch clipping issues.

Tutorial image

Finally, patch cylinders can provide greater overall performance due to automatic LOD adjustment. It is important to choose an appropriate number of faces when using brush cylinders to avoid performance issues in complex areas. Some example diameter/face count combinations are shown below.

Tutorial image