Project & Concept
“Cultist” is my final project for my Intermediate Term at Think Tank.
In this article, I am going to show how I created this project based on the concept of “Cultist” by Tomek Pietrzyk.
I knew from the start of my term that I wanted to create a full character to showcase my skills and improve in other areas. I had two goals in mind: improving my clothing texturing and enhancing my look dev skills.
When I came across the concept, I immediately knew that I wanted to work on it. It would challenge me to texture different clothing materials and render them in a dark scene.
- Zbrush: High-poly sculpting and posing
- Marvelous Designer: Clothing simulation
- Maya: Retopology and UVs
- Substance Painter: Baking and texturing
- Marmoset Toolbag 4: Lookdev, lighting, and rendering
- PureRef: References
- Photoshop: Compositing
References & Inspiration
Gathering references is one of the most important steps of a project, especially when you’re working on realistic stuff. I analyzed the concept and studied the various accessories, fabrics, as well as the skin, eyes, and hand details.
My main sources for references are Google Images, Pinterest, and Instagram.
For the character’s face, I mainly used Gabbriette’s face as inspiration.
Something that has helped me a lot in ensuring correct anatomy and face proportions is overlaying a skull reference image over the face of my main inspiration in Photoshop and using Liquify to match it with the face structure of my model.
I usually create references from the front and side views.
I gather several references for every object and also research if there are available materials that I can use as a base in Substance Painter, which helps save time during the texturing process.
I also compile helpful tutorials from YouTube, articles, and breakdowns by other artists that I can implement in my work.
Before starting any project, I import a base mesh into Maya and Marmoset to ensure proper scaling in the world. This is crucial for later stages such as sculpting details, texturing, and look dev.
I blocked out the character in Zbrush, focusing on the face first to establish proportions and achieve a realistic look. I started with a sphere for practice. I always prioritize placing the eyes and blocking out the hair as soon as possible because they provide immediate feedback on areas where the face might appear unnatural.
Eyes are particularly important in making the model look real. Once I’m satisfied with the results, I used R3DS Wrap to wrap a base mesh from 3dscanstore. This provided me with a clean topology, a displacement map, and an albedo map that I could work on later.
Since the character is fully clothed, I made some changes to the basement to use it as a foundation for simulating the clothes in Marvelous Designer.
After achieving satisfactory results with the simulation, I performed retopology and UV mapping on the clothes in Maya, following this tutorial by Olivier Couston. This allowed me to obtain a clean mesh for further work in Zbrush.
The idea is to retopologize the flat mesh you import from Marvelous with Quad Draw, and then transfer the attributes from your flat mesh to your new topology to get clean UVs.
Next, import your simulated mesh from Marvelous, which should have the same UVs, and transfer the Vertex Position using the UVs as the Sample Space, so your new topology takes the shape of the simulated mesh.
Now, you want to merge the different parts that need to be stitched. If you’ve done a good job retopologizing, this should be easy. It may take a couple of tries to get it right, so go back and forth, move around your topology, update the UVs, and transfer your attributes again.
I followed the tutorial step by step, except for subdividing the mesh and giving it thickness, since I preferred projecting all the details and using Panel Loops in Zbrush.
High-Poly & Props
Back in Zbrush, I started adding details to the clothes and modeled the rest of the accessories. I like to work with subdivisions because it gives you control over shapes and volumes in lower subdivision levels and small details in higher subdivision levels.
For the boots, I like to work from the bottom to the top. To save myself the pain of retopology, I use polygroups and Zremesh it to get a decent low topology, and work from there with subdivisions. I was heavily inspired by this tutorial by Follygon to make the boots.
I like to make the shoe holes with booleans, so I can easily see where the shoelaces should be placed. I then either bake the holes or just paint them in the height map in Substance Painter.
Topology & UVs
After the sculpting and modeling phase was ready, I exported all the meshes to Maya for retopology and UVing. I also took my time to optimize the mesh by deleting faces that won’t be visible and some edges. I used a total of 6 UV texture sets:
- 1 for the face
- 1 for the eyes
- 2 for the clothes
- 1 for the shoes and accessories
- 1 for the feathers
Baking and Texturing
I baked all the maps in Substance Painter. I divided my Substance Painter projects into three projects: face, clothes, and shoes and accessories. While texturing, I used the Studio 02 environment map for very neutral lighting that won’t mess up the colors of your textures.
For the texturing process, I used a combination of procedural and hand-painted approaches. As soon as I am happy with the textures, I immediately load them in Marmoset Toolbag 4 and create a very simple scene to make sure everything looks good.
I also used the ACES tone mapping in both Substance Painter and Marmoset, since I noticed early on how different the textures look between these two programs, and using this fixed it. No more guessing how the colors are going to look in another program!
For the face, I used the albedo map from the 3dscanstore basemesh as the base color.
I removed her eyebrows and any unwanted skin details, and I used an HSL filter to make her paler and give her duller skin. I had different layers for redness, darkness, dirt, eye makeup, and veins.
The black veins were created using a procedural approach, but I manually removed and painted some of them to match the concept. I slightly increased the height so they would protrude a little bit.
I wanted to ensure they didn’t look like paint on her face and made sense in terms of how our veins are laid out underneath our skin.
For the hands, I followed the same process. I had different layers for redness, black paint, and blood. I played around with the roughness values to make the black paint look a bit drier and the blood appear like fresh wet blood.
I am still quite a beginner when it comes to texturing clothes, so I used smart materials from Substance Painter to understand the process of each layer, masks and filters.
I played around with changing the colors and added my own layers of color variation and painted the dirt.
Even though almost every fabric in the reference was very dark, I wanted to ensure they didn’t all look the same color and didn’t feel like the same fabric.
The clothing Substance file became heavy quite fast, so I separated her scarf into another project and used the same method.
I would have loved to learn how to make my own feathers, but due to the short timeframe, I decided to use the crow feather textures from Quixel Megascans.
They provided all the necessary maps to make them look good in Marmoset. I created the cards in Maya and manually placed them on the character. I had a total of 4 layers of feathers, starting from the bottom and getting closer to her face.
The hair, brows and lashes were made with Xgen. I followed the amazing tutorials by JHill on Youtube to both create the hair in Xgen and rendering in Marmoset.
Since the character’s hair was very short, I used very simple guides. To create the middle part of the character’s hair I painted a region mask. This helps the groom to follow the guides in the direction you placed them in.
I used different noise and clumping modifiers to make the hair not look too flat and add some flyaways. When I was happy with the groom, I converted the groom to geo and exported it to Marmoset. This is the only part that’s not game ready since the groom is a very heavy mesh.
I posed the character in Zbrush using the move gizmo and fixed minor mesh errors.
Then I exported this newly posed version to Marmoset and reapplied all the materials. I went back and forth several times here because I wanted to ensure the character’s eyes were looking directly into the camera.
Rendering & Lighting
For lighting, I kept it minimal because I wanted the scene to be very dark and ominous. I used rectangular lights for my key light and rim light. I also added some fill lights to draw attention to the face, hands, shoes, and necklaces.
I set up different cameras to showcase my character from different angles and to show details like hands and shoes, which deserved some attention too.
As mentioned earlier, I used the ACES tone mapping in the camera settings and slightly increased the exposure to compensate for the darkness. It gives everything more depth.
I used the floor asset from Quixel Megascans because I wanted the character to stand on something. The rendering settings in Marmoset are very straightforward, but I turned on Ray Tracing. It instantly made my character look more alive and the lights more realistic.
Although the rendering time increased significantly, it was worth the time.
It was a very fun and challenging project that helped me improve my 3D character art skills and learn new techniques. Some things can be improved, but overall, I am proud of how far I have come and only hope to get better.
I want to thank my supervisor Aaron Colman-Hayes for his guidance and feedback throughout the term and this project.
I also want to thank my friends and family for their support. Many thanks to the GamesArtist team for the opportunity to write this article and show my process!
I hope you find this helpful, and if you have any questions about the workflow, please let me know. Thank you for reading!