Davi Amancio Souza has shared the breakdown of the Soul of Cinder project, explained why he decided to recreate the character as an actual person, and revealed his workflow behind the character's face, hair, armor, and weapons.
Hello, my name is Davi Amancio Souza. I am a Brazilian Character Artist, student, and freelancer, still trying to find properly find my footing in the industry. I dabbed for the first time in 3D in 2015 and started studying it for real in 2017. I have been learning… honestly from all over the place, the only source I keep going back to and actually follow the classes accordingly is the Rafa Souza Academy course (it’s in Portuguese, though), other than that it was all GDC articles and presentations, YouTube channels, or whatever else I could get my hands on, really.
Inspiration and References
My intention when creating that character was two-fold, both to pay homage to one of my favorite video game series, the Souls series, and to make a full fantasy character that could be used as the main character or important NPC on a next-gen game. I wanted to explore the workflow for it from beginning to end. With that, I wanted to see how far I have come since I last created a full fantasy male character for a game. Which I did quite a few years ago.
The main inspiration for this piece was, obviously, the Soul of Cinder boss from Dark Souls 3, but I didn't want to just recreate it as it is, for a few reasons. First, I wanted to create at least some of the concepts on my own, the shapes, the proportions, the face, some of the detailing on the armor – things like that. Besides that, I thought it interesting to revisit the character as a full-fledged knight with its own identity rather than the faceless amalgamation of Lords' Souls we have in the game (which, I will add, works wonderfully, I wanted to do something different, not better).
My references included strongmen for the body and overall shape, Luciano Pavarotti for the face, something I decided on after doing a portrait sketch of him since I thought it was an interesting look, and Beric Dondarrion, from Game of Thrones, for the hairstyle – I wanted to go for that messy, unkept feel.
The Face and the Hair
Creating the head for the model was quite a challenge, not only because it always is in a way – portraying emotion and the head structure in a convincing and interesting way is a great challenge in itself – but also learning the workflow for using MetaHuman as a base.
First, I created the blockout in ZBrush, which I did not separate from the body, in hindsight, I should have, but I was not so sure what I wanted to do with it for most of the project, and having it all as the same mesh made it easier to change around if I needed it attached.
Either way, I then used the ZWrap plugin to conform the 3D Scan Store's body model to my sculpted mesh to have a nice underlying topology to work with and the skin surface details. I transferred it to a separate layer by using a subdivision and morph target workaround, which I can't really go into detail here, and added my own surface details on top of that using extra layers.
After all that work was done, I had to conform it to the metahuman model, for which I used the Mesh to Metahuman workflow provided by Epic games, the thing is, it is far from perfect. I don't know the technical reasons, but quite a bit of the detailing gets washed out in the process, getting rid of imperfections and some of the shapes that make the character's head convincing, so, I had to figure out a way to get that back.
For that I exported the MetaHuman model from Unreal and reprojected my sculpted model back to it in ZBrush, so the shapes would pop back into place. I used that as a morph target on top of the MetaHuman model, so I could keep using its rig. I intend on releasing a video better explaining the process sometime soon.
For the hair, I initially blocked out the idea using ZBrush, sculpting hair using mass. Then I decided on trying out grooming in Unreal Engine 5 for once, not because I don't know how to do hair cards, but quite the opposite, I didn't know how to do grooming using XGen or similar software and wanted to learn, especially since we might need to use that kind of technology sometime in the future.
It was quite a bit of fun, even though I still have tons to learn about it, one thing that helped me was trying to keep organized the same way I do when sculpting hair from mass or making it from hair cards. I organized the overall flow of the hair and established the primary shapes first, then started breaking that up into smaller and smaller shapes. Unfortunately, some of that primary shapes work is something I didn't really document, so I just have images from the secondary sculpt onwards (which you can see below).
The facial hair is something I was going to do from scratch, but MetaHuman had good beard and mustache models that looked pretty much exactly like what I would do, so I used them. All I had to do was just to rebind them to the model with the new morph target.
The Armor and Weapons
Most of the work I did on the props was pretty straightforward: I blocked them out from a base mesh, be it a sphere, or whatever else, ZRemesh them, detailed, added bolts, or whatever – and it's done, the props were ready for retopo.
However, there were exceptions. Wherever I wanted that coiled detail, for example, the chest and some parts of the shoulder plates, I would use an Insert Mesh I created using the Helix primitive and add that using the Insert Mesh curve function. And then there's the case with the sheath in which I initially sculpted the details on top of the upper part but decided to extract them and work separately for better definition.
Underclothing, such as the cuirass sculpting was pretty simple as well, especially since it wasn’t an especially important part of this model, it was a simple matter of extracting the parts from the body model, making it fold properly enough, detailing using a seam brush to wrinkle it. Then I duplicated that and made the chainmail, for which I did take more care since it would be on the surface, and made sure to make the collision with the leather straps evident, to give it volume and cohesion for the piece.
What I did find a bit challenging in fact, and I banged my head for a bit was how to properly make the leather straps, using a curve Insert Mesh was proving to be a headache more than anything else, but the solution was actually simple, instead of using an Insert Mesh, I made a single leather strap, longer than needed, in fact, with its final topology, unwrapped it, detailed with a few subdivision levels and got it in place using the curve deformer instead, if it was too long for a certain use, I would just cut the tips out. Worked like a charm and my headaches were gone.
One thing I used a lot was mixing layers and Morph Targets for detailing and damaging the assets, it's a fast workflow and makes reiteration a breeze. A friend of mine, Giovane Henriques, taught me that in fact. So, I would carve in a section I wanted to be damaged, and I would morph the edges back using the Morph Target brush with a hard Alpha. That can be done without layering but using them helps to not lose data.
Retopology and Unwrapping
I used Maya’s Quad Draw for retopo and RizomUV for the UV layout, no secrets here, I tried to keep in mind which parts of the model would be deformed and which wouldn’t, adjusted my edge loops or lack thereof, accordingly, and compared the low-poly model to the high poly model in comparison to the silhouette. One thing I learned recently is to add more topology on the border of rounded non-deforming objects, such as the shoulder plates, it’s a nice way of doubling the resolution just where needed.
I tried to make sure I could use up as much UV space as possible, most of the time, that is. There were three parts of the model where I didn't really take that into consideration that much: the lower part of the Scapula's fabric, the chainmail, and the clothing beneath the chainmail. For these, I chose to give preference to lower distortion and a layout that more closely resembled how the fabric would be cut, the reason for that was to make sure the patterns and textures would wrap around properly, especially since they didn't need that much resolution anyway.
Besides that, I tried to make as many edges aligned to the U and V axis as possible whenever that wouldn't distort the textures too much and tried to keep some degree of organization in mind. Keeping pieces made of leather close to each other, buckle pieces close to each other, and so forth. Which wasn't always possible, but it helps with the texturing process.
I started with baking in Marmoset Toolbag 4, where I was able to combine the parts that weren't touching into distinct groups to avoid intersecting projections, and other problems later. To do this more easily, I saved each high poly model to a different .obj and saved the low-poly model with its components separate into different parts as well, so I could hide and show them according to what part of the model was being worked on in each group.
Texturing was done in Substance 3D Painter, I used the surface assets from Megascans for the base textures, such as iron, leather, etc. And tried to work in layers as much as I could, describing the distinct types of leather, for example, from raw, to tanned, so I was able to reveal them with masks to show wear and tear.
On top of this, I added layers of dirt and blood, which were masked out using a combination of generated masks and hand-painted splatters. I also used Megascans’ imperfection assets such as grunge and scratches to aid in the masking of certain effects, such as the distinct layers of aging on the metal. All this combined to make up the final effect.
For the fabric, besides that same type of treatment, I also made a layer using a weaving pattern to make a transition from undamaged to damaged fabric making it look "thinner" in places. And for the embroidery, I used a plugin, available on ArtStation called Patches Generator by Bao Le. Finally, I added Normals detailing inside Unreal with a repeating fabric pattern.
For the final renders, I brought everything together inside of Unreal Engine 5, used some Megascans assets to create a quick scene, as if inside of a cave of sorts, made a quick bonfire in ZBrush using some skeleton assets I had laying around, making a mound of ash, modeling a coiled sword, used the default fire Niagara fluid that ships with Unreal.
For lighting, I added a key light up top, to bring attention to the upper portion of the character, added some blueish light for the rim, and a fill orange light for mood and to increase the bonfire's effect. I rendered everything with Lumen's global Illumination and Reflection systems.
That being said, I also made a few renders on a studio setup using lower resolution textures and no Lumen, since DirectX 12 (which is needed for Lumen as far as I can tell) was proving to have really poor performance, on my PC at least, so I could show how it looked on a more realistic use case, and the difference isn't even that great (although, yes, Lumens’ reflections look really crisp).
There was no post-production to speak of it being a showcase of game-ready visuals. I avoided doing anything outside of the engine so what you see is what you get, in a way. I only upped the resolution and AA sampling for the DX12 version of the renders but did it on the DX11.
I had a lot of fun working on this project, and there are a few things I learned/reinforced while working on it: It's not the best idea to rush in when working on a portfolio piece, in fact, I took longer on this project than strictly needed. I didn’t even do it all at once since I had a handful of jobs in the meantime.
I redid a lot of stuff and tested out different workflows, if I thought of a better way to redo something that was already finished, I would go and try that out, it's your project, of course, you shouldn't delay it for no reason, especially if you're looking for a job, but personally, I think it can be a good idea to try and learn as much as possible with portfolio pieces, according to your time availability.
One other thing I believe to be true, at least for me, is to not be afraid to ask for feedback, while still being smart about it. Asking for feedback from more experienced artists is great and all, but if you just have them fix everything, you won't learn much from it. Try to not just listen to feedback, but also digest it, give your own spin and learn from it. That being said, I would like to also thank here 3 artists that were especially helpful in this regard, Giovane Henriques, whom I also mentioned before, Bento Ribeiro, and Gabriel Bona.
You may find these articles interesting