Reshaping Solids

From Valve Developer Community
Revision as of 04:34, 24 May 2009 by DeathByNukes (talk | contribs) (added some info on invalid shapes)
Jump to: navigation, search

Once you've created a simple, textured solid, you can use Hammer's tools for refining your work. These tools include vertex manipulation, face splitting, clip planes and carving. Each of these tools lets you customize your solids by modifying the basic shapes you started with. You will find that you can achieve the same or similar effect using different tools; some are just faster and easier than others when it comes to making the precise change you are trying to make.

Vertex Manipulation

Vertex manipulation allows you to move individual vertices and edges of a solid, easily creating irregular shapes. This lets you make shapes that are impossible with plane clipping, and extremely difficult to do with carving. Vertex manipulation is also useful for modifying specific pieces of a group of objects, where resizing would interfere with other objects in the group.

Note.png Note: While Vertex Manipulation makes the creation of new complex shapes easy, it also make the creation of invalid shapes easy. Remember that concave shapes are not valid within Hammer, also you must make sure all of your faces are perfectly flat planes, if they're bent (perhaps by moving one vertex irrespective of the others) then you'll get a nice malformed solid error.

Vertices and Edges

A vertex (or plural, vertices) is a corner of a solid. Moving one vertex will not effect any other vertex, but it will change the position of any edges associated with it. An edge is a point between two vertices which, when moved, will change the position of its two associated vertices, as well as their associated edges (no other vertices are effected besides the first two).

Hammer vertexedit.jpg

To edit the vertices of an object:

  1. Select the object(s) you would like to use vertex manipulation on.
  2. Select the Vertex Tool from the Map Tools Toolbar. The selected solid will turn into a wireframe image with partial shading. Vertices will be marked as white dots, and edges as yellow dots.
  3. Click on the vertices/edges you want to move. They will be highlighted in red. Note that you can move both vertices and edges.
  4. You can either drag the selected vertices or edges with the mouse, or move them in the selected 2D view using the arrow keys.
Note.png Note: You can keep selecting the Vertex Tool, or press SHIFT+V, to cycle through the three vertex edit modes: vertices and edges (default), vertices only, and edges only.

Face Splitting

Face splitting allows you to add additional faces to a brush. This is a useful tool when you want to add complexity to an object in your level. Simply select two opposing edges (fig. 3) (Two opposing vertices on a flat plane work as well) and press Ctrl+F. This will turn the two edges into vertices, and place a new edge between them (fig.4).

Face splitting between opposing vertices can be extremely useful for fixing previously invalid solids with non-flat faces. A quadrilateral can be split into two triangles this way, but care must be taken that the resulting brush is not concave - the two new faces must not 'dip' in the middle.

Hammer facesplitting.jpg

While no longer as important since Source's introduction of displacements, vertex manipulation involving a great deal of face splitting used to be a very powerful, efficient way of building realistic terrain for the original Half-Life engine.

Vertex Scaling

Vertex scaling allows you to select a number of vertices and change their scale in relation to each other.

To scale a set a vertices on an object:

  1. Select the object(s) you would like to scale vertices on.
  2. Select the Vertex Tool from the Map Tools Toolbar. The selected solid will turn into a wireframe image with partial shading. Vertices will be marked as white dots, and edges as yellow dots.
  3. Click on the vertices/edges you want to scale. They will be highlighted in red.
  4. Press ALT+E to enter to bring up the Scale dialog box.
  5. Alter the center of the scale operation by clicking and dragging the white circle in the center of the vertex selection.
  6. Change the Scale value to alter the selected points. You can press the up or down arrows to move in 0.1 increments, or enter a scale value directly in the text area. The scale changes will automatically be reflected on the selected object.
  7. Press the ENTER or ESC key when you are done scaling to close the Scale dialog box.

Hammer vertexscaling.jpg

Clip Planes

Clip planes let you make a precise cut in a solid, dividing it into two pieces. You then have the option of keeping one or both of the resulting two solids. You may find using Clip Planes quicker and more efficient than carving or vertex manipulation.

Hammer clipplanes.jpg

  1. Select the object to be clipped. (fig. 1)
  2. Select the Clip Plane button on the Map Tools toolbar.
    Note.png Note: You can cycle through the clip modes by clicking on the clip plane button, or by pressing Shift-X (fig.2, 3, 4). You can move both points of the clip line by holding CTRL and dragging one point of it.
  3. Drag a line across the selected object. (fig. 2) This is the clip line. The part of the object to be kept will be highlighted in thick white lines.
  4. When you are satisfied with the resulting object, press Enter to perform the clip. (fig. 5, 6)

Hammer has a feature to display the size of the solid area of the clipped brush. This is useful if you're trying to clip a brush to an exact size.

Hammer clipplanes2.jpg

To toggle this on and off, have a 2D view in focus and press the "o" (lowercase) hotkey.


In Hammer, any solid can be used to carve a volume out of other solids. For example, you can place a solid within the room's wall and tell Hammer to subtract the solid from the wall -- effectively punching a hole right through the wall! This feature is not limited to using cubic shapes as a carving tool: any solid -- cylinders, cubes and wedges -- can be used to carve other solids.

To carve objects from surrounding solids:

  1. In this step, you have the object you want to carve into (in green), and the object you will be carving with (in blue). The blue object should be selected.
  2. Position the carving object so that it is where you want the hole to be.
  3. Select Carve from the Tools Menu. You can also press CTRL+SHIFT+C or the Carve button on the Map Operations toolbar.
  4. Either delete the object you used to make the carve, or use it to fill the hole. (For example, use the piece carved out of a doorway as the door.)
Carving with a simple block.

In the picture above, you can see that the green object is now broken into four separate objects. This is because the game engine cannot handle concave objects, and Hammer has broken it into convex pieces.

Warning.png Warning: The Carve operation will carve all objects that touch the selected carving object. Make sure that only objects that you wish to be affected touch the carving object.
Warning.png Warning: The Carve operation will not work if (modified) objects with which you carve are too "complicated". i.e. if you have a vertex modified cylinder with many faces and you want to carve a block it won't do anything.

"Do not carve"


Carve is not a very smart tool, and it has become a standard saying that people should never try to carve with anything except rectangular blocks that are aligned to the grid. For example, trying to carve a cylindrical hole in a wall will horribly mangle the wall (see picture). As to optimization, there are three problems:

  • This can sometimes confuse BSP, although not always.
  • When the brushes are broken into triangles for drawing, there will be many more than are needed.
  • If this wall is a world brush and it touches other world brushes, those brushes will also be broken into triangles poorly.

Complicated Shapes

A brush with severe decimal-loss issues.

Some brushes may appear to be valid yet will change after saving and reloading the map or running the clip plane tool. The reason is because the map file describes solids as a set of planes rather than as a set of vertices. A plane, by definition, is a flat surface extending to infinity in all directions. When Hammer reads the map file, it finds the places where three planes intersect and creates vertices at those locations. (This is why concave brushes are impossible.) The issue is that the numbers used to describe planes and vertices have a limited number of decimal points. Although the vertices may lie perfectly on the grid when a brush is created, the resulting planes may have many decimal places. If the decimal limit is reached, the planes will be slightly different. For complicated shapes such as spheres, this can generate an invalid brush very easily. Shapes with such issues may develop visible seams along the edges where it is possible to see through the brush.