Jonathan Hemmens shared the details behind his recent work in progress Will’s Room (Teen’s Bedroom) inspired by Cassie’s Room from Uncharted 4.
My name is Jonathan (Jonjo) Hemmens, and I’m a 3rd-year student at Falmouth University, UK. I’ve spent the past two years specializing in Environment art and I hope to find a stable position in the industry after graduation in a few months time. I’ve mostly focused on man-made scenes, but want to push my knowledge to pick up some organic skills.
Whilst studying at University, I’ve been lucky enough to work with some other incredibly talented friends and developers creating games. I’ve also had the privilege to work with the lovely people at Antimatter Games on Rising Storm 2: Vietnam as an Environment Art Intern which was a fantastic experience.
Will’s Room is a personal project I’ve been working on for the past 7 weeks now. Most of my projects before this had focused on the big picture which was something I wanted to change. I decided to pick a project that focused on more attention to detail on a much smaller scale. The project is still a work in progress, so please come give me some feedback on Polycount! I apologize in advance for any inconsistencies in the screenshots, the images were taken at different stages of development.
Project Goals & Inspiration
Before I started this project, I had stumbled across some incredible pieces of art I wished to study. Joakim Stigsson’s Mountain Lodge was a big inspiration for me. The scene demonstrated stunning prop modeling and environment modeling. It motivated me to start working on some props of my own, such as the drawers and the wardrobe to try to achieve a similar level of quality.
However, my main inspiration became Cassie’s Room, from Uncharted 4, which I found on Boon Cotter’s Artstation. The modeling and texturing in this room demonstrate expert use of color and lighting to create a sense of who the character is and visually demonstrate a personality for them. I was motivated to try to hit the quality bar set by this scene.
To summarise, my goals of the project were;
- Create high-quality individual props
- Learn Photogrammetry techniques
- Create interesting color and lighting throughout the scene
- Have a variety of interesting materials
- Create a believable room for a teenage character
The shape of the room evolved throughout the development of the project. I had initially modeled a rectangular room, but as pointed out by users on Polycount, the layout was really boring. It was too wide, it didn’t provide enough set dressing restrictions, and each side of the room felt the same. I got some great advice from Carrie Sloane on Polycount to transform the space into an attic room. I coupled this with some architectural elements from my childhood bedroom, such as a chimney space and an odd corner.
These changes were really impactful and helped add so much to the scene. The chimney wall helps give space for the wardrobe to rest. It also provides a nice lighting contrast between it and the wall next to the door. It also helped restrict some of the space in the room allowing me to place assets around it naturally instead of just leaning them against a flat wall. Having the attic styled wall helped make the room feel more enclosed and comforting.
The biggest modeling challenges I’ve encountered in this project would be creating the bedding and the desk plant.
The jeans and the bed were both interesting challenges as I pushed myself to jump into Marvelous Designer to create some more realistic cloth materials. I wanted the individual who occupied the room to be really messy and unkempt. Living as and with other students helped me gather plenty of reference for this!
The bedsheet was the first thing I made, as it was by far the simplest looking part of the set. I consulted my good friend, Dom Marriott, who gave me some good feedback on my bed sheet and suggested better simulation methods. Having his expertise helped me build lots of confidence really quickly with the tool. After this, I did the pillows by following a tutorial online and then felt confident enough to tackle the duvet by myself.
My biggest pitfall when creating the duvet was a reliance on the pressure tool. The tool inflates the center of the fabric the most, but leave the corners flat. This looks great for the pillows, but most duvets are a lot flatter. After a few attempts, I ended up reducing the pressure to almost nothing and just added a couple of layers underneath the top layer, which added a nice thickness and removed the bubbly look.
The plant was a bit of a challenge because I’ve not had much success doing foliage in the past. I’ve tried a couple of times before, but not had any good results. A few months back I stumbled across a post made by Peyton Varney where he breaks down how he approached modeling foliage for his final year project, Protégé. Following this tutorial helped me understand the workflow and shader setup that had eluded me for so long. I’d fully recommend this tutorial to anyone struggling in the same way.
With this project, I’ve pushed myself to learn more about photogrammetry and put it to use in my projects as it’s becoming clear how influential it’ll be on future realistic games. I don’t really have the money for a decent set-up, so I’m using a Lumix DMC-FX150 which isn’t really a camera meant for photogrammetry. The images are occasionally a little noisy and it has a low battery life, but it has 14 megapixels and can shoot pretty high res. I also have no studio set-up and have to take photos in my back garden on a sheet of paper.
Before starting, I only really knew the basics of the tools. I did my first scan of a set of DVD cases but immediately learned about the issues of glossy and reflective surfaces interfering with the scan data. I instead tried with my shoes which had no reflective surfaces at all. The first result was good, however, the images were far too dark and I had to up the exposure in RAW to give Agisoft more information to work from. I also found that I needed to capture more images of the areas around the laces as they are very detailed and this is where the mesh had the most holes and errors.
I then took the mesh into ZBrush to clean it up for the highpoly as the mesh export was very bumpy. The low poly was done through ZBrush decimation master which is very lazy and I should really manually re-top in Maya, especially for production assets! Then I baked in Xnormal and cleaned up some texture errors in PS using the clone stamp tool. I did the exact same process for the rucksack but had a lot better results with this.
Neither of these was entirely error-free in the end, I’ve highlighted some of the most egregious ones on the backpack for your amusement. However, a lot of this can be solved by taking more photos and spending more time cleaning up in ZBrush and PS.
I’ve also gone a step further and used photogrammetry for the rubbish in the bin and for a dirty plate on the desk. The results weren’t as good as the rucksack, but the time saved overall with photogrammetry is very useful.
As I mentioned in my goals, I wanted to create a quality of lighting that was comparable to the lighting from Cassie’s room from Uncharted 4. However, I wanted to have a different ambiance to that of the friendly and ambitious character Cassie. I felt that the room should be darker and a bit hazier. I wanted to get the feeling of really intense mid summer light pouring in through the window, leaving those almost physical shafts of light. I tried to use some reference I found in my parents home to support this.
My lighting set-up for this project is super simple! I’ve been using Luoshuang’s GPULightmass which uses the GPU to build lighting rather than the CPU. The tools strip away the ability to alter most lighting settings in the engine but produce excellent quality light bakes. It also speeds up light builds ridiculously if you have a good GPU.
I had some great tips for the bedside lamp from Harley Wilson (check out his lighting tutorials, they are amazing). He suggested I use two static spot-lights to simulate the lighting effect of a lamp shade. I combine this with two point lights, one which casts shadows but doesn’t cast a light on the lamp, and another that does not cast shadows, but affects the light. I’ve done this to get the nice SSS effect on the lamp without weird looking cast shadows.
For the sunlight, I have a directional light with a high indirect lighting intensity. This helps the light fill the room very naturally. I also have a rectangular light on the ceiling to fake a bounce (another great Harley Wilson tip!). I’ve added exponential height fog to utilize the nice volumetric fog to simulate the harsh summer light. I plan on coupling this with some dust PFX to help the room feel a bit dirtier.
As I developed the scene, I wanted to create a different feeling for each side of the room. There is a lighting contrast from the window to the wall, but equally, there is color contrast from the bed wall to the desk wall. I wanted to create a sense of peace and harmony on the bedside to show that this was a place for rest. I tried to use no red colors (aside from the alarm clock!), but use more blues, greens, and yellows. The yoga mat and the neutral bed colors helped support this.
This is contrasted by the color and mood on the work side of the room. The desk is covered in red colors and has messy placement of objects to signify the chaos and action that happens there. The coffee spill, music equipment, and the dark red posters add to this sense of urgency. Dirty plates and random post it notes start to seem a lot more intentional!
As I mentioned earlier, the material definition was something I really wanted to nail in this project to show I understood how to use PBR materials. To create all the materials by hand would take me quite a lot of time, and with my graduation coming up shortly, I decided to just focus on using them properly in an environment. However, the knowledge I’ve picked up from using Designer in previous projects, was still useful when I needed to create the bubbling and overlapping effect on the wallpaper and when I wanted to create the coffee stain decals.
The carpet and wood planks (used on the exterior buildings) were picked up from Substance Source. I also used a couple of wood materials exclusively inside painter for things like the dresser, desk, and wardrobe. These materials looked great and would have trumped anything I could have made within the scope of the project. For the skateboard, I pinched a board design by Rami Niemi. I’ve also been using Mario Dalla Bona’s amazing Wood Smart Materials in combination with my own wood materials and the stuff from source (they’re free, go get them here). Aside from this, I’ve mostly just used the base Substance Painter materials to texture most of the props in the scene.
My material set-up in this project has been fairly primitive. I have a couple of master materials for my posters, decals, and tilables which I instance to simplify the project. For my wallpaper, I have the option to switch between different tiling alphas, alpha intensity, and normal intensity. Most of the props in the scene such as the curtains, bedding, door, nightstand, etc. have been set up with a hue shift so I can alter their colors on the fly as I hadn’t really decided which colors I wanted for them initially. This helped give me some extra freedom in which colors would work best with the surrounding objects.
Masked Prop Experimentation
Whilst working on some of the smaller props in the scene, I came across some assets that would require significant geometry to model. These were the hairbrush and the set of keys. To tackle these props, I decided to use masked materials with planes rather than model the assets in a conventional high to low poly workflow that I have used for a lot of the assets in the scene.
Masked materials are textures with a one-bit alpha channel that mask out certain parts of the mesh when rendered in engine. These are pretty cheap to use in engine and if used correctly have a great effect.
Keys are quite detailed shapes as they have a cylindrical head with a hole and a jagged tooth. To model this and give it thickness would probably cost a couple of hundred tris and would still look pretty blocky. Therefore, I decided I would model the keys, key ring, and the bottle opener onto flat planes.
After I did this, I added an opacity mask in Substance Painter during the texturing phase and assembled the keys in Maya. The mesh was still a little high poly because of the car key fob, but I saved a lot of geometry by using the masked planes. To remove the flat look of the keys, I stacked some of the planes on top of each other to create a sense of depth. I was really happy with the result of these, and even though in-game, the player would probably never get this close to the asset, I’m happy with the effect regardless and could see this being scaled up on more assets.
I used a similar workflow to create a hair brush. Most modern hair brushes have plastic bristles with thick rounded ends. Just like the keys, modeling these would be incredibly expensive as they are rounded shapes and would look very blocky if I tried to keep a reasonable tri-count.
I opted instead to bake a high poly bristle onto a plane and assemble two of the bristle planes crossed together at 90-degree angles. This helped ensure that the illusion wouldn’t be broken if the model was viewed from the wrong angle.
The pros of this workflow are that you save a lot on geo. This might become more and more unnecessary as hardware improves, but I feel like it’s worth saving where you can to spend the geo on more meaningful assets. It’s also pretty quick to set up and can have some really good results.
The cons are that the quad overdraw which comes from overlapping translucent materials. It might be worth to add some extra geo in places to cut down on this, but for my specific scene, it wasn’t really necessary as I don’t have much overdraw. The illusion can also be broken quite easily if the player looks at the mesh from the wrong angle, meaning you’ll need to think about how and where exactly you’ll use the planes to keep it looking consistent and 3D.
Substance Painter has been an incredibly useful tool for creating this project. I wanted to create realistic assets with a slight painterly feel, which I feel is a really easy effect to achieve in Painter. My process starts with baking my high poly mesh, then exporting the textures so I can quickly re-import the textures into UE4 whenever I want to check how the materials look in-engine as the painter viewport is sometimes a little deceiving. Next, I create folders for the different materials I plan to use on the asset and creating folders for each of them.
I then began testing materials, seeing how they work together and if they feel physically accurate. This is where strong reference gathering really helps. The next step is to start adding wear and tear. It’s really easy to go too little or too much with this part of the process, as the mask generators in Substance have very varying levels of strength. Applying some basic edge wear to assets always looks nice, regardless of age. The generators are also really great for adding roughness variation so you get nice light bounces off your assets.
I usually save height information for the end of the texturing process. This is because it’s the most destructive part of the process and can more often than not have a more negative impact. Try to use small height values, and keep track of where they’re placed in your folders as it’s very easy for materials to have subtle height changes which could interfere with the rest of the height information.
The biggest thing I’ve learned throughout this project would be the photogrammetry techniques and getting to grips with Marvelous Designer. They’ve both contributed massively to the quality of my scene and neither tool had a large learning curve. Even though it was my first time using them, it saved me lots of time.
I’ve learned a lot about lighting and about how sometimes less can be more. Achieving the effect I wanted with as few lights as possible really helped simplify my lighting process. I also want to push myself further and do an evening version of the room with some different night lighting.
If you’re interested in seeing more of my work, you can find it here at my Artstation. If you want to follow my continued development on this project, you can find it here on Polycount. I’d love to get some feedback as the project comes to a close.
Thanks for reading!