Brushes are templates used in some 3D video game engines, such as the Quake engine, its derivatives the GoldSrc and Source game engines, or the Unreal Engine, to construct levels.[1] Brushes can be primitive shapes (such as cubes, spheres and cones), pre-defined shapes (such as staircases), or custom shapes (such as prisms and other polyhedra).[2][3] In order to describe these shapes mathematically, each brush is made up of planes that define its boundaries. A plane can be represented by an equation in 3D space, which looks like this:
This equation describes a single flat surface (or plane) in 3D space, where a, b, and c are coefficients that determine the orientation of the plane, and d is a constant that shifts the plane along its axis.
To construct a brush, the game engine uses multiple planes working together. For example, a cube can be defined by six planes, each restricting space within a certain region. Here’s how a set of three planes would be represented mathematically:
Each of these equations corresponds to a different plane that helps define the shape of the brush.
In some engines such as Unreal, brushes are categorized as either additive or subtractive. Additive brushes add volume to the level, forming walls, platforms, or other structures, while subtractive brushes carve out spaces within these volumes, like windows or doorways.[4]
During the map compilation process, brushes are turned into meshes that can be rendered by the game engine. Often brushes are restricted to convex shapes only, as this reduces the complexity of the binary space partitioning process. However, using CSG operations, complex rooms and objects can be created by adding, subtracting and intersecting brushes to and from one another.[5] Additionally, brushes can be used as liquids[6] or as an area trigger.[7]
History
editBrush-based techniques originated during the period of three-dimensional game development, being developed around the same time period as Quake. These games required 3D geometry for constructing more advanced true 3D environments different from previous raycasting approaches. During this time brushes became used with and closely associated with Binary Space Partitioning as this allowed for sustaining real-time performance on constrained computational hardware. Brushes offered a viable solution, enabling level designers to utilize elementary geometric primitives for the creation of intricate spatial structures.[8][9]
Modern use
editBrush-based modeling is extensively used in constructive solid geometry, a technique that builds complex surfaces by combining simpler ones using Boolean operations such as union, intersection, and difference.[10] In modern game engines, brushes are usually limited to only being used during the initial prototyping or "Block out" phase. This is due to the fact that they are less efficient when overused, slowing down performance due to their simple, non-optimized geometry.[11]
References
edit- ^ "Definition of Brush in the Valve Developer Community". Valve. Retrieved 2011-03-24.
- ^ Finney, Kenneth V. (2004). 3D Game Programming All in One (Course Technology PTR Game Development Series). Muska & Lipman/Premier-Trade. ISBN 1-59200-136-X.
- ^ Holmes, Shawn (2002). Focus on Mod Programming for Quake III Arena. Premier Press. ISBN 1-931841-56-X.
- ^ "Mastering the Basics of Unreal Engine 4: BSP Geometry". www.pluralsight.com. Retrieved 2024-10-03.
- ^ "UDN – Two – BspBrushesTutorial". Epic Games. Retrieved 2012-04-21.
- ^ BSP Headquarters - BSP Quake Tutorial #5
- ^ BSP Headquarters - BSP Quake Tutorial #6
- ^ Kushner, David S.; Kushner, David (2003). Masters of doom: how two guys created an empire and transformed pop culture (1st ed.). New York: Random House. ISBN 978-0-375-50524-9.
- ^ Kremers, Rudolf (2009). Level design: concept, theory, and practice. Wellesley, MA: A.K. Peters. ISBN 978-1-56881-338-7.
- ^ Hughes, John F. (2014). Computer graphics: principles and practice (3rd ed.). Upper Saddle River, New Jersey: Addison-Wesley. ISBN 978-0-321-39952-6.
- ^ "Mastering the Basics of Unreal Engine 4: BSP Geometry". www.pluralsight.com. Retrieved 2024-10-03.