Robert Roeder talked in detail about the use of Trim Sheets and lighting setup in his new 3D environment Arabian Afternoon.
In case you missed it
Read our previous interview with Robert
Hi everyone, my name is Robert Roeder. I’m a 3D Environment Artist who has been working in the video game industry since 2018. After university, I worked for Ninja Theory (where I had also previously been an intern). This gave me the opportunity to continue working on Bleeding Edge which was released in March 2020.
Arabian Afternoon: Inspiration
I’d had this image in my head for some time and now it was time to breathe some life into it. As per usual, I would go and look at old Arabic paintings and images of places and interiors from other countries, such as Turkey, Morocco, and others. I wanted to capture the essence and atmosphere of these interiors, interpreting them in my own way rather than following them strictly, convey the feel of these places, and create something loosely inspired.
From the start, I had a very specific layout for my main image in mind and arranged everything to enhance this view as much as possible. As you can see in the picture below, the arch and the curtain build a window to guide you to the main focus of the image, and in. Also, I kept the foreground slightly darker, the viewer’s attention is concentrated on my chosen focus so no attention is “wasted” on anything I don’t want the viewer to focus on. I added the lanterns to provide the top of the image with some visual weight and to point down to the table towards the hookah which is lit from behind and builds a strong contrast to the bright background.
I also arranged objects using the rule of thirds which is one of the classic and safe ways for a visually pleasing composition, and which carries the attention from one object to the next.
Planning the Workflow
For this project, I wanted to improve my speed and efficiency. Substance Designer really helped me out with this and I got the chance to utilize the strength of creating custom graphs with exposed parameters to deal with Damage, Colour Variation, and general aging of my inputs. This way I only had to create patterns and a very basic colour pass and plug this into the custom node to deal with all the aging and damage distribution rather than creating a specific network for all of them.
Also, I wanted to create actual patterns in SD as I’ve never touched them before and thought it might be a great opportunity to hone my skills and break my head over these difficult shapes and how to get them to tile properly.
On top of that, I had the urge to try to paint the ornaments on some of the assets, for example, the hookah and the table, which I did in ZBrush and Substance Painter using radial symmetry on both objects. I didn’t use any fancy alphas or brushes other than rectangle mask selections in ZBrush and a square alpha texture in Substance Painter. Apart from that, I only used basic brushes and my pen tablet to paint all the ornaments.
They are used to efficiently and quickly texture smaller details in environments, such as skirting boards, rim tiles around a tiling floor or wall pattern, and general textures which can be used on long and thin objects like cables, rails, rims that separate objects from each other and many other things without the need to create unique textures for them. By being creative with their placement, it is possible to find completely new ways to use them, and see what you can get away with without making it look repetitive.
The core principle is to make them tile along one axis, e.g. X or Y/ U or V in texture space. With this limitation comes another very important point to consider. They have to be inconspicuous, meaning they can’t have any outstanding features like a big crack or eye-catching colour like a huge colour variation between a strip of tiles, otherwise this feature will reveal the tiling nature of the trim and break the immersion for the player/viewer.
The same rule applies to tiling textures, even though there are ways to hide repetitiveness, such as simply using lighting, shadows, and objects in your environment or blend with dirt and other materials to hide its repetitive nature.
The reason why they’re still used even with modern graphics is that they’re easy to make and speed up your work as you don’t have to texture every little detail with a unique texture as well as easily enhance your environments and make them feel more realistic.
To make this whole process of using Trim Sheets easier there are some simple but important guidelines to take into consideration when making them.
As already mentioned, they shouldn’t have any outstanding features that will give away how often they actually tile. To make it easier to apply your UVs to them, they should be based on a grid so you can snap UV shells to them easily without the need to eyeball their placement which doesn’t seem like such a big deal on paper but it is in fact very annoying after a while.
There is no need to have them all be the exact same size, like 64px or 256px in height, but they can be mixed together as long as your grid can match their placement.
As a bonus, it is possible to make variations of the same Trim Sheet and swap them out on a building for example. One sheet can be a generic metal trim and the other sheet can have a wood trim and as long as they all line up you can just exchange one material for the other and create a ton of variation on your buildings without the need to touch the UVs at all. Though this is something that can be used in very large environments and is not necessary all the time.
Making Trims in Substance Designer
I put together a little demonstration below of how I made the Trim Sheets consistent with a specific grid in mind and also how I created a simple pattern in SD and masked it based on the pre-established grid.
Note: For any subsequent trim. I couldn’t figure out a way to move them consistently and easily to their destined line on the trim and just used a Transform Node to move them roughly in place and mask the top and bottom off with the explained method which works fine in most cases.
Applying Trim Sheets in Maya
Here is a little breakdown of how I set up Maya’s UV Editor and which tools I mainly use to make my workflow much smoother.
One of the tricks I discovered is to utilize the Unfold Along command. As you can see in the little demo, stretching your wall in one axis with the Preserve UVs turned on works 9/10 times, but only as long as all the strips are lined up in the same direction.
If one of them goes in, let’s say up and down instead of left to right, it will move the UV in the wrong direction in the UV Editor.
The only option would be to stretch the object and fiddle with the shells by hand, which is a huge pain and not very accurate. Using the Unfold command will more often than not move, rotate and distort the UV as it doesn’t care about perfectly straight shells rather than a perfectly stretch free result.
Using the Unfold Along command will mitigate this problem and usually give you very good results with this issue.
Below you can see how I laid out the UVs for the floor and the walls.
Tip: using the RMB on the UV display button will give you a random shell colour which can be useful in certain instances.
Personally, I found it quite difficult to find decent information on how to make and use Trim Sheets properly. I really learned about them when I started working at Ninja Theory with the guidance of my senior artist as well as just trying (and failing) at making and using them. After a few attempts, you get to grips with what really works and what is just too specific to really make good use of it.
If you want to learn a bit more and confirm my view on Trim Sheets you can have a look at the tutorial series by Polygon Academy.
Lighting in Unreal
For this scene, I wanted to mainly light the whole scene with just the incoming sunlight from the window which I set to 113lux to create enough bounce lighting to fill the room almost completely. Also, I usually suggest to use the temperature setting rather than changing the colour freely to stay realistic and only use the colour wheel for artificial lighting.
Most of the ambiance comes from the exponential height fog which I heavily tweaked to create a more “mystical” feel of the scene as a completely realistic lighting felt too monochromatic for my taste.
The most important settings for a high-quality bake are the Static Lighting Level Scale and the Indirect Lighting Quality which should be changed in conjunction otherwise the bake will result in a lot of artifacts and a very long calculation time. As the Static Lighting Level Scale decreases the Indirect Lighting Quality should go up in full numbers.
I found that these settings will give me the best result which doesn’t mean it’s a set option for every scene and should be tested for each project to get the best result without wasting time.