Environment modeling: From finding concepts to preparing models for import to Unity

Articles
09/12/2018

Our 3D Art Team Lead at Plarium Kharkiv, shares how he modeled buildings for Plarium’s recent mobile game Soldiers Inc: Mobile Warfare.

What goal did you originally have for this project?

We decided to make a project in a new setting. Basically, we had to do three things. Firstly, develop a common concept design for all buildings located in a player’s sector and on the global map. Secondly, create designs for every single building. And lastly, optimize these designs for the Unity engine.

Soldiers Inc: Mobile Warfare has a sort of futuristic military setting. The action takes place in 30–40 years, yet it is not a futuristic sci-fi game. And it definitely was a challenge to convey the atmosphere of such an intermediate stage.

Was it difficult to find concepts and references?

The main difficulty we faced when we started collecting references was the lack of appropriate arts and materials. It’s easy to find references for such popular settings as fantasy, medieval, or pure sci-fi since there are lots of movies and games dedicated to them.

But we could barely find something appropriate for our futuristic military setting. Here are some examples of the artwork we managed to find:

Did you work on the concept designs yourself?

No, I didn’t. Some of the initial sketches were created by our Concept Artist. I’m very grateful to him. He used very simple yet versatile shapes.

All concept designs have a common idea: buildings should be mobile and easy-to-deploy in the field. A module box dropped from a helicopter should be able to transform into a fully-featured Wellhead or a Supply Depot.

Mobility became one of the fundamental design principles for all the buildings in the game. Based on the above, we moved to create concept designs for the main buildings.

Tell us more about how you were looking for ideas.

My regular approach is very simple. It boils down to three main steps: finding simple forms, selecting color palette, and working out details. Here is how I created the Control Tower.

  1. I started with blocks and masses. What I needed to develop at this point was the key feature of the building. It had to be the biggest, the simplest, and the most recognizable part of it. I worked in Maya using simple cubes.
  2. I then chose a couple of the most appropriate concepts to test my color palette on. For testing purposes I usually use 3 colors. In the case of the Control Tower I used these colors: gray, which is a standard color for this setting, khaki, and either blue or orange depending on particular elements. Doing this allowed me to set the background and foreground of the building. I tend to use 2 or 3 different shades of one color to dim or highlight certain parts of a building.

Of course, the colored concept may still differ from the final version. A model may go through numerous improvements before its final rendering.

How long does it take to create a concept design?

Sometimes it can take around a week to find the right idea, like in the case of the Supply Depot.

You can see on the image above all the modifications the crane went through over several iterations. At first the crane was too small, then too large. Eventually, I settled on something average between those two and decided to make the building asymmetrical. I used a vivid shade of blue to help highlight some of the key elements. I chose this color because it’s the same as that of the resource stored in the Supply Depot.

But sometimes you need to create quite a bunch of concepts to get a desired shape. Take a look at this Aid Center.

If you follow all the iterations from left to right, up to down, you will see the idea evolving. Initially I wanted this building to be a series of interconnected containers. I elaborated on this idea before finally coming up with a feature that I really liked: a large octagonal roof. It took several more iterations to refine this feature and get a final version.

What are other peculiarities in drafting concepts?

There are quite a few. For example, a building’s function should be clear from its design. If you’re planning to animate it, you need to plan for this when you’re drafting your concept. A building that is 30-40% animated looks great.

As you can see in the presentation, some of the buildings we made can open and display what is going on inside. Impressive animation has to be robust and noticeable. It should involve multiple moving elements.

Just having a single person pacing the rooftop isn’t going to impress anyone. You’ve got to make it possible to identify the building’s purpose simply by looking at it.

Let’s talk about modeling. What software and tools do you use?

I use standard Maya tools like Insert Loop, Extrude, Bevel, and Chamfer. Nothing special here. First of all, I choose a couple of concept designs for a certain building. And then I use them as a reference to create a high-poly model.

I’m trying to model every detail as much as I can. The following image shows how detailed these models are.

As you can see on the left, even the numbers and stripes are made using geometry. It’s slightly shifted from the main surface and has a transparent material applied to it. The only things I left for texturing were tiles for the upper and lower grounds and metal walls.

Modeling takes about one or two days. At this stage I tend to ignore such limitations as the number of polygons or the number and size of textures. What really matters here is a good-looking model. This approach may require a bit more time. But the result it provides is much better than if you just react to the restrictions around you.

Of course, we will then have to optimize this model for Unity. But let’s think about that later, when we’re creating a low-poly model.

What is your approach to texturing?

I use material editor in Maya and standard V-Ray materials. Again, nothing special here. However there are a couple of tricks. For example, I never make mapping of the whole building’s geometry. Instead, I work with its separate parts. This way I still can adjust and improve the concept design anytime during the texturing process. In addition, I can move objects and edit their shapes, as well as add and remove details.

Let’s say I want to create a generic material that can be used for 40% of all building textures. Here’s what I need to do:

Step 1 – Render a simple gray V-Ray material.
Step 2 – Add Ambient Occlusion to it, using V-Ray Dirt map. This map darkens some of the object joints.
Step 3 – Apply the same Dirt again, now inverted.
Step 4 – Add a gradient. Project it to the entire geometry so that the bottom of the building is darker. The object now looks bigger. Additional volume can be added to the object in the same way.
Step 5 – Blend this material with a tile texture using Multiply.
Step 6 – Add a material property. For example, if I want some gloss on my metal material, I need to add a Diffuse texture and desaturate it. I then need to increase the contrast and add the resulting two textures to the main material as Specular and Bump. The result is a texture and a gloss.

The mapping is made automatically. It adjusts to the tile textures of the wall.

And then it’s time for rendering and high-poly to low-poly conversion, right?

Yes. I use Maya for rendering. The operation is quite standard. Since this is an Outside render, I use V-Ray Sun as a light source. Sometimes I use Ambient lighting. When I need to highlight certain elements, I use additional light sources. I actually did this to illuminate the quadcopter.

Having rendered a high-poly model, I then make a low-poly copy of it. To do this, I build a new model on top of it using standard polygons. Later we will bake a low-poly model from a high-poly render.

And that’s when the number of polygons becomes important. I also need to determine which elements of the model could be reused and which ones are going to be unique.

After that I do UV-mapping of the low-poly geometry that will be baked later. After that I select the low-poly element in the same scene where I rendered my high-poly model and bake it using the V-Ray Bake function with Projection Baking checked. This way, all the building elements are baked one after another.

Do you always start with high-poly modeling?

Yes. This is the best way to get a low-poly model with a high-poly level of detail. I am also free from any restrictions on modeling and texturing. And besides, it’s not quite convenient to create small elements right off in low-poly.

What about mapping and baking? Any tricks there?

I do this in two steps. When you bake for the first time, it’s hard to guess which elements are going to be reused and which ones will remain unique.

For example, the building in this image doesn’t have its left part since it was reasonable to simply reflect the right part of it. At the same time, you can see on the map that I baked the roof three times: by parts, in the camera view, and in the top-down view. As a result I used a combination of these three options.

This map is a draft, so for now it doesn’t really matter how it looks.

In this example I only mapped 2 elements of the fence. Then I used them to construct the whole row. As you can see, the texture is really raw and has lots of space between UV shells. Another example of a map draft:

The next step is to piece the building together, mask all the holes or blank spaces, and duplicate repeating elements. After that I make a clean UV map and put UV shells on it as densely as possible. Next I use a standard Transfer Maps tool to move the textures from the draft UV to the clean one.

In the end I get a ready low-poly model with a very precise UV map and no errors, holes, or blank spaces.

This is a final view of the buildings with the assembled low-poly models with clean texture maps baked on them. Each one looks pretty neat as for a low-poly.

And this is where you would import models into the game?

Not exactly. Since we use Unity, we need to consider certain draw call limits for mobile devices. Simply said, all the objects on a screen with a single material assigned to them can be drawn in one draw call. And since draw calls are limited in number, we try to use them as little as possible. Therefore, we need to compile all textures in one texture atlas.

And here’s how everything looks on the screen of a mobile device.

That’s all folks! Thanks for reading!