Complex Brush Creation
Introduction
Creating complex brushwork without resorting to using many brushes can be tedious. Hammer allows you to have complex brushes without them being invalid nor having to create multiple useless pieces and unnecessarily increase the brushsides value.
Here are a few examples of complex brush creation.
Creating A Sphere Type Corner
Let's go ahead and create a brush with a sphere type corner. Create a normal brush using the block tool.
Using the clipping tool, create a rounded edge (as if you were creating a cylinder).
Proceed to do the same thing on the adjacent side.
You want to make sure that all vertexes are on grid. This is very important, else the editor will act all funky like later on.
Clip the corner of the brush in a 45-degree.
From here, you want to enter Vertex Manipulation mode by hitting ⇧ Shift+V.
Pull the appropriate vertexes until you get the following shape.
Select both middle vertexes and hit Ctrl+F. This will split the face into 2 and eliminate the invalid solid structure error.
Select the middle and bottom vertexes and hit Ctrl+F. Then, select the bottom and top left and hit Ctrl+F. Finally, select the bottom and top right and hit Ctrl+F.
Select the bottom vertex and move it so that each line shown by the arrows are straight.
Finally, select the middle vertex and merge it with the one to the left or the right.
Creating A 45-Degree Cylinder Corner
The process is very similar to creating a sphere like corner. Create a block and clip the sides to have a cylinder type edge. The number of faces doesn't matter if it's higher than 2.
Cut the brush on a 45-degree. Pull the vertexes until they are straight. Make sure every vertex is aligned to the grid.
Select the vertexes from top to bottom and hit Ctrl+F.
Creating A Funnel Brush
Create a cylinder and enter vertex mode by hitting ⇧ Shift+V.
Select every yellow dots in the middle and hit Ctrl+F. Then select every white dot in the middle and hit Ctrl+F as well.
Select the bottom vertexes and hit Alt+E.
Change the value to your desired value and once satisfied with the new look, exit vertex mode by selecting the selection tool (⇧ Shift+S).
Creating A 90-Degree Tunnel Curve
This example will use two tunnels created using the arch primitive. To demonstrate the effectiveness of this technique, a couple of brushes that will act as detail has been added to the tunnels.
Finding the correct rotation size
In order to properly connect those two arches, we need to find the proper size. Make a copy of a tube (in this example, the top one) and place it accordingly so that the finished product connects perfectly with the existing arches.
Select the top and bottom tubes. Hit Ctrl+M to open the transform dialog box. Rotate them by 7.5 degrees on the Z axis.
Split the brushes in the exact center of the boundary box, then open the transform dialog box again and rotate 15 degrees the other way. Split the brushes in the exact center of the boundary box once again. Finally, rotate everything back into position by opening the transform dialog box and inputting 7.5 degrees.
Remove the left and right sides of each brush.
Now comes the time to paste rotated copies of these. Unfortunately, we cannot use paste special for this as pasted copies will not rotate around the center axis. This is why "Arrow keys nudge selected object/vertex" needs to be enabled in the options. Select both copies, hit ⇧ Shift+→ to create a copy, then release the ⇧ Shift key and press the ← key to put it back in the same spot. Hit Ctrl+M and input a 15 degree rotation on the Z axis. You will notice that the copy will connect perfectly vertex wise with the first set of brushes.
Then, using the newly pasted copy, copy and keep pasting using a 15-degree rotation until you get a full circle. Once you have your entire circle done, select everything, open the transform dialog box and rotate the entire brushwork by 7.5 degrees on the Z axis.
Slightly resize the entire brushwork using the corner handles until it's perfectly on grid.
The last thing you need to do is tie this entire group of brushes to a func_detail.