“Boolean
Operations and Geometry Modelling”
By Aavenr
[HTML
Version]
Here’s a collection of 3 particular issues I felt were important to know
about and none of which was discussed on Remedy’s official "Boolean
Operations" tutorial.
Room
Grouping
A good recommendation when creating modelling a level’s geometry is to
make all the solid room, or ‘top hierarchy level’, geometry such as floors,
walls, windows and general architecture like that through boolean operations.
Then, most of the furniture or any complex geometry used, even in the walls
(that may seem to be the room geometry), is best to be left as ‘furniture’. For
example, the Ragnarock level had those gothic arcs, which almost all were
separate of the actual room geometry. Or another example, in the Asgard
building, where there were these corridors and dozens of pillars and pilasters,
none of which were booleaned to the room ‘box’.
When adding ‘furniture’ as well as any other object in a room, these
‘decorative’ meshes shouldn’t be booleaned to the main room. It is recommended
instead to group all these ‘minor structures’ to the room, an action which will
save a bunch of polys all by itself, and dummy-texturing all the hidden polys
that would have been destroyed when booleaning the meshes to the room, which
will save even more polys from being rendered. In addition to reducing the
amount of polygons in most situations, which improves the framerate and reduces
file sizes, this approach allows you way more flexibility when trying to edit
and make further changes to the level. If you really feel necessary to boolean some structures, do it at the very end of the level
creating process, when you are absolutely positive no more changes are needed.
You can see what I am talking about on picture 1.
Leftmost is the desired look: a room with four separate columns which
apperently has 34 triangles. In the middle, triangulation has been superimposed
to demonstrate this. The rightmost is the same with columns booleaned resuling
on visually much more triangles and a 90 triangles count.
Booleaning
Complex Structures
Crafting complex structures by means of booleaning can be a cruel
excercize on frustration for many level designers. Remedy deveopers had to fought Boolean trouble many times during the development of
MP and they can testify that unfortunately, more ambitious the mapper gets, the
more he is going to have to face these problems. Nobody denies the usefulness
of these operations but itsn’t a secret how unreliable they can be under
certain circumstances. Due to the imperfect nature in which they have used, it
is crucial that level designers use every trick in the arsenal to fight the
battle.
Isolated Construction
When working with booleans ops you need to be careful of the detailed,
polygon intensive models. Through experience I have learned that is it usually
better to create complex structures in another empty file and then copy/paste
them (or insert their .lvl file) to the main file. When doing complex booleans
you expose yourself to countless different errors and crashes and if you insist
on doing that inside your main level you are just asking for trouble. In short
what I am trying to say here is that you should isolate those potentially
problematic structures and deal with them one on one rather than risking some
stupid error on them keep you from further work on your main level.
It is also worth mentioning that at the early and intermediate mdelling
stages, you are probably off better joining the different parts that make up a
complex structure (a tank for instance) rather than booleaning them because joining,
unlike other boolean ops, is a pretty reversible process in case you want to
edit something later. At the end, when you are completely certain that
everything is the way you wanted to, you can separate the meshes (go into F4
mode, select the mesh and press p) and then boolean
them little by little into one big mesh.
Dealing with Errors
Firstly, read pay careful attention to the bit about staying away from
trouble mentioned on Remedy’s official "Boolean Operations"
tutorial. There are many occassions where joining two meshes give you the same
results as unioning them, only with far less possibility of any error appearing
since no geometry is actually deleted.
If you do get an error and the crash or produce ‘holes’ in the geometry,
don’t waste any more time on that mesh and start a new one from scratch. Once
you get an error the only way is down as each boolean
can only add to the existing error. If you are prompted with a ‘floating faces’
error, you are better off leting the editor kill them, just be wary of any gaps
in the geometry that may arise.
A good way to recognize if you are going on the right path is by
verifying you don’t have any non-planar polygons. This is done by entering the
F4, hovering over a certain polygon and taking a look at a strange figure in
the lower right corner of the screen: "dMax= 0.000000". The value on
this variable tells you how much the current polygon differs from a fully flat
flane (ie. planar). In order to Booleans work correctly, the polygons must be
completely planar and if this figure is anything else than 0.000000 in any of
the polys in either of your boolean operands, your
next boolean is likely to fail. There usually is no workaround if you end up
with non-planar faces, you'll just have to start over and try to make the
booleans differently.
Last but not least, remember following the advice Remedy’s article and
fix (use a larger figure than 0.0005 such as 0.0025) and save/hold before and
after any boolean operation. Use absolute alignment as
well whenever possible.
A slight comfort to all mapers out there may be that after a while,
somehow, they will start to know (subliminally or knowingly) how to avoid
problematic cases and, if good, be able to produce something like the chopper
in MP (Owl’s work) or some of the cars (mostly by Marvel) without much of a
trouble.
Polygon
Editing Problems
Have you ever gone into MaxED’s polygon editing mode (F4) and found
yourself unable to skew/extract a polygon because the polygon simply refuses to
respond? This can get to be pretty annoying sometimes and needless to say, it
detracts from one of MaxED’s biggest advantages over other editors, which is
the ability to constantly modify meshes after they are extracted or built.
One effective way to deal with this issue is to force the editor to do a
retriagulation of the geometry by fixing it (press ‘f’ with the mesh selected in
F5 mode). Due to the complexity of the processes involved after booleaned some
meshes won’t be able to be modified in F4 mode but by fixing them, you can get
away with it most of the time. Fixing is also a good way from getting rid of
unnecessary and redundant polygons.
Another Nice technique to modify a mesh is simply to scale them (press
‘c’ in F5 mode with the desired mesh selected). MaxED will give you the option
of doing it on several dimensions at once or just the ones you choose. This
tool doesn’t take into account the world axis so you will have to active local
axis (‘w’ on F5 mode) and hover over the mesh to check out what dimentions you
want scaled.
Written by Aavenr on
1/03. Many thanks to Remedy’s level designer, Owl, who I admit to have taken
the liberty to quote on some parts of this article and who helped me a great
deal to understand the very issues covered here.If you find some
errors/inaccuracies that you want to report, or have some comments/questions
about this article please email me at: aavenr@3dactionplanet.com