Tobias Hofmann explained how he recreated the iconic apartment from Deus Ex Mankind.
Tobias Hofmann explained how he recreated the iconic apartment from Deus Ex Mankind.
Hello my name is Tobias Hofmann I’m 27 years old from Frankfurt, Germany and I’m a 3D Environment/Prop artist. After my study, I worked a short time for one of my tutors as a freelancer and right now I’m working on an unannounced car racing game.
I started this environment piece because I wanted to make a new scene with my current skill level and to get something fresh for my portfolio. So I was looking for an indoor environment that’s not too big or too small for my purpose because the plan was to get a smaller scene but with a high amount of quality in a decent time. The main goal was to get a balanced scene with a good overall look but also keeping an eye on performance, production scale and reusability. I also wanted to get some decent lighting because that was one of the topics I never touched before in depth.
Through my reference research, I focused on indoor apartment/environment scenes because that was really what I was looking for. During my research, I found some really nice concepts from Deus Ex Mankind divided and I combined these with other references.
I started the project with a grid-based blockout in combination of measurement research. Before I start to do any step into a 3D program I go through my reference and pack the major aspects of the scene in a trello board. It helps to visualize the scope of the project and to keep everything organized and tight on one chart. My trello board is organized in different zones like meshes, texture, materials and other categories. You are free to choose how many slides you want and what type of structure way you want to follow – that’s pretty nice and helps a lot when the project is running. Setting this board up goes hand in hand with searching for real world measurements. This is important to get the scale of the scene consistent and gives you directly the measurement numbers for your blockout modules and assets.
With all this set up I started to block out my environment with simple shaped in 3DS Max. I also do a quick UV because the blockout meshes will get a basic material to test the shading and first look in the engine.
The grid snapping setting (in centimeters) from 3DS Max matches the system of UE4. That’s why the placing in the engine is pretty fast and you get a quick visual feeback in the engine itself. For me it’s quite important to get everything in UE4 fast because the look (PoV) etc is not always the same like in your 3D program. That phase of production is in my view one of the most important ones because here you can see upcoming issues and it’s very easy to fix issues and to check if your modular pieces work the way you want.
I can recommend getting the third person preset UE4 offers to have a character who is able to move through your scene to get a good and directly visual feedback.
The workflow for my assets where most of the time following the same pattern. I used my reference from the trello board and get some extra ones if necessary to get an idea how I want to look my pieces/assets. Then I started to load my blockout piece for each asset into a new max scene to have my measurements and dimensions. Then i start to model the assets in 3DS max, unwrap it and pack them by hand. To get the best out of my uv space I mirrored when ever possible and just took one repeatable piece (like 1/4 cupboard foot) and copy it later on to all places where it’s needed.
My modeling approach is based on a mid poly workflow with different iterations of modifier stacks to have a lot of control and to work as none destructive as possible. From the mid poly I create my high poly and can get really fast back by deleting the modifiers. That saves me a lot of time because I don’t need to get rid of unnecessary geometry. After UV’ing and packing I use textools to set up my smoothing group by UV shells. The last step in 3DS max is to name the different parts of the model with e.g. “a_low” and “a_high”. I’m doing this to be able to use the “bake by name” feature in substance painter to get a good normal bake without exploding the mesh.
(1) Bake it in double of expected exporting size to get better quality of your maps
(2) Using the “Bake by name” feature to avoid explode the mesh with selection sets or key frames
When it comes to texturing I use most of the time Substance Painter. This is also the place where I bake my maps. After loading the mesh in I do a quick normal bake with a lower resolution to check if some errors or issues occur. Until all looks good I bake my maps always double the size of the later exporting textures to get a better quality. If needed or planned before I add height/normal stamps and save my refined normal map out and bake all other maps again to catch up all the information from the added details. The texturing process is mostly based on smart materials I create myself based on the standard materials substance ships for you. After texturing I save my textures in a packed way.
(1) Shows my height folder turned off because i already rebaked all these stamped details down to my normal map
(2) Shows the way from stacking materials – Starting at the bottom with the foundation and then layering on top like you would do it in photoshop
Therefore i created myself different presets depending on e.g. a needed alpha or emissive map. But most of the time I export a base, MRE (Metallic/Roughness/ExtraMask) and a normal map out. The extra mask is mostly in use by the AO. This texture packing setup fits perfectly to my master materials in UE4. Working with instanced materials and adjustable parameters e.g. a roughness adjust or base color tinting helps you a lot to tweak your materials in the scene and get a better match to nail the mood and feeling of your environment.
(The export preset I created for my textures from Substance Painter to UE4. I adjust it if I need something special or just delete the not needed textures. You could also create different presets to choose from.)
(Here’s the master material I use in UE4. Nothing too fancy just the Base, MRE, Normal, Translucent and Emissive input with some tint tweaking, roughness adjust, opacity strength and panner if needed. For decals I use another master material.)
The funny thing about the lighting in the scene is that this is my first time I really get in touch with lighting. That’s where I learned maybe the most.
I started my lighting with getting the right angle of my directional light and then adjusted the sky sphere to get the right time of day regarding the position of the sun. Then I added a sky light to capture a little bit more light and make it a bit brighter. The next step was to add static lights at the main light sources (roof lamp etc.) to get natural shadows from them. At this stage you got often times some problems with too dark areas. These can be lit by using some static lights with a really low value and turning shadow casting off – just to imitate some bouncing light and to have a better fall of by the light itself. When it comes to lighting always think about your props who emits light like the tactical laptop I created. This asset got a bluish monitor which means that the surrounding objects get a slightly blue tint. This helps to sell your scene much better and give it some nice contrast. Working from the big to the small lights helped me a lot to create a believable look. In the end I’ve made some minor tweaks and adjusts in the post processing volume. Keep in mind that you always take care with post processing effects because it can bring your scene to a complete different look very fast.
(Shows the lighting sources and the additional lights to get better bounces)
(Shows the lighting falloff and the main target of the light)
The foundation of good shadows are decent lightmap Uv’s. My approach is to create them by hand but you can also generate auto lightmap uv’s from the engine which can work quite good. An important step is to pack the lightmap Uv’s not too tight because the shadow resolution. The texture you need is most of the time between 32 – 512 (depends on the size and importance of the object). You should give your shells a bit space between each other to avoid shadow bleeding.
(Check that the packing of your lightmap UV’s are not too tight. Give them a little bit more space because of the shadowmap resolution.)
There’s a cool function called “Lightmap density” which you can find in the “Optimization Viewmodes” tap. This option helps you to figure out what kind of lightmap resolution you need for each asset in case of quality and to save performance. The colors give you the visual feedback how to set this up.
Blue = Resolution too low
Green = Perfect
Red = Resolution too high
(Shows how to get to the lighting density)
(Shows the lightmap density by getting a visual colored feeback)
The approach I use to create the environment is based on production pipeline methods. So yes it’s doable this way. I really took attention to modularity and used tileable as also trim materials to make the scene as flexible and reusable as possible. This also helps to iterate other scenes with the same setup by also adding more modules if necessary.
I’ve done this environment in my square time so I need to estimate the time I needed to finish this. I think the time in a production the range of time would take a few weeks.