People sometimes mistake creating geometry with creating levels.
Both have very different needs and uses however!
When designing or prototyping levels you need to iterate often and quickly
The last thing you want is waste time working at the triangle level
when you're still figuring things out!
CSG allows you to focus on the design of the level
and not have to worry about the details until you choose to
You'd be surprised how easy you can create levels using CSG!
Realtime CSG allows you to drag parts of your level around without
ever having to worry about triangles and vertices
Since CSG works with solid primitives, you never have to
worry about gaps in your geometry either and your
physics meshes will be created automatically
Just drag in that prefabed door that you created,
including the hole in the wall!
Don't like the placement of that door? Just move it in
one motion and the hole will move with it!
Changed your mind? Just press delete, done!
With CSG you can keep tweaking safely until the very end of your project
With realtime CSG you can create your levels by
combining brushes (simple primitives you can edit) that are either additive, subtractive or intersecting.
Conceptually, the final mesh is created by Realtime-CSG by going through the hierarchy from top to bottom, adding, subtracting or intersecting brushes with each other.
All brushes are part of a model.
All the brushes belong to a model, which generates the final mesh that ends up in your game.
All the brushes underneath it in the hierarchy will belong to this model, unless there's another model within the model.
The settings on the model component allow you to define how this mesh will be behave in your game.
If you prefer to do your finishing touches in your favorite DCC package you can export your CSG model to an FBX file. Your in scene CSG model will automatically be swapped with your exported mesh so that when you change the FBX, it'll be reflected in the scene.
Don't worry, you will always have the option to revert back to the original CSG model.
It's also possible convert your model to an Unity mesh directly instead.
The Operation component allows you to group brushes together and do CSG operations on more complicated shapes.
You can group selected brushes underneath an operation by pressing Cmd/Ctrl-G.
The operation component lets you define sub-shapes.
In this case a cylinder minus another cylinder.
These sub-shapes can then be added, removed or intersected with other parts of the model.
Pass-through behaves as if there is no operation component.
If you want to group multiple brushes in one single object you can put them under an operation and check "select on child" in it's options.
Now every time you select one of it's brushes you'll select the whole operation.
If you need to select a brush on a position where multiple brushes overlap you can simply click multiple times to get the brush you want.
With realtime-CSG you can easily make prefabs that automatically update the scene when modified.
When you drag & drop a prefab and drag it into the scene the prefab will automatically be placed on and rotate with the underlying geometry.
Simply hold V and create an outline by clicking in the scene. Release V and drag the center to extrude your 2D shape into a 3D brush.
If you draw your outline on top of other brushes the newly generated shape will match the materials from that underlying brush.
Double click on edges and vertices to toggle it between being a straight line and a curved line.
Drag the handles around to control the shape of the curve
If you hold C instead, you can easily create cylinders.
You can adjust all kinds of parameters in the helper menu that shows up while creating the cylinder. This allows you to set the radius, height of the cylinder box manually
If you hold B, you can draw boxes.
You can adjust all kinds of parameters in the helper menu that shows up while creating the box. This allows you to set the width,height and depth of the box manually.
You can create all the shapes on any surface.
If you drag your shape into an existing surface it will automatically turn it into a subtractive brush for you.
Creating doors and windows has never been easier.
When you left click your mouse on a brush and then hold your mouse button while dragging, you can move your selected brushes around on the grid.
If you hold D and then drag your brush, you will drag a copy of your brush instead.
The grid visually shows you where your brushes will snap when you move them.
If the parent of the brush you're moving is rotated, the grid will also be rotated when Unity is in local mode.
When in Edit-Mode you can easily move the vertices of your brush in any position you want them to be.
You can delete selected vertices by pressing the Delete key on your keyboard.
You can also select multiple vertices or edges on multiple brushes and drag them together.
By dragging the green points you can move any surface where you want them to be.
If you ALT-click on a surface dot instead you can extrude the polygon.
If you drag your surfaces while pressing shift it'll move into the direction it's facing.
If the unity rotation tool is selected and you are in mesh mode, you can rotate the current edges/vertices and polygons.
If the unity scale tool is selected and you are in mesh mode, you can scale the current edges/vertices and polygons.
While in mesh mode, if you drag a vertex or edge while holding shift you will chamfer all selected vertices/edges.
In clip-mode you can simply drag along a surface of a brush and all the selected brushes will be cut along the plane that is formed there.
If you select multiple brushes, all of these brushes will be clipped by the same plane.
In the little helper menu in the bottom right corner of your view you can decide which side(s) of the plane needs to stick around and which side needs to be removed.
In both object-mode and mesh-mode, when you use select the unity rotate tool , you can rotate your brush by dragging the edge of the brush into a circle.
In object-mode you can also scale your brushes by moving the sides of the bounding box around your brushes.
Scale into a negative size allows you to mirror your selection
Just select the brushes you want to work with, and you can scale/rotate/move etc. them together.
Just drag and drop the materials on the brush sides you want them to be on.
If you selected multiple surfaces the material will be applied to all of them.
In surface-mode, after you select a surface, you can press G onto another surface to copy your material to another surface.
If you hold G and drag over multiple surfaces it'll make the texture coordinates flow over those surfaces. This even works when surfaces are not connected!
In surface-mode you can select your surfaces by just dragging over them while holding control, shift or alt to remove/add surfaces from/to the selection.
If Unity is in rotate mode
You can press your mouse where you want to rotate your texture coordinates around, pull and just rotate around it.
If Unity is in move mode
You can press your mouse and just drag your texture over the surface of your brush
Note that the texture is also snapped to the grid if snapping is on and this may make it look like it's moving in a different direction, even though it's not.
If you want to smooth between multiple surfaces, just select them and press smooth in the surface-mode helper menu.
Do you want them to be facetted instead? No problem, just press the un-smooth button.
Sometimes you do not want certain surfaces to end up in your runtime, fortunately you can simply select and discard them.