Making of Kim Obsidian Light

Hi everyone, I am Sabrina Suppa and I am a senior Modeller based in London and currently working freelance as a Character artist and Digital Fashion creator.

In my free time I started to work on a personal project called Obsidian Light  in which I am showcasing a collection of digital models of different ethnicities wearing contemporary outfits.

In this article I will be talking about the process of creating my second addition to the team, “KIM_02”.
It took me approximately 2 weeks to get to the final renderings. My goal was to be able to speed up the process when starting on a new character and that was possible since I re-used the same asset as my previous project and morphed it into the new body.
As references for the face and outfit I am using a concept I made with Midjourney.

The project is a full body character, but I focused on rendering a close up of the face and bust for the moment.


Each character of the collection shares the same base mesh, UVs, textures and some parts of the groom.
I started with the base mesh I used for REN_01 so the high poly of the body was already at a good stage after tweaking the proportions.

As I started from a different facial structure, I first tried to lock in the main asian features on Sub Level 1 and then kept sculpting all the way up the subdivisions to keep adding more shapes.

To check if I was going in the right direction I did a lot of back and forth between ZBrush and Maya to better visualize proportions and adjust volumes.

To be able to use VFace on my own mesh, I ended up wrapping the mesh that was provided with VFace to my own, so I could transfer all the textures (you don’t need to do this since VFace comes with a mesh with well optimized UVs so you could start your sculpting process on that directly).

For wrapping the geometry I used the Topo Transfer tool in Houdini as described in this tutorial by Xuan Prada.

Once the VFace mesh is perfectly matching the new sculpt is possible to project all the useful information carried from the VFace mesh into my mesh.

For the actual process of transferring the textures I did this by reprojecting the color information using ZBrush after converting the textures into polypaint. I did this operation for the albedo and specular and added an extra layer of minor adjustment in Substance Painter and Photoshop.

It came handy to have the whole face UVs on one single UDIM for quick edits using Photoshop.

For the displacement I projected the high poly sculpt of the VFace model into my mesh in ZBrush. This operation took a little while but at least I could tweak the sculpt the way I wanted before exporting the ZDisps.

This is how the final high poly looks and those are the displacement settings  that I used for exporting the maps for Arnold:

For the outfit, I created the dress using Marvelous Designer. For this project I did not edit the topology that came from Marvelous but just used the Beta Remesh option that comes with the software to have a quad mesh. I also wanted to be sure to not have to re-work the UVs for the outfit on a later stage so I used the UVs layout inside Marvelous.

Not changing the UVs on a later stage comes really handy when posing the character on a later stage - it allows you to use the morph target option on your avatar to simulate the garment and when you are ready to export the posed outfit you won’t need to transfer the UVs in another software. Those are the export settings that I use:

For the placement of the spikes and ornaments I used Houdini to scatter them with a directionality on the surface of the dress. I found this tutorial from Matteo Migliorini very informative for this purpose.


The grooming part was by far the longest part as it took me almost one week to get it right after many back and forth. I have been using XGen classic for this project.
For the eyebrows, eyelashes and peachfuzz I re-used the description I already had from my previous project - but I reworked the density masks and tweaked the guides and other parameters.
I created several new descriptions for the main hairs. I found it really useful to assign different colors to the guides to better distinguish which guide is on top of each other and vice versa. Found this super useful tutorial that explains well how to do that.


When I was happy with all the textures, I exported them from ZBrush and Substance Painter for lookdev.
All maps are exported in 8K.
First I set up the Displacement map in the aiStandardSurface shader.

My skin shader is quite simple: I am using only 3 maps (8K) - the albedo which is plugged into the subsurface color, the specular map into the weight of the specular and a bump height map that is plugged as a mask into the normal camera together with an aiCellNoise applied as a bump (to define which area will appear more or less rough).

For the make up, I painted the isolation maps in Substance Painter and imported them as masks into Maya. Using the aiLayerShader node, I plugged in the multiple shaders I created for the make up, having the skin shader as base layer (layer 1).

Any shaders after the skin are controlled using the masks that were painted in Substance. This is the look of the skin shader with all its layers.

In the camera settings I have also used some DOF to enhance the focus on the parts of the face which are closer to the camera.


For the lighting I tried a few different simple setups. As references I mostly used beauty photography studio lighting setups without any harsh shadows. To achieve this kind of result I used a 3 point lights setup and played with the scale of the lights and the spread parameter to edit the sharpness of the shadows. For extra reflections I tried out some different indoor HDRI.

I hope you can find this breakdown useful, it was a pleasure to walk you guys through it!
Many thanks to TexturingXYZ for the opportunity to talk about my work.
If you have any questions or you are interested to know more about my work you can reach me on Instagram, Twitter or ArtStation!