Anthony Trujillo was kind to give a breakdown of his award-winning stylized environment. Great look at the sculpting, texturing and the beautiful lighting setup.
Hello! My name is Anthony Trujillo and I am a 3D environment artist from Los Angeles, CA. I graduated from the Art Institute in Santa Monica in 2009. My passion for 3D art began in college and I have loved creating props and worlds ever since. One of my first jobs was at WayForward Technologies and I helped work on DuckTales: Remastered, which was awesome, as the original was very special to me. I’m currently at WhiteMoon Dreams where we just released StarBlood Arena on PSVR.
My main goal with the ArtStation Civilizations: Lost and Found challenge was to actually finish. I didn’t want be overly ambitious and not finish on time, so I focused on finding a relatively small scene that I knew I could finish with the polish that it needed. I decided on this awesome concept by Lena Doronina.
Overwatch and Heroes of the Storm were my main inspirations going into this challenge. I would always be referencing the Blizzard style throughout the process.
For my blockouts, I like to get my models in engine as soon as possible so I can start setting up basic lighting and find some nice camera angles. This helps me visualize the scene better and I can start adjusting scale and proportions. As you can see, my initial scale of my scene was off. The shrine prop was too small on the platform.
Modeling and Sculpting
My main goal with modeling was to keep everything chunky and to try to avoid any straight lines. This meant tapering everything I could. I do a lot of the modeling in 3ds Max. Once the models are ready to Zbrush, I use the “double turbosmooth” method or Sub-D it to get a really clean, smooth model to sculpt on. Once in ZBrush, I apply an inflate 1 to the whole model, then a polish from the Deformation tab. I learned this from Michael “Orb” Vicente’s talk at a ZBrush summit–it helps smooth any sharp edges and keeps things chunky. From there, I use Trim Dynamic, Orb_Cracks, a slash brush, and clay tubes to add detail.
For the floor and the front plate, where it has an intricate flower pattern, I use another one of Orb’s techniques found here. I created the 2D design in Photoshop and convert it into an alpha to use in ZBrush. This method usually works really well.
The biggest challenge for me was trying to keep everything chunky and to really push the silhouettes.
The grass is fairly simple. I am not using any normal map for it. I start by painting two grass clumps in black and white, then add a gradient map adjustment layer to get my colors. In the alpha, I have the grass fade to transparent as it meets the floor to make the transition not so harsh.
My texturing method for stylized work is very heavily influenced by Fanny Vergne‘s technique, which I first saw a couple of years ago in Vertex Magazine. I rely on my bake maps to get a really good base that I can then take into 3d coat and polish off. I use Knald or Marmoset 3 as my choice in Baker, and bake a Object space normal, Curvature, and AO. Sometimes I use a Heightmap depending on how much depth my sculpt has. Here is an example of my workflow. A lot of it comes down to playing with blending modes and opacity per asset.
I have been a really big fan of Toolbag since it first came out; I love how user-friendly it is. When I saw Toolbag 3 had added Fog and Global Illumination, I wanted to use this challenge to test them out. One of my favorite features of Toolbag is being able to load in PSDs that auto update when I make changes. This makes for really quick experimenting and iterations.
For the lighting, I picked a random sky and set it to a really low brightness, just so everything wasn’t pitch black. I started adding spot and fill lights. I knew I wanted to have the god rays coming through the ceiling, but when I started the project I wasn’t sure how I would achieve them in Toolbag. My first thought was to have planes with alpha to fake the god rays. But after adding fog to the scene, I found it kind of just turned my spot lights into god rays, as well as adding some great atmosphere. This worked great for the camera angles I was using. The only problem I had with this method was when all the lights started overlapping in certain views. The result was an extremely blown-out light source. Another problem I had was that you could see the rays were cone-shaped. I solved this by duplicating the spotlights and staggering them further upward from the beam to force it to stay thicker.
Overall, I am really happy with this project. I wanted to create a beautiful scene with great shapes while keeping it simple. I tried to remember to always be checking my silhouettes, not overdoing the textures, and keep everything chunky.
Chong Zhang is a character artist who was kind enough to give us a thorough breakdown of how he set up his character, Mina, in Marmoset Toolbag 3.
“Marmoset Toolbag 3: A Pocket Camera With DSLR Quality!” – Chong Zhang
I’ve recently resigned from my position at Virtuos, a great outsourcing company where I spent 10 years learning most of my industry knowledge. This finally gave me a big chunk of free time to do some hands on artwork, which I’m always eager to do because most of my job at Virtuos was on the management side.
Now I needed a subject. I can’t write stories or invent characters, so I tend to choose one from the movies I like. I’ve always liked Coppola’s Bram Stoker’s Dracula. While it’s not a perfect movie, Winona Ryder’s beauty, Gary Oldman’s performance and Annie Lennox’s song make the movie shine. Since I’m not a musician and Gary Oldman just received an Oscar, I thought I would represent Winona Ryder’s beauty. Finally, my strong love of the story, character and emotion is what helped me get through the long production period.
Why Marmoset Toolbag 3 (MT3)?
The answer: the engine is specifically designed for individual artists. For that to work, it must have certain qualities.
Ease of Use
I’m an artist without a technical background and do not have a team of technical artists to help me solve my problems. Marmoset Toolbag 3 makes it easy to pick it up and go. When I do have a technical concern, the community on MT3’s Facebook user group are there to help. On the few occasions where I was facing issues, I asked my questions and received responses instantly. There are no complicated shaders and not much optimization is needed. Everything is well placed and the focus is on what an individual artist really cares about, leaving time for creativity and boosting quality. This leads us to the next point, quality.
MT3 is one of the best engines for visual quality because Marmoset understands the needs of an individual artist and have designed Toolbag to make their work look as good as possible. Although, you still have room to adjust the balance between quality and performance. But we don’t care about performance too much since we’re not using MT3 to present an open world game, right? 🙂 So everything has been set everything to high-quality by default. But do we need a super machine to run it? This leads us to the next topic, performance.
The scene I’m about to show is roughly 200k tris and includes 800MB textures. I know I could have optimized a lot, however I did use .psd files to save time. It runs smoothly on my 3 year old Dell T7910.
Okay, let’s talk about how MT3 helped me complete the production of my character.
I’ve tried baking in several programs and they all have their advantages. However, the reason I chose MT3’s baker is because it provided me with the opportunity to adjust my baking cage’s offset by painting weights on the UVs. The offset information is stored in my MT3 file as a map, which means that every time the high poly or low poly meshes are updated, the offset map remains unaffected. Another handy feature is the ability to re-paint weights and see the result update instantly with no rebake necessary. To make this possible, MT3 stores the updated map in the cache. Once you’re satisfied with your results, you can bake to save the maps on your hard drive.
The general process I use for baking is:
Import the low poly and high poly meshes into MT3 and set up the baking groups in the correct hierarchy
Bake a test version of the normal map on the low poly mesh. At this stage, I don’t refine my baking cage’s offset, so my first bake will likely produce many errors.
Select the lowpoly sub-group and adjust the Min/Max Offset values until you have a fairly good result with most of the errors removed. A few errors will remain here and there.
Click the Paint Offset button and begin to paint out the errors. Painting with a high value pulls the cage out and painting with a low value pushes the cage in. The point remains: you won’t need to rebake the map at all and the result updates instantly.
Once I have the perfect result, I start baking the rest of the maps. (AO, Thickness, Curvature…etc.)
It’s a very effective process when you become familiar with it. The best part is when you want to make significant changes to the model, you can simply re-import your high and low poly meshes and bake again without needing to go through the process again. The offset information has been stored in the MT3 file. There is a more in-depth tutorial created by the MT3 team to cover the basics of baking, however I simply wanted to emphasize how you can benefit from using it.
I simplified the silk material to be a highly reflective material with a fuzz and anisotropy effect. MT3’s shader has all I need to represent this. Here’s the shader breakdown:
Nothing fancy. The important part is to change the Diffusion shader from Lambertian to Microfiber for the fuzz effect. I’ve also changed the Reflection shader from GGX to Anisotropic.
I based my skin shader on the tutorial video provided by the MT3 team. Here’s the breakdown:
I want to emphasize that it is actually the Gloss and Cavity maps that make the skin look more detailed, so don’t hesitate when creating them. And don’t forget to take advantage of the Detail Normal Map.
Eyes are difficult for me and I haven’t found the best process for them, but this is my breakdown:
The eyeball consists of three meshes:
A. Wet line (which exists between the eyeball and bottom eyelid)
B. Reflection/Refraction ball
D. I’ve applied a flat 2×2 px texture to enable the Displacement shader. The general idea is to make the Reflection ball slightly bigger than the eyeball since both meshes are the same. Alternatively, you can use a bigger mesh for the Reflection ball and avoid using the Displacement shader.
E. I’ve used a Displacement map to create a concave pupil.
F. The AO map simulates the subtle ambient occlusion caused on the eyelids. You’ll need a separate UV channel here.
There are a couple of things that make me unhappy with the current approach:
I’ve assigned the Refraction shader to the whole Reflection/Refraction ball mesh. This is incorrect, as the cornea is the only part that has refraction and this causes some problems from certain angles.
The AO effect is not strong enough and can’t be increased using the current approach. Because my AO map is in the AO channel, the AO effect weakens once the light hits it. This is natural to AO.
I’m hoping we can find a better way.
It’s worth mentioning that MT3 supports the Alembic format. This was perfect for my scene since my particle animation was generated in 3ds Max as a vertex animation. I’ve simply exported the particle asset and imported it into MT3. Camera animations can also be exported from any other 3D apps, or you can animate your cameras directly in MT3. In my case, I’ve animated my cameras inside of MT3. The animation tools are as intuitive as other features in the app, especially when you have some basic knowledge of keyframe animation.
I almost forgot to mention lighting! This is my simple setup for lighting the scene. I‘ve added a dominant Spot light, two rim Spot lights behind the character and two Omni lights to light the face up a bit.