24 October 2020

Evening Highway – Unreal Engine 4 – Nikolay Usov

main_picture-scaled
Introduction
Hi!
My name is Mykola Usov and I am 3D Artist from Ukraine.
I’ve been in the game industry for more than seven years now. I’ve had experience working as a Prop, Vehicle, Environment and Level Artist during my career.
I’m happy to share a brief breakdown of my latest personal project Evening Highway.

About the Project

The main purpose of starting this project was an aspiration to create something new and most relevant for my portfolio, which I had not updated for a while.
Another goal I pursued was to make the project as an asset pack ready for selling on Unreal Marketplace.

And the final but not less important goal was to learn something new during the production process, like acquiring new production approaches, new software etc. For instance, I chose Blender as my main 3d package for this project and, as a result, I significantly improved my knowledge of this application and moved my whole pipeline to Blender. Blender is a great and powerful software easily extendable with tons of free and paid add-ons from the community. I hope Blender will be industry-standard at some point.

References

Conceiving this scene I was inspired by an existent location in Stockholm. I happened to see that place with really interesting evening lightning and I liked it a lot. I thought it would be great to implement this as a 3D environment scene with Unreal Engine.

I took a few photos there and also collected additional construction sites and road repairing references via internet and by taking my own photos.
I used PureRef app for managing my references.

references_pure_ref

Blockout

Blockout was the initial stage for the project. This is a very important point to catch the overall scene scale, proportion and composition. At first, I built quite simple blockouts for main environment scene elements, like whole terrain, roads, rocks etc.

Then, I did some test in the engine and improved detalization for them. I usually build quite simple blockouts for main scene elements, but when it comes to props, I prefer to make blockouts more detailed. I try to catch correct proportions and add all the necessary details to them relying on my references.

blockOuts-scaled

Bevel Shader

Blender Bevel Shader feature is a huge time saver. With Bevel Shader you are able to bake bevel normal maps directly from lowpoly, as a result, you don’t need to build highpoly at all or build it for a very few parts of your model.

First, I bake a bevel tangent normal map from lowpoly with free TexTools add-on, then bake extra details from decals using DECALmachine add-on. Also, if it is necessary, I bake a normal map from highpoly.
At the end, I get the final normal map by combining my baked maps together.

I used this approach a lot during production.

Prop_Bevel_shader
Prop_Normal_map_breakdown-scaled

Texturing

Texel density for props, as well as other world elements, is around 1k per m^2 in the scene.

Small props have unique textures sets, but to get the required texel density for big objects and world elements I used layered UE4 materials with tiling textures and layers blended through unique or tiling masks and Vertex Colors.

Parent_Tiled_Material

Tiling texture sets were done in Substance Designer. Some of them were based on my own photos, the others were made in SD from scratch.

tiling_texture_sets

Props were textured in Substance Painter. Substance Painter also was mostly used for making masks that were used in ue4 layered materials.

The texture sizes for all the textures in the scene were usually no larger than 2k by 2k pixels.

Other examples of meshes approached with layered materials:

Prop_wooden_drum-scaled
Prop_traffic_barriers_mat_breakdown
Prop_traffic_barriers_VC
Concrete_material_breakdown

Rocks

Highpolys for rocks were done by applying a height map to tessellated rock blockouts. The heightmap, generated in Substance Designer, was based on Pierre Fleau graph.
[ https://share.substance3d.com/libraries/1002]

rocks_displace

Retopology and UVs were done manually in Blender. Normal map baked in Substance Painter.
Rocks were set up with a layered material in the engine. Tiling texture sets inside the material were blended through Vertex Colors and masks made in SP and SD.

rocks_material_breakdown-scaled
rocks_VC-1

Vegetation

Vegetation was built in Blender manually.
I tweaked vertex normals of meshes with the free Transfer Normal add-on in order to improve vegetation shading.

vegetation_VN_shading
vegetation_trees_polycount
vegetation_grass_polycount

I used my own photos as a base for all the grass and tree textures. For trees and bushes, I did a few foliage materials in ue4 with different texture sets applied. It enabled me to make the scene more interesting just replacing materials in the engine.

vegetation_mat_replacing

Roads

The highway and the roads, as well as other environmental elements, were approached with layered materials. The highway material has perhaps the most complex setup in the scene. Besides three layers with tiling texture sets and a global normal map, it also includes a global AO texture and a tint mask.

highway_breakdown-scaled
road_material_breakdown-scaled
road_lanes_VC-1

Lighting

I decided to use baked lighting in this scene. With baked lighting, you are able to get really nice quality with good performance. As my PC is not high-end, it was perfect solution for me.
There are only a couple of light sources in the scene: Stationary Directional light and Stationary Skylight with HDR-image applied. HDRI was taken from hdrihaven.com. There are a lot of free HDR-images on the site under CC0 license.
The Directional light has Area shadows and Cascaded shadows enabled.

With Area shadows enabled you could get more realistic precomputed shadows, which become softer with distance from shadow casters.
Cascaded Shadows enable you to use high-quality dynamic shadows close to the camera with a smooth transition to precomputed shadows in the distance.

lighting_shadow_cascades-1

Post-Process

I don’t use any complex Post-Process settings in the scene. Besides increasing GI intensity and playing with Screen Space Ambient Occlusion and Auto Exposure options, I don’t change any other major settings, like Tonemapper and Color Grading.

Post

Hope this information was useful to someone. If you have any extra questions please feel free to contact me via my ArtStation page.

Thanks for reading.