3D Environment Artist Mostafa Sobhi shared an extensive breakdown of the Room project, told us about modeling assets in Cinema 4D, and explained why UE4 was picked for lighting.
My name is Mostafa Sobhi and I am a 19-year-old 3D Environment Artist from Egypt. I'm self-taught, and my learning sources are from Google and YouTube as well as Artstation. Playing video games has always been my passion and I evolved my passion into making games and specifically making 3D environment scenes from scratch and especially the more detailed ones that have a story to tell.
I have always strived to learn more to improve my skills and learn new things. I started learning Unreal Engine 3 weeks ago and I'm keeping it up. This project was fun and I enjoyed creating it. It was a great educational experience as it's my first project in Unreal Engine 4 and I would like to share all that I've learned and going into detail about mostly everything.
I was planning to create a full 3D scene, so I started looking for inspirational concept arts on Artstation to create a new environment scene for my new adventure of learning and practicing looking for something special at this time. I stumbled across the incredible concept art by Jonas De Ro. After looking a little deeper and I took my notes on all the different models that I will be creating. I realized that it would be a challenge although it would be really great to try it. So, I decided to start the journey and take it as the main concept.
I started the scene with a simple blockout along with HDRI and direct light in Cinema 4D to match the concept and make it easier for me to composite the scene. Figuring out the camera position and the settings at the early stages is very important, though it takes a little bit of time to deal with to get the same angle as in the concept. After I'm done with it, I started to add simple blocks like the desk, the chair, etc. which takes up most of the scene.
Choosing the references I didn't stick with exactly the same assets within the concept as I didn't realize what some stuff in there actually was. Besides, as long it was a personal project I wanted to change it a little bit and fill it with as many assets from my imagination as I could. After a while, I realized what models I was going to create, so I started getting references from Google and sometimes even eBay – it's really a great source for gathering high-quality references.
For modeling the assets, I used Cinema 4D. I started with the larger models such as the armchair as you can see the parts to make it easier. I started with a cylinder, then I selected two faces & extruded. I kept doing it until I got half of the shape I wanted. After that, I mirrored and rotated it later connecting it to the first half. I adjusted it a little bit and kept adding edges along with extruding the faces to get the look I wanted (you can see how I did it with the chair's arm in the picture above).
For the couch, I used really simple cubes with some adjusting in the vertices. Then I modified this low poly mesh with SubD and as long I'll export it to ZBrush to sculpt more details such as the wrinkles. This way I didn't need to add a lot of details in Cinema 4D.
For the coat stand, I used a tube and added more edges to extrude and add more interesting details. For the small extra holder which looks like the seahorse in the shape, I created the shape with the spline tool and added the spline in a sweep. Then I added a circle to sweep it across the spline. When I got the shape I wanted I adjusted it a little bit and then added the two objects that I wanted to clone in a group into a cloner. After that, I set the clone mode to radial to put them all in a circle, changed the count to 6 as I wanted to change the plane to XZ axes afterward, and enabled the align.
For the ceiling fan, I did the same with the blades and I adjusted blade 1 to make it look more damaged like it had hit something, and I left blades 2 and 3 the same they were. For the table, I created one of the legs and mirrored it on the left as well as on the other side.
For the windows, books, the truck toy, and even most of the models, I used symmetry after I unwrapped the UVs. It always saves time as well as the UV map space as it's based on copying and mirroring the most parts. In the picture above, you can see that, for the window's wooden parts, I modeled on the left and then started to copy them to get the final low poly model.
For the old money box, I used some references from eBay. It's very simple for the box modeling. You can see how I made the lock step by step in the image above. For making the high poly models, I didn't care much about the mesh as I wanted it to have clean edges for baking later on. As for the hat, I made it from a simple cylinder and I kept going on.
For the broken glass of the souvenir on the floor, I added a capsule and split it in half getting the shape of a dome. Then added it into Voronoi Fracture from the MoGraph menu and edited the Point Generator – Distribution until I got the look of broken glass and Impact Point which has the smaller broken pieces. I controlled the number of broken pieces by changing the value of the Point Amount. After that, I made some walls with the floor to let the glass fall on it, and then I turned the Voronoi Fracture into an editable object. I selected all the objects in the group and added Rigid Body in the Simulation Tag as well as Collider Body for the ground and the walls. Then I pressed play and watched it break.
After I made the bed's parts and made the low poly with the UVs, I duplicated the parts to get the final look of the bed.
For the pillows, the blanket, and the sheet, I used Marvelous Designer which is a great software for cloth simulation.
I made this object as the bed's mattress to simulate the cloth on it instead of importing the whole bed. Then I added a rectangle and hit simulate to let it find its way on the mattress and started pulling it over to get the look of a wrinkled blanket. Also for the pillows, I made them based on this tutorial.
I'm not a fashion designer to make the garment pattern really good but what I made just works very well.
When I sewed all the segments together, I faced a problem with the reversed sewing lines, so I selected the reversed lines and hit Ctrl+B, you can find more info here.
To affix a part of the garment to the avatar or the imported object such as the clothesline, select "Tack on Avatar" then click on a part of the garment, now you will see that the garment will turn translucent and the avatar will become visible to tack on it, and then hit "Simulate".
Also, I used the same garment and simulated it on the chair.
Sculpting The Details
For sculpting the details, I used ZBrush. As for the couch details such as the wrinkles as well as the armchair I used Alpha Maps by Max Derksen, so it's basically a cloth Alpha map but I found it really useful for what I wanted.
For the damaged area on the wall, I used DynaMesh to make it look like it had been peeled off and lost a layer. I made a mask for the damaged and used an Alpha metal map by Fredo Gutierrez later adding some sharp details. I also flatted it just a little by using the flatten brush.
I used the same Alpha cloth maps I had and, for the wooden part of the bolt rifle, I used an Alpha wood map by Fredo Gutierrez.
As for the obelisk, I made this simple shape on the left and then exported it to ZBrush. After that, I used DynaMesh to get more polygons to start sculpting. Then I searched for some hieroglyph words on Google and got an image. I adjusted it a little bit in Photoshop and in ZBrush. I Masked By Alpha which is The Hieroglyphs Alpha Map on the obelisk. To get the depth, in Deformation I raised the "offset by 1" and started to sculpt it more adding more damage.
For the low poly model of the obelisk as well as for some other models, I used Decimation Master. So, after processing, I changed the decimation to a low value to get a low poly count. It's still a little bit high in the image and needs to go a little low as for the place of the obelisk in the scene. The obelisk was a model I made a year ago but I used it in the scene as it is.
I used this method mostly to make the low poly models. I also used the same model before I SubD it and then I went up by SubD it by 1 just to take the closest silhouette as the high poly one. Then I selected all the unnecessary edges by Loop Selection which is way faster and then removed them. Sometimes I had to do retopology if it was faster in some other models.
After I was done with all the modeling, I composed the scene based on the concept art and the lighting. For instance, I added a directional light and watched the shadow in the scene to find the areas where the viewer looks at. Based on what I did and what was in the concept art I realized that my eyes went directly to the bright areas more than the others, so I knew where I should have filled them with the details. Of course, I didn't want to go too crazy – I just added some kind of interesting assets that tell you what are you looking at or narrate some little stories.
Baking and Painting
I used Marmoset to bake as well as to showcase the 3D models and renders with more graphical fidelity. Before I imported my models into Marmoset I separated their parts to bake them in a group avoiding the Normal Map's issues, so I had the low parts and the high parts. Then I added a Bake Project and loaded the model in. I adjusted the Max offset to fill the high and the low model together. To learn more about the Normal Map you can check out this great article by Carlos Lemos.
After I got all the baked maps, I imported my model and the baked maps into Substance 3D Painter. I set the maps as Textures and added them in the Mesh maps. Then I started to paint every model and when I was done, I chose "Unreal Engine 4 Packed" in the Export dialogue.
I used 4.27.2 version of Unreal Engine 4. One of the most important things that I did is organizing the workflow. So, I separated and rearranged all the folders to the objects, textures, and materials.
After importing the textures I unchecked "sRGB" in the channel packing which contains the metallic, roughness, and AO.
When I created the first material and put all the texture in the right inputs, I made a Material instance by right-clicking on the material I made and choosing "Create Material Instance" so that the material instance inherited all of its attributes from "The Parent Material" and I didn't have to open the material graph and do it again and again.
I rendered the final images by using Path Tracer. It costs more but it's more accurate and realistic. First, I had to enable the Raytracing in: "Project Settings" from the "Edit" menu > "Windows" In Plateformes and change default RHI to "DirectX 12".
And then in Engine > "Rendering" > check "Ray Tracing" to turn it on. This way I could change the Lit mode to Path Tracing. Also, I recommend seeing the PATH TRACER Explained tutorial by William Faucher.
I'm still a complete beginner in Unreal Engine, so as long I was using Path Tracer I didn't need to fake too much lighting in the scene. So, I used the basic lighting (Directional Light – Sky Light – Sky Atmosphere) and added "Post Process Volume" and put the scene in.
Also, I faked a little bit of the lighting like the additional flare on the TV by adding SpotLight and for the alarm clock. I added a Point Light behind the arm of the chair and changed the intensity to a lower value as I wanted to get a little bit of brightness instead of looking too dark. I changed the lights to not cast any shadows.
I set up the camera setting and the Post Process Volume and changed the exposure to manual. Then I added just a little chromatic aberration as well as Bloom. I added a lens flare with low intensity and vignette, I also used the Film effect with low slope intensity.
With all set up, I was ready to render the shots, so I added a Level Sequence and added my shots and then I edited the config and deleted the default setting and added the PNG format for the exporting and Path Tracer for rendering and added Anti-Aliasing, to learn more about it I recommend watching this tutorial by William Faucher.
I also wanted to have the depth pass of the scene, so I added a little fog in Photoshop as the Volumetric Fog is an unsupported feature within the Path Tracer, so I took a high-res screenshot of it.
Post-Processing in Photoshop
When I had the final rendered image, I still wanted to edit it a little bit by using the depth pass on the dark areas. So, I changed the depth pass mode to "lighten" and the intensity by adding "Level". I also changed the value and decreased the opacity to 50%. I wanted to make the bright areas brighter just a little bit by using the same depth pass, I set the mode to "Color Dodge" and changed the opacity to 50%.
With little knowledge of Unreal Engine and with some tutorials, this project was an absolutely interesting one and I enjoyed it. Of course, it could be a huge burning out or I could get boring in the middle of the project as in my case I decided to model and texture everything in the scene. It's better to segment what you do with the big projects, like as I did.
I modeled about 1 to 3 models per day, next day I started baking them and painting – just to diversify and see something different every day as well as keep my curiosity until the end of the project. I was really excited to learn Unreal Engine more and more. I even made side notes for the next project while doing this one.
I hope you have found something useful in the article and if you want to ask me anything, feel free to message me on ArtStation.
You may find these articles interesting