Shaafi Ahmad did a breakdown of his latest project Contemporary: cloth simulation in MD, zippers, retopology, texturing, and presentation.
Hello! My name is Shaafi, I’m based in Lahore, Pakistan, and I’m currently doing my undergrad in communication design. When it comes to the 3D work I do, I’m completely self-taught and I hope to become a professional in this field one day.
Perhaps, I haven’t found my niche yet but I enjoy creating a wide spectrum of things —19th-century daggers, a tea jar, a military backpack, and now a modern outfit. I hope to dabble in hard-surfaces like aircraft in the future too.
I started back in 2013 when I discovered Blender and began chipping away at it but I’ve picked up the pace only in recent years. In fact, I remember the exact time I found out about Blender — American Ninja II was on TV and I was sitting in front of the computer amazed at the idea of a free 3D application and even more at the fact that it worked (barely) on an old dv6000 laptop.
About the Project
My Contemporary project started as a freelance commission but I quickly realized that I could make it into a portfolio piece and, in the process, push my skills in creating garments. I've wanted to do something with apparel for a long time. In this project, programs that I thought I knew pretty well were used in different ways than before and I also incorporated new tools like Marvelous Designer.
Since I use a pretty standard workflow and pipeline I’ll mainly comment on tips and things that have really helped me on the way. I’ll leave the step-by-step creation aspects to the tutorials since there are a ton of them for ZBrush, Blender, etc.
When working on the garments, not only do you simulate the clothes but you also stitch them together. Once you start creating in MD, you have to think about seam lines, how the shape of the pattern will affect the draping of the cloth, and so on and so forth.
Since you are often trying to copy a garment from real life, having an accurate pattern reference is useful. There are some fashion patternmaking technique books that are great resources.
The dress pattern is fairly simple. To make the dress frills you need to sew a larger (horizontal) pattern piece to a small piece so the extra cloth can fold. In the images, you can see how a larger pattern acts compared to a smaller one.
The belt and knot were an approximation. In this instance, I did not use one long pattern that was looped and tied; free-sewing different pieces together with the simulation was enough to make a base to work from.
For the jacket, I followed a great tutorial by Madina Chionidi but did a couple of things differently: I did not create a layer clone under or over since that would have complicated retopology and sculpting later. Stitches were added in ZBrush.
I exported the jacket to Blender after remeshing it in MD to get quads. It’s not necessary to export it with a low particle distance setting (more polys). Since we’re going to be adding details and more folds in ZBrush anyway, we only need the general feel and folds.
In Blender, I did some cleanup and welded parts like the arms to the main jacket. To add thickness, you can either add a solidify modifier in Blender or use Panel Loops in ZBrush.
If you get intersection errors with a higher thickness level, change the elevation; in this case, I set it to -100.
The handbag was made through plain old poly-modeling. The bag flap was fused to the main body and details later baked.
The bulk of the retopology was carried out in ZBrush with the Zremesher and Guides brush.
Before retopo-ing the jacket I removed the thickness, otherwise, I was getting spirals in the mesh.
Zremesher is very useful but not perfect. In the screenshot from ZBrush, it seems like the topology is all right but on further inspection, it has spirals going all over the mesh.
To avoid this, either remove the thickness/double-sided mesh or undertake symmetrical retopo, but that wasn’t an option for me since the folds on each arm were different. After auto-retopo-ing to get a polycount I was happy with, I went to Blender, removed the thickness and re-imported the jacket into ZBrush. Working with guides is an iterative process and it will take a couple of tries before you get something decent.
The Polypaint option was also used to get higher geometry density at the break line where the collar folds open.
The zippers which couldn’t be baked down to the jacket were instead put on alpha cards. The bag chain was on alpha cards too. For alpha cards to work well you need to repeat them so you can maintain a decent pixel density and make them seamless. After that, you can use a combination of the array and curve modifier to make chains/zippers you need and place them anywhere.
I started texturing with an ACES color profile. You can get the standard and UE4 profiles from Brian Leleux’s Gumroad. Big thanks to him.
With ACES, I can keep a consistent look from SP to Marmoset. It’s a wide gamut color space, more than sRGB. Because ACES reacts closer to film, you can push saturation and light intensity further.
The leather material is a combination of previous projects and other smart materials. You really just need to layer it; initially, I added too much, it became bloated and I had to remove a lot of layers. It’s very easy for things to get visually overbearing and congested. Jackets are shiny and some roughness that you’ll see as the light hits them from different angles.
I added a light brown curvature color to bring a slightly worn look and a secondary color.
The jacket is not pure black — it’s darkish grey.
A subtle leather texture will add to the final touches. Because my final renders had 8K textures I kept the leather intensity low. If I were to go with a smaller resolution, I’d increase the intensity of the leather. Otherwise, it won’t be noticeable.
For the dress, I used a super handy layer called “color tweak” from the smart material Fabric_skinny. Not only does it provide a nice fabric normal but it also adds AO into the weave. At a higher scale, it mimics cloth very well.
For the spots, I played around with mask generators and black and white maps like gaussian spots. Tweaking the balance, scale, and contrast allowed me to get what I wanted.
For both texture sets, I used filters to tweak the overall final look. It’s much easier than going layer by layer to change reflective values, etc.
Animation & Posing
It was my first time incorporating a real animation into my work and I used Adobe Mixamo for it. It’s free to use and has a large library of mo-capped animations.
It’s user friendly and you can set it up quickly. After you’ve uploaded your character, which should be in an A or T pose, Mixamo will take care of the rigging and after you’ve selected an animation you can download it. It can be directly loaded into Marmoset and it will work.
Since everything is already rigged you can bring it into any 3D modeling software and make custom poses.
I did something similar and made certain animation frames into static poses. To do this, select everything and do the following two steps:
- ALT+C > Mesh from Curve to apply all modifiers.
- ALT+P > Clean and Keep transformation so the armature doesn’t affect the clothes anymore.
After this, you can export your outfit.
Depending on the type of outfit, you might need to edit the bone weights if you get strange deformation on the clothing. For some reason, the upper right arm was deforming differently from the left one. To fix this, I had to edit the weights.
Preparing the Renders
Rendering in Marmoset is my favorite part of any project. In this step, everything will finally come together and become presentable.
3D rendering is a lot like photography. If you’ve done photography, you’ll notice a similarity between the two, not only in the technical aspects like focal length or depth-of-field but also the rules you have to keep in mind. It’s important to remember that the differences between fashion or editorial photography still exist in both media. For example, capturing architecture has its own standards. When capturing something life-sized you have to think about which shots are even possible. A 3D camera can go anywhere but a human can’t.
Keeping in mind the physical constraints will lead to better renders I believe. It’s the same as if your face was lit from below by a flashlight as opposed to natural lighting from the sun. Immediately, someone will notice the unnatural angle of the light from the flashlight. With this in mind, it’s important to remember the constraints of real cameras and the flexibility of 3D cameras and to balance between the two to try and capture the best elements of both.
Post-processing comes into play while developing the renders and with it, you can decide what type of mood you want to portray. There’s also the question of staying true to the medium and/or form. Should you heavily edit your renders in Photoshop or just stick to minor edits? But that’s another debate in its own right.
There are a few things I like to do during rendering:
- Switch the tone mapping to ACES.
- Slightly lift the shadows. Not everything is pure black.
- Add a slight amount of grain to get that photo look.
- Maintain a focal length of between 40-55mm. Lower settings like 18mm give too much of a warping “fish-eye” effect, I believe.
- Fix the settings for maximum quality — Resolution 2:1 (Double), 16x anisotropic filtering, enable GI, shadows to ludicrous and local reflections if needed. Higher sampling if the default 16x is not cutting it.
For every project, make a post-effect preset. After you have a small library of presets you can quickly load them into a scene to see what works and how everything reacts.
Being organized is important for staying on track so each shot I set up is self-contained with the camera, sky, and models. For each angle, I rebuild the lighting or edit it heavily.
I stay away from 16:9 ratio renders like 1980x1080 since I’m not capturing a cinematic movie.
For this outfit, I didn’t plan to do fashion style renders, just something with a couple of poses and harsher/studio lighting. With every angle, I wanted to show everything I had made, and yet make every shot substantial and complete so that it could be shown on its own. To do this, you need breathing space and you have to frame it just right. Unfortunately, Marmoset doesn’t have a grid overlay option which helps you position things so you have to guesstimate it a bit.
With this side-shot render the breathing/negative space on the left and right sides is not equal but the arm compensates and balances out the left side. If there was more negative space on the left side the focal point would be lost.