Sergey Tenditniy discussed some of the ways he’s building outstanding modular 3d environments within Unity.
Sergey Tenditniy discussed some of the ways he’s building outstanding modular 3d environments within Unity.
Hello, my name is Sergey originally I’m from Ukraine, but last 3 years I’m living in beautiful Slovenia.
My last job in Ukraine was in Wargaming.net on projects World of Tanks and World of Warplanes as 3D artist and Art Vendor manager. In Slovenia, I’ve started to work on different environments in Unity, and after this, I’ve got an idea to make this cartoon village.
The idea
I’ve got inspiration to make this village, last year when we with my wife were traveling in France in Alsace region. This is so beautiful region in northeastern France with a wide variety of beautiful villages. I was impressed by the beauty and unique style of these places. And at this time I’ve got an idea to make something similar in the virtual world if a lot of people traveling to see these places probably in virtual it’s also could be interesting for someone. The main goal was to convey the mood you have when you are there: bright colors, curved shapes and even to increase this feeling, to make village it in cartoon style.
Also for me, this was interesting to try, because usually I’m working in realistic style, and I wanted to see what I could do if I need to make cartoon style.
At the beginning, I didn’t have an idea to sell it on Unity Asset Store. A little bit later when I started, I’ve decided that it’s better to make not just one shot for render, but the whole game environment, so different people over the world could use it for their projects.
The main photo references I took in France:
Modeling
Some first screenshots, and here is possible to the my progress:
My main workflow:
1. At the beginning, after some experiments, I’ve modeled just first 2 houses and when I’ve got the shape and curvature I like, placed them on the map with simple lighting to see how they look together trying to get basic look of the future village.
2. Added some details to the houses and modeled couple new houses.
3. Choose two houses and church, and begin my experiments with color, to see how this could look in the end. Added some temporary vegetation.
4. Created final vegetation, polished houses. Set up lighting and post-processing. I’ve got almost the final picture, how I want my village to be in the end. This was my reference to style and color when I continued to work on other streets and assets.
For this project, I’ve decided to make whole houses in one mesh without modularity and also completely modular houses to assemble it from the parts. Because I’ve decided to sell this village in a store, I wanted to give people option to use already created houses or assemble them itself in unity from modules(doors, windows, walls, etc..)
To make the modular house is pretty simple, I have variety of walls, corners you could snap together and make general shape of the building, after this you need to place wood planks, windows, and doors. At the end don’t forget to add some decoration and flowers and house is ready.
You could see how it’s done, and what peaces I’m using for it on this picture:
All parts:
Polycount:
I’m using middle poly models without baked normal, with fillets on the corners, this increased polycount a little bit, but gave me an opportunity to use tiled textures everywhere and use vertexes on the corners for vertex color and vertex alpha texture blending.
Creating Assets
At the same time, it’s simple and complicated. But this is the most important part of our work.
The main idea here is to find as many references as you could, it’s always easier to recreate what is already created in real life, just use your imagination and creativity to combine all together.
Make basic block out with simple meshes before going into details. Make sure that it looks interesting and readable from all sides, and already after this fill in with details. And here is important to keep balance, do not overdo with small elements and make unreadable for the player. Always should be some areas where the eye could rest on details and areas of interest where always interesting to look.
Vegetation
Vegetation created very simple way, nothing new.
- First I created I highpoly leave
- Changed it a little bit and duplicated to make a branch. Baked to the plane normal and transparency.
- Created one 3d branch from the planes
- Modeled tree with spheres, on the places where will be leaves and placed my 3d branches card over it.
- Baked vertex normal from the spheres to the planes. People always forgetting this, but this is very important. See pic. below.
In case of optimization, all leaves using the same texture. Also, I wanted to add color variety by using vertex color for leaves, to make them somewhere a little bit more red or yellow.
The same way I’ve created all my vegetation, from one small 3d branch from planes, I could make different bushes and even ivy.
Texturing
I’ve tried to use as fewer textures as possible. And I used only tiled textures for this village, I don’t have any unique textures. Only for vegetation I have not tiled textures.
I’m using five main textures for this environment: concrete, wood, metal, roof tiles and leaves texture.
These 5 textures cover 95% of what you could see in my environment. I use grayscale textures to have the possibility to add color with vertex color in unity, all color variation, dirt and wood scuffs I’m adding with vertex color and texture blending by vertex alpha. I used custom shader created in shader forge that gives me possibility blend textures by vertex alpha and at the same time overlay vertex color over the grayscale textures.
Texture samples:
On this picture, you could see that I’m using only 4 materials for the houses (wood, concrete, roof tiles, glass), but because of vertex color, it looks interesting and variedly enough. One color on the picture it’s one material in the game.
All color variety created with vertex color, because of this each house in the scene could have unique coloring but at the same time very cheap in case of performance.
I think that the main secret for this village is to have bright colorful simple textures with color variations with curved geometry, this stylized look is the result of colorful textures, curved geometry and post-processing.
Tools
At the beginning I applied all basic vertex color in Maya, to have some base colors on houses. And already in Unity I could use any vertex paint tool, to pain color. It’s a lot of them, but I like to use free Face Paint http://unitylist.com/r/385/face-paint, you could paint face by face with it which is faster for me than vertex by vertex. If you have shader that supports vertex color or texture blending, you could just in your Unity scene very quickly change general look of your assets.
You could see how I’m doing this on this pictures:
Lighting
The main goal here was to make the feeling of sunny summer day, although the village also looks not bad with moonlight, maybe one day I will also make night version, with stars on the skies and yellow light coming from open windows.
I use only one real-time directional light in this scene, all indirect light precomputed with standard unity features. Of course, if this was only for one shot picture, I would add some different color point lights to fake bouncing light which goes from the ground or foliage for example. I set up the main lighting before texturing process, to have lighting by the time when I will work on textures. Because light is not baked, I could rotate it and make brighter or lighter any time. Light irregularity gives light cookie cloud texture applied to directional light, with it scene looks more alive. Also to separate a little bit background from foreground I’m using standard Unity fog. Feeling of sunny day gives contrast between shadows and bright areas than more contrast than the sunnier day.
The rest of the work is done by post-effect
Post Processing
On this picture, I turned off all post effects and turned them on one by one to show you how they affect the scene. I could say that the biggest effect gives ordinary Color Grading, all other effects not so visible comparing to it, so in case of optimization, they could be turned off.
Final word
Overall I could say that this is a good way for game production. Because of tiled textures and vertex color we could have big environments and cheap in case of performance. With appropriate LOD setup, we could have a lot of details in the foreground and make them very simple for the background. The main small details here is vegetation, but because it uses the same material and consists of the planes Unity static batching saving millions of triangles for us here.
I can’t say an exact number of hours I spent for this environment, I was working in my free time after main full-time work. But I think this is about 200 hours from just an idea to this game ready environment.
My Artstation page.
You could buy village on Unity Store.
Link to the village on Artstation.
Interview conducted by Kirill Tokarev.