Sponsored By

This article, written by a long-time artist and FPS level-designer, explains how to speed video game level creation by creating modular art assets for building fast, clean, and easy large 3D environments.

Paul Mader, Blogger

December 2, 2005

14 Min Read

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

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.


To the power of 2.

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.

_____________________________________________________

Read more about:

Features

About the Author(s)

Paul Mader

Blogger

Paul Mader is a level designer and 3D artist. He was born in Germany in 1983. With a strong focus on gameplay, visual, and technical quality, his work has won or placed in contest such as the “Rune Halls of Valhalla Level Design Contest” by Human Head Studios and the “$1,000,000 Make Something Unreal Contest” by Epic Games. From 2001 to 2003 he worked for Reakktor.com on the MMORPG Neocron and Neocron 2. Currently he is working for Acony Games on a not yet announced Unreal Engine 3 title.

Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like