Brush
m |
Twinchenzo (Talk | contribs) |
||
Line 2: | Line 2: | ||
[[File:Radiant brush.jpg|320px|right|thumb|Brush of the crypt entrance in NetRadiant]] | [[File:Radiant brush.jpg|320px|right|thumb|Brush of the crypt entrance in NetRadiant]] | ||
− | + | A brush is a basic building block in a level. It is used primarily to define the physical structure of the area being designed. The term "brush" originally was used by Radiant to refer to anything that is not an entity, and therefore also encompasses [[patch mesh|patch meshes]] (which is different from CSG brush in both construction and texturing). | |
− | A brush can be made to represent anything from solid matter (metal, dirt, wood, etc.) to liquids (lava, water, etc) depending on the textures and materials applied to them. | + | A brush can be made to represent anything from solid matter (metal, dirt, wood, etc.) to liquids (lava, water, etc.) depending on the textures and materials applied to them. |
− | Brush is constructive solid geometry (CSG). It uses a form made of | + | Brush is constructive solid geometry (CSG). It uses a form made of its sides and a volume which is anyting inside. CSG brushes are presented in Unreal Engine (1/2/3), Torgue engine, Cryengine 3. Hammer (native editor for Source engine games) is using it too. CSG is popular because a modeler can use a set of relatively simple objects to create very complicated geometry. User can revise their complex geometry by changing the position of objects or by changing brush attributes. |
=== Shape === | === Shape === | ||
Line 12: | Line 12: | ||
Properly constructed brush follows this rules: | Properly constructed brush follows this rules: | ||
− | * | + | * Has at least 3 sides |
* Each side is plane forming polyhedron (maximum 16-24 corners) | * Each side is plane forming polyhedron (maximum 16-24 corners) | ||
− | * If | + | * If sliced by the plane of any of its sides, the whole brush will be on one side of the plane |
− | {{Important|If modifying brush shape, all | + | {{Important|If modifying brush shape, all these rules must be followed. Radiant have tools to move/transform brush vertexes, sides and planes. If you apply transformation that will lead to CSG rules breakage, resulting brush will become invalid. For most cases Radiant does not allow you to do that.}} |
[[File:Brush rules.jpg|600px]] | [[File:Brush rules.jpg|600px]] | ||
Line 22: | Line 22: | ||
=== Texturing === | === Texturing === | ||
− | Since brush internal structure | + | Since brush internal structure doesn't have vertices, it is using special projection technique to get texture mapping: |
− | # Texture get projected from axis planes (XY, XZ, YZ) to | + | # Texture get projected from axis planes (XY, XZ, YZ) to the sides of the brush, optimal projection plane is selected by brush side orientation. |
# Texture is rotated by plane's ''rotate'' parameter. | # Texture is rotated by plane's ''rotate'' parameter. | ||
# Texture position is scaled by plane's ''stretch'' (x and y). | # Texture position is scaled by plane's ''stretch'' (x and y). | ||
# Texture position is shifted by plane's ''offset'' (x and y). | # Texture position is shifted by plane's ''offset'' (x and y). | ||
− | # | + | # When using texture dimensions, positions are converted to texture coordinates. |
This leads to a number of limitations applied for brushes: | This leads to a number of limitations applied for brushes: | ||
* Rotating texture is tricky as no rotation origin is specified, this leads to texture breakage when brush is rotated to small angles (90 degrees rotation work fine) | * Rotating texture is tricky as no rotation origin is specified, this leads to texture breakage when brush is rotated to small angles (90 degrees rotation work fine) | ||
− | * Texturing may | + | * Texturing may brake if texture resolution is changed (there is a material trick to bypass that) |
Along with limitations, there is a number of benefits: | Along with limitations, there is a number of benefits: | ||
− | * No texture | + | * No texture coordinates = no UVW unwrap work. |
* A little easier to control [[texture detail]]. | * A little easier to control [[texture detail]]. | ||
* No texture UV breakage when model is sliced/expanded. | * No texture UV breakage when model is sliced/expanded. |
Revision as of 12:51, 10 October 2012
A brush is a basic building block in a level. It is used primarily to define the physical structure of the area being designed. The term "brush" originally was used by Radiant to refer to anything that is not an entity, and therefore also encompasses patch meshes (which is different from CSG brush in both construction and texturing).
A brush can be made to represent anything from solid matter (metal, dirt, wood, etc.) to liquids (lava, water, etc.) depending on the textures and materials applied to them.
Brush is constructive solid geometry (CSG). It uses a form made of its sides and a volume which is anyting inside. CSG brushes are presented in Unreal Engine (1/2/3), Torgue engine, Cryengine 3. Hammer (native editor for Source engine games) is using it too. CSG is popular because a modeler can use a set of relatively simple objects to create very complicated geometry. User can revise their complex geometry by changing the position of objects or by changing brush attributes.
Shape
Properly constructed brush follows this rules:
- Has at least 3 sides
- Each side is plane forming polyhedron (maximum 16-24 corners)
- If sliced by the plane of any of its sides, the whole brush will be on one side of the plane
Texturing
Since brush internal structure doesn't have vertices, it is using special projection technique to get texture mapping:
- Texture get projected from axis planes (XY, XZ, YZ) to the sides of the brush, optimal projection plane is selected by brush side orientation.
- Texture is rotated by plane's rotate parameter.
- Texture position is scaled by plane's stretch (x and y).
- Texture position is shifted by plane's offset (x and y).
- When using texture dimensions, positions are converted to texture coordinates.
This leads to a number of limitations applied for brushes:
- Rotating texture is tricky as no rotation origin is specified, this leads to texture breakage when brush is rotated to small angles (90 degrees rotation work fine)
- Texturing may brake if texture resolution is changed (there is a material trick to bypass that)
Along with limitations, there is a number of benefits:
- No texture coordinates = no UVW unwrap work.
- A little easier to control texture detail.
- No texture UV breakage when model is sliced/expanded.
- Can scale model with keeping original texture detail.
- Can modify brush in various ways with no texture breakage (make wall longer for example).
Volume
Brush contents
Physics-related contents of the brush. Could be one of the followed:
- Solid
- Non-solid
- Water
- Slime
- Lava
- Sky
Brush contents are defined from the materials brush have on it's sides. Usually all brush sides must have same contents (mixed contents will give a compiler warning and could lead to bugged behavior).
VIS transparency
This is not real transparency but any brush that does not provide structure/seal to a room, and merely is there to detail the room.
Detail brushes (Radiant feature) and bmodels are always 'transparent'.
Also if brush have sides which is marked detailed or transparent, it will be forced transparent.
Usage
Brushes are essential thing to make geometry that requires a volume to function properly (water, triggers), level hull structure (the geometry that forms VIS portal tree) and grude procedural geometry which is used to connect rooms together. It can also be used to create semi-complex geometry on detail objects. For quite complex and small objects, patch meshes and triangle models are better and more easier to make.
Examples of usage:
Room floors | Good choice | Most of room floors are part of world hull. It is useful to edit them inside radiant. For physics floors have priority because gravity always make object to fall, so high mathematical precision of brushes will help with making physics more stable. |
Walls: | Good choice | Description is pretty same as for the floor. Walls are part of map hull and when working with map, you are ofter reconfiguring your walls. |
Statue: | Not a good choice | Since complex models are broken into many brushes, it is hard to control texturing on them. Also texture projection is only capable of making simple UV. So you statue withg be either crude or will take insane abount of time to build with brushes. |
Chair: | Not a good choice | Actually its pretty same as for statue. Chair is too complex for brushes, and also it's pretty stock at its form. So its easier to make it with misc_gamemodel. |
Terrain: | may be good choice | Small chunks of terrain is good to make with brushes, as they can be reconfigured in editor and dont need a works with exporting/importing as for models. Brushes also part of the .map file, so it dont generates any external files. Vertex alpha should be handled by colormod brushes. The big landscapes is not good to make with brushes, because big terrain takes 5000+ brushes and per-brush works is quite uneffective for it. |