|
This
article, based on my experience working on multiple FPS mods and
commercial products and my current work on Unreal Engine 3 titles,
explains how to speed up production by creating modular art assets for
building fast, clean, and easy large 3D environments, talking from a
level design perspective.
Most
artists know how to make art look good, while staying within limits of
texture size and polygon count but it is also important to make it easy
to use, modular, and seamless. The key to achieve this, and empower the
level designers to make the best game possible, is through use of the
grid and pivot points.
Working with Grids
Every level editor has some kind of grid system. Some game engines use a grid system with meter units (for example Far Cry or Max Payne).
The way the meter grid system works is fairly simple: the size can be
set to straight values like 1, 5, 10, 20, or 50 meters and every 10th
grid line is highlighted. The player size is about 1.80 meters tall.
This makes it easy to compare objects in relation to their real-life
counterparts.
The other grid system is the unit grid system, like in Id Software's Doom series and Epic Games' Unreal
series. Here the player is about 96 units tall, which means 1 meter is
about 53 units. This system is a little bit confusing at first, but
once you get into it, it's very easy to use. The grid spacing here is
set to the power of 2, like texture resolutions for games. To make it
easier for the eye, every 8th line is highlighted.
The
unit system is the much more common system, and I prefer it to the
meter system. For the purpose of this article, I will explain
everything using the unit system, but all this can also be used with
the meter grid or any other grid system.
Seamless Worlds with Modular Models
The
idea of modular models for 3D environments is to create fast
environments with small tiling models and maximum flexibility. Before
you start modelling, be sure that your grid for the 3D package you use
is exactly the same as the grid of the engine you make the model for.
Aligning with Gridlines
To
make the model as easy to use as possible, always align it with the
grid lines. To make it exact use the “grid snap” function in your 3D
package.
|
|
|
 |
 |
 |
The red model is not aligned to any gridline. The green model is how the model should be aligned with the gridlines.
|
|
|
|
 |
 |
 |
Here,
we try to make 3 wall segments that are not aligned to the gridlines
into a long seamless wall. But there's a problem - we get small gaps
between the models or overlapping faces. This usually ends up in a
Z-buffer fight that results in a flickering texture.
|
Measurements to the Power of 2
Another
attribute of easy-to-use models is to fit the model measurements to a
power of 2. This means when you model a wall segment, don't make it 248
units wide and 240 units high. The best matching value here would be
256 units, which is 2 to the power of 8. So the perfect solution here
would be to make the wall segment 256 wide and 256 high.
One
advantage of this is that a level designer can easily plan the usage of
the models. Because of the highlighted grid lines, a level designer can
see just with a quick look how many wall segments he will need for a
wall accompanying a 1024 units long floor. This gives him the ability
to build other parts of the environment without having to worry about
the size of the wall.
Sometimes,
especially when you try to model for real-life environments, it is
almost impossible to get the right proportions of a model with
measurements to a power of 2. In this case, you have to add the next
smaller power of 2. For example, if the proportions of your wall
segment doesn't fit into a span of 256 units, which is 2 to the power
of 8, then you can add 128 units which is 2 to the power of 7. You can
now fit your model to a width of 384 units. If it still doesn't fit,
you can add or subtract the next smaller power of 2. Here it would be 2
to the power of 6, and you can the fit the model to a width of 448
units or 320 units. You can repeat this step as often as possible but
the more you repeat it, the more you go away from an easy-to-use model.
|
|
|
 |
 |
 |
When the power of 2 won't work, add or subtract the next closest power of 2.
|
Models that Match other Models
When
you start to model a set of models that will be used together, try to
make sure their measurements match. For example, when you have a 256
unit-wide wall segment, and you want to model a ceiling and a floor
segment, then also make them 256 units wide.
|
|
|
 |
 |
 |
The
red floor segment does not match with the wall segment, which makes it
very hard to make a room with them. On the other hand, the green floor
segment matches in both directions with the measurement of the wall
segment, and a room can be made very quickly with these models.
|
Pivot Placement
The
pivot of a model is the origin for every translation you will do inside
a game engine editor. A poorly-placed pivot point can slow down the
production time of a 3D environment, and makes it hard to place the
mesh and align it to other geometry.
The
aim here is to place the pivot in the most useful position for the
level designer, so he can place the model quickly and easily in the 3D
space. There are 5 steps for pivot placement that can be used with
every model, and will result in a perfect pivot position.
The 5 steps to a perfect pivot
Every successive step has more weight than the previous step.
1. The focal point
The
first step is to place the pivot in the focal point of the model. While
some models already have a good pivot, for most models, you have to
refine the pivot position to get an easy-to-use model.
|
|
|
 |
 |
 |
Models with a random shape, that are floating in the air, have a good pivot.
|
2. Symmetry
The
next step is checking your mesh for symmetry lines. As soon as a mesh
has one or more symmetry lines, the pivot should be on this line or in
the point of intersection. The intersection point of all three symmetry
lines is also the focal point
|
|
|
 |
 |
 |
This steel support currently has a good pivot, but we will further improve the position in a later step.
|
3. Alignment
The
third step is to think about how the model will align with the
environment. There are three basic types of alignment: aligned to the
ground, to the ceiling and to the wall. The aim is to place the pivot
where the model just touches the ground, ceiling or wall. When we move
the pivot of a model to the very bottom of the model, and we place the
model on the floor, it will stand exactly on the floor without clipping
into the floor or floating a little bit above the floor.
|
|
|
 |
 |
 |
This
crate is symmetrical in every direction, but it will stand on the
ground. So we ignore the green symmetry lines and move the pivot down
where it hits the ground. One advantage here is if you decide later in
development that the scale of this crate is wrong, you can change it
and it will still align with the ground.
|
|
|
|
 |
 |
 |
Combinations
are also possible. This border will be aligned with the ceiling and the
wall. So we move the pivot up to the ceiling and back to the wall. The
pivot position on this model will be improved in the next step.
|
4. Tiling models
As
soon as a model is made as a tiling segment, the pivot has to be moved
to a point where it matches with the next model. The advantage of this
pivot position is that, when you want to scale the mesh inside the
editor, one side of the mesh is always fixed. So it is possible to
place it aligning with the mesh on one side and then change the scale
value until it aligns properly with the other side.
|
|
|
 |
 |
 |
The
border from step 3 is a short segment that can be placed in a row to
get a longer, seamless border. This means we ignore the green symmetry
line and place it at one end of the tiling direction.
|
|
|
|
 |
 |
 |
We
will do the same with the steel support from step 2. Now it is very
easy to build a long seamless steel support with 3 separate models by
moving the pivot to the end of the previous model.
|
5. Rotation point
Some
modular models are created as a part of a circle, and need to be
rotated in the editor to make bigger curved geometry. In this case, the
pivot must be in the circle center of the model.
On
some models this can result in a pivot that is very far away from the
mesh. This is usually a bad pivot position, but in this case it is much
more easy to use as a pivot that is in the focal point of the mesh.
|
|
|
 |
 |
 |
This
is a curved tiling border model that can be rotated with a 22.5 degree
rotation snap resulting in a perfect curve without any gaps or overlaps.
|
_____________________________________________________
|