Toivo Glumov and Natalie Kayurova showed how they created a super detailed architectural project in Unity.
Introduction
T: We have known each other for many years and we work in gamedev. Before this project, Natalie and I were lucky to work together in Trace studio. She was a concept artist on VR project called Arktika and I created different models for Call of Duty: Infinite Warfare. I was always inspired by Natalie’s personal work, and we wanted to create a game-ready environment with a similar mood. We study everything we need for this project on our own, at home, resolving problems as we go.
Project
N: In architecture, I like it when two buildings are connected by means of an external bridge, it is a very impressive element and it makes an ordinary house way more interesting. So we began by going to St. Petersburg in search of reference material and finding a suitable courtyard.
We came up with a little story which could unfold in this environment and are now planning to make it into a video game.
T: I’m doing the more technical part – establishing the pipeline, creating modules, procedural textures, level building and rendering setup. Natalie is dealing with artistic side of things- colors, lighting, concepts, post processing setup, and also gives me useful feedback notes. Further down the pipe, she will be modeling characters and some of the interior elements.
T: I’ve always liked the idea of procedural solutions. And Allegorithmic provides us with some incredible tools that we wanted to test.They have solutions for the most popular game engines, like Unreal Engine and Unity. I had already had some prior experience with Unity, so I started using this technology.
You can download our tweaked shader here. To use it, simply replace the original files with these.
There are several features this shader has. It works by mixing 4 tileable materials using a RGB mask, and at the same time making use of a unique occlusion and normal maps (the normal map is then blended with detail normals controlled by the RGB mask). Apart from that, Unity automatically loads all the textures, settings and materials directly from SP, which is very convenient.
The only drawback I’ve noticed so far is that the textures are generated every time the game starts, which increases the initial load time. But this problem can be resolved by assigning the regular bitmaps manually, if necessary.
Architecture
N: I sketched a general outline of the exterior, which consists of three parts, and we broke this plan down further into smaller modular parts.
T: I made the basic modules in 3ds Max, then I sculpted some elements in ZBrush, for further normal maps baking.
One consideration when unwrapping Uvs was that the UV shells should be in the same UV square for the unique maps (masks, AO, normal). I also had to take the direction of the tileable materials into account, and the possibility of seamless connections with neighboring modules.
Wall modules should be mapped to a square layout, to correctly display the texture tiles. I chose the size of 400X400 cm for my modules, and the texel density of 512 pixels/meter with 2x tile, 1024 at 4x etc. Some modules are two time larger than the others, so a higher tiling value is used on them to preserve the texel density.
Details
T: When the larger part was done, I have finalized some of the smaller props which could then be reused throughout the environment. Since I use a mask to blend materials, the same module will look different every time, even if you just mix different materials using the same mask. And if you add a second mask, you can get a few more variants of the same module.
Defects
T: When sculpting, it is good to consider the texture of the materials that will eventually be assigned in SP, i.e. in Zbrush I was trying to create some general volumes, without going into small detail.
For instance, I added some geometry to my terrain in order to have some irregularities. To avoid unwanted artifacts when baking, I set all the normals to point upwards (except for the cutouts I made for hatches).
Materials
T: Most objects in the scene, with the exception of a few small props, are sharing the same few materials. There are about 40 procedural materials made in Substance Designer for this project. it is very convenient to adjust the textures in the engine when you see the whole picture.
The wall material basics on the following structure
Cracks on the walls were made as shown below
Roofs mainly use different configurations and combinations of these materials
In other words it should be metal, rough coating and rust mixed with dirt.
N: When repeating elements use a lot of diverse materials, it definitely looks better. For example, one section of the wall can be made of smooth plaster, and the other has textured lines or can be made of a decorative stone. The same applies to general principles of texturing of any objects, for example metal pipes in this scene are made of different types of metal. In this case, you should pay close attention to the masks and textures for each material, it is desirable that they have a different amount of detail.
T: Here are some pictures of some of the materials from our scene
SP was mainly used only to create blending masks and customize materials, with a standard substance material layering shader. But it was easier to make some objects with a standard metal-rough shader.
Windows
T: Windows are actually also a procedural material, except for the window frame – it was easier for me to model and bake it down to a bitmap.
The windows’ design is the same as in real life. Usually, in those old houses, you’ll find double windows, with closed curtains behind them. In SD, I added fake refraction, the shape of the curtains, a slight glow behind the windows to add more volume (lamps, TV, etc.), grime and dust, small scuffs on wooden window frames and a few more auxiliary parameters.
Lighting
N: The goal with lighting here is to add contrast and make similar elements look different. Which is why one part of the location is lit, and the other is in shadow.
T: For lighting, we used “progressive” lightmaps in Unity – it’s quite a powerful and convenient tool for working with GI. It allows you to make nice shadows scatter, and it handles tile sets very well. For higher lightmap quality, I manually made the second UV for objects with a minimum number of uv seams and with a high padding value. For some light sources, we used point lights, some of them with IES textures. There were also light probes for very small objects and decals in the scene. To get correct reflections, we used reflection probes.
N: Post-processing is another thing to consider. In this case the gray-yellow hues prevail in the scene, which makes the overall picture very similar in hue, so to make it more “clean” I added some blue in the shadows, and I lightened the yellow a little. This way, the gradation of colors became more pronounced, introducing more hues. Eye Adaptation effect played an even bigger role, and the Bloom effect creates a feeling of “volumetric” light.
Time Costs
T: We have long wanted to work on a joint project for a long time, and the idea of this “interactive” novel was something we both found appealing. This is our primary motivation with this project. In addition, we are interested in the work process itself – it’s not just our profession, it’s our life. Technology is constantly evolving, and we have a lot to learn in the course of this work, this is perhaps our main challenge.
T: In the near future we plan to prepare all of the assets as well as the entire scene for sale in Unity Asset Store, so everyone will have the opportunity to explore this environment.