Emran Bayati gave a detailed breakdown of Abandoned Room environment, created in Unreal Engine 4. Some nice tips on modeling, lighting and materials.
My name is Emran Bayati. I’m 21 years old. I live in iranand I’m an environment artist. I’m responsible for building the environments from scratch. I do lighting, post processing and assets. Usually my designs are based on concept art from the artist.
I’ve worked as an intern environment artist on Dark Phantom (3rd person action game) since 2011 in Puya Arts Studio. 3 month later I moved to Espris Puya Nama to work as an actual member of a team on Turkmenchay (historical 1st person shooter game about civil war with Russia) till 2013. Then I moved to Nuclear Winter game studio and worked as an environment artist till 2015. I’ve been working as a freelance artist for almost a year now.
Abandoned Room Intro
Let’s go through the detail and creation pipeline of the scene.
First of all, before you start anything, you’ll need an idea, a workflow to help you in the creation. I usually work with concept art, but you can also use real photo references. This environment was based on concept art by Brad Wright. This is how it usually works in most game studios.
Next step is to blocking out the level with simple meshes (if you are using UE4, use BSP Brushes). This helps you to control your object scale and gives you a basic 3d structure to start developing the rest of your level.
Now you can start by creating your assets. It’s better to start with your main materials such as walls, floors, roofs, because it gives your level a better visual design.
Clip_3 - Copy
For Modeling the assets in Abandoned Room I used Autodesk 3DS Max, Autodesk Mud Box for sculpting, Photoshop and Quixel (DDO & NDO) for texturing. Also Substance is a really great piece of software both Painter and Designer. It gives you powerful tools to create awesome custom PBR materials. But for start I suggest using Quixel because it has simple user interface and basically if you know Photoshop you’ll know Quixle Suite too.
Now let’s breakdown some of models to learn more about the environment creations.
Let’s start with this Sofa. First of all you’ll need some references to know how your object is going to look.
After you gathered some references, you’ll be ready to start modeling. As an artist you need to learn the basic pipelines of asset creation: high poly modeling, creating a low poly version of the model, UVs, baking the maps (Ambient Occolosion, Normal Map,Object Space Normal Map, Cavity Map), texturing and material creation.
As you can see above, I started creating the base structure and some support edges (which help you to keep your topology while adding subdivision) in 3DS Max, and if it needed sculpting or some non-hard surface detail such as wrinkles, you can use Mud Box or Zbrush to get the necessary results.
Now I added some wrinkle details and made it like a used during the Sofa production, using Mud box, you don’t want to be worring about polycot here because it’s only going to be the reference projection of your baked maps.
After high poly modeling, it’s time to make a low res mesh. Now you should be sensitive about poly count because the more triangles you have – the more memory is captured. Unreal Engine 4 provides a great system for managing memory.
Occlusion culling renders only the assets which are located in the camera’s view, not the whole thing. There are many other features that helps GPU run faster. Usually in games there are many other assets except yours, which need memory like sounds, shadows. Always keep it in mind. Memory management is a challenge in all real-time game engines.
Now it’s time to get into 2d world for a bit. The key of the Unwrapping is to use all space you have in UV editor and leave less unused space. Like it or not those unfilled areas are going to capture your memory budget. After finishing UVs it’s time for baking.
There’s plenty of software to help you to bake your maps, but I prefer Xnormal. It gives you all maps you need in a short time. It’ll be even faster by GPU rendering, if you have an NVIDIA card. This is possible thanks to CUDA.
Now it’s time for Texturing and material creation. I want to talk a bit about PBR materials, I don’t want to go deep. Just the basics. You also can get a great peace of tutorial here.
PBR is short for Physically Based Rendering, which simply means surfaces, behave just like in real world. Now as an artist the more you know about lights behavior and surface reactions, the more realistic material you can get. Let’s talk more about 4 important maps in PBR workflow:
Base Color which is your diffuse and main color information.
Metallic which is a value between 0 to 1: zero is none metal surface and one is metal surface. It also can be a grayscale image that describe which part is going to be Metal and which part is not.
Roughness which is a value between 0 to 1: zero is a completely flat surface so specular in this areas will be more visible, and one is completely tough and we’ll get no spec in this areas.
Normal is the information that catches the light as they represented by the High poly geometry and it’s an RGB texture and every channel includes different information: Red left to right, Green up to down and Blue describes the depth information.
There are plenty of maps like height maps, cavity maps, which can improve your result.
Let’s take a look to Microwave Material that I created using Quixel Suite.
This is a simple and basic material with bunch of parameters that allows me to tweak the settings like Normal map density, roughness brightness.
Let’s take look in another material and talk a bit about Vertex paint.
What you see above is the floor material that I used in my scene. Pretty simple but it worked for me. The point of this material is a simple vertex paint.
As you know textures include Red, Blue, Green and Alpha channels. By using a vertex color node in material editor you can assign a simple parameter or a completely different material and paint it wherever you like on your mesh using vertex information.
In this picture below I painted 0.1 value of Roughness, so the surface is kind of flat and light rays are reflected directly and it looks like a wet and shiny floor.
And here I repainted the value of 1.0 for roughness, so the surface is tough and bumpy and light rays will reflect in many different directions so you won’t be able to see any specular and it looks like a dry floor.
After creating all of your assets and materials and after you placed all of them in the editor it’s time to build up your lighting!
What you see below is Unlit view mode in UE4 which allows you to see your environment without any light information’s, it looks so flat and unrealistic.
But here is our lit and lighting view mode where you can check your lights information.
It’s obvious that lights give you a great mood ad help you to achieve incredible visuals.
Generally there are two kinds of lights: Dynamic and Static. With dynamic lights you can see the reaction of movable objects in your level but with static lighting you can’t see changes because they are baked in a map called Light map. Also keep it in mind that placing too many dynamic lights will cause dropping frame rates. On the other hand setting very big light maps for your objects will drop your frame rate too. Once again I encourage you to be sensitive of memory budgets for lighting either. Also all of the lights in my environment are Static and based on Light maps.
Light maps are a 2d textures which include shadows and lights information. If you set it very low you cannot see the shadow correctly and setting it high, may cause your frame rate to drop. With static lighting, having a clean and non-stretched, non-overlapped light map is most important to have eye candy light effects on your meshes.
For example here in this picture above the UVs information in channel 0 has been set for applying the material and it have lots of overlapping which definitely will cause my lighting result
But here in this picture I set a clean and non-overlapped UV in channel 1 so I’ll have a better result. Therefore keep it in mind when you are exporting your meshes check your light map channels and make sure it has been set correctly. Also there’s a tool in mesh editor in UE4 which called generate Unique UVs that gives you a great capability to generate your light map UVs inside the UE4 so there’s no need to go back in 3ds max and make your light map channel.
Having a concept art will be really useful in lighting process because it helps you to get the mood right. there are 4 kinds of light in UE4: Point, Spot, Sky and Directional light, the simple and easy way for lighting is Directional light and it behave like a sunlight, it covers all of your environment, so you should set the parameters for it and it’s done because it’s just one source light, but in such a closed level, I prefer to use points and spot lights.
Setting up lights parameter such as intensity, light color, radius,… might be a little boring because every time you want to see an actual result of your changes you should rebuild your lights and it’ll take a while, also try to set your building quality to Preview for seeing the changes and after you get what you like you can set it to production and get a better result (but it will take a while to build).
Using emissive in lighting will helps you a lot to reach the feel you like, for an example in this picture above, the TV material have 1.0 value of emissive which looks good for me.
But here in this picture, the emissive value has been set to 0.0 which is not likely.
After you’re done by your lighting, using a Post Process volume and color correction process will helps a lot and gives you some really nice effects such as DOF, Scene colorize, Lens dirt masks…
Post Process off
Post Process on
Creating the environment is not just based on software. It’s a complicated pipeline with 3DS Max or Maya, Mud Box or Zbrush, Photoshop, Substance or Quixel. There are a number of free game engines you can use. There’s Unity, Cry Engine which will work pretty good. But I believe Unreal Engine is designed by game developers for game developers and it has a huge history. It’s been around since 1998. Almost 20 years of developing game engine experience! It gives you lots of tools and key capabilities to create your environment. It’s really a great engine.