Creating a Fan Art of Millenia from Grandia 2 Using ZBrush & Substance 3D
Riccardo Morgia talked about the Millenia fan art, explaining how he used MetaHuman to define the body shape and detailing how the hair was modeled and textured.
Introduction
Hello everybody! My name is Riccardo Morgia, and I'm a Character Artist from Italy. I've worked in the AAA industry for a few years now, shipping titles such as TopSpin 2k25 and Mafia: The Old Country. Still, my personal focus has always been on stylization and artistic expression rather than pure visual fidelity.
So, today I'm here to talk about my latest personal project, a piece of fan art featuring a modern rendition of the character Millenia from the 2000s JRPG Grandia II.
Millenia
This started as a for-fun project as a test bed for shaders and tech in Unreal Engine 5. Then I figured I could use it as a base to learn tech such as MetaHuman and hair grooms and to get my hands into other tools such as Substance 3D Designer, so I pivoted to follow an existing concept to the end rather than pure experimentation.
I'm going to go over the key points of my process in creating this character. Hopefully, you'll take something out of it that you can use for your own projects. Let's get started!
I've chosen Millenia from the Grandia franchise as my subject, mostly due to sentimental value and personal taste, but also due to some potential creative freedom when it came to materials definition and detailing, and as a way to challenge myself with adapting a more out-there anime design to a different style. Her design is really gaudy, and I love her for it! To bring her model to the current graphical standards set, I started gathering references.
The original franchise is more of a "cult classic" than a mainstream game, so there was little in the way of art available on the net, both in official and fan channels. The first step after gathering as much as I could was to look into some real-world items that could be looked at for general fit, detailing, and ideas.
I settled on keeping a few select pictures to avoid overcrowding my reference board and to keep the look focused. It's a very common mistake to gather everything that catches one's eye without pruning the results, ending with too many cooks in the kitchen, which can create an inconsistent look. Trimming off your PureRef board is essential when choosing a direction.
Sketching Up the Shapes
I started Millenia over a generic female character I made a while ago to practice some Unreal Engine features with no particular focus in mind that I had been sitting on for a while, using it as a base for her face and body. I didn't want to waste the work I did on her, and using her as a base was the perfect excuse. Turns out inspiration can and will strike at any time.
Before getting to work, I decided to switch to a MetaHuman rig, mostly to take advantage of the facial rig, the animation-ready topology, and the highly customizable shaders. While it's less flexible than a custom rig, it's very good at what it does and great for humanoids. Since the original version of the character wasn't created for MetaHuman, I had to take several steps back to rework it.
First things first, I took the original sculpt into Faceform Wrap, adapting the MetaHuman topology both on the body and the face. Textures were rebaked from the original character, and some subtle accents were applied in MetaHuman Editor to add some depth. The idea was to shift away from the ultra-realistic look of standard MH and into a more idealized direction.
The resulting mesh was then imported to ZBrush, where I quickly sketched out the outfit to have a general idea of the proportions. Going from ultra-stylized, exaggerated anime art to more realistic shapes while keeping the same vibe is always a challenge, as some outfits are designed to complement specific proportions and look off otherwise. In this case, an elongated, slender one, compared to the slightly more "grounded", idealized mesh I had chosen to work on.
A lot of fine-tuning was necessary, as the original concept art relies on long limbs and wide shoulders, giving her a slender look despite the bulky volumes around the shoulders and waist, and the in-game model from Grandia II, being SD style, didn't help!
The first iteration was extremely off, but it served me well in setting the limits and in figuring out what I needed to compromise on, with the most important being the hairstyle: Millenia has a lot of hair, giving her a strong presence, however, making her harder to read. The key to keeping the original silhouette as similar as possible to the concept was threatened by the upper body risking being overwhelmed by the huge mass in the back.
Something the original game model had gotten around by giving her a much shorter ponytail, but whether that was due to limitations of the time or it was a deliberate design alteration, I wouldn't know. The end sculpt ended up being the picture below, but let’s take one step at a time.
Hair Modeling
After setting up the initial volumes, I moved on to creating the hairstyle first: considering a good part of her look is focused on her head and hair, it deserved extra attention. The first step was to sculpt a base mesh for the hair, to get a feel for the proportion and flow. The shape of the headdress was finalized early to serve as a base to build the hair around.
I used a large IMM for the main shapes, and added thinner ones on top to mark secondary volumes, focusing on flow and the clumping. While sculpting the hair, I toned down the original's volumes to fit the different art style while trying to keep the same general direction: in the official art, her hair is quite wild with a lot of volume, covering most of her back, so I had to compromise for both presentation and general proportions.
So while the relative size of the hair buns to the head was kept the same, the size of the ponytail was tweaked to make the profile of the shoulders more visible and to allow a better look at her back. I ended up with a somewhat simple sculpt, which, however, was enough for the next phase: hair card placement.
Instead of placing hair cards hand by hand, I chose to use grooming tools, case in point being Ephere Ornatrix. Millenia's hair is done entirely in Ornatrix, using hair card textures created through FiberShop; with the original sculpt in the scene as a reference, I started placing hair guides, combing them into position through Ornatrix' grooming tools and giving them a finish through the various available hair stack modifiers, such as Curl, Frizz and Clump, especially at the tips and on thinner hair strands.
I used differently colored shaders as I built the masses from the lowest layer to the top to keep track of each layer. The key here is to work from big to small, clumping smaller strands into bigger ones, following a definite flow, and manually tweaking each guide curve, relying on the modifiers just at the end. The original hair sculpt is a key player in this, as deciding volumes and flow before getting to the grooming part helps in keeping the shapes in check.
While working straight with hair grooming might not offer the same features as other tools (in Ornatrix's case, for example, not being able to easily choose each hair card), the ability to interact with the guides as if they were actual hair, along with modifiers made specifically for hair detailing, more than makes up for it.
The entire hairstyle was split into several grooms, each using a different set of hair cards based on density and length. Flyaways and baby hair were added on top to break the silhouette and create a randomness element: thinner, sparser cards were used in transition areas, along with a hair cap texture to smooth out the transition between the hair and the scalp.
I then moved to Unreal Engine, using the MetaHuman Hair Groom feature to implement the hairstyle. The Alembic file and the final mesh were separated into three separate groups (bangs, main body, and ponytail) to set up different physics for each once everything was in the Groom Asset, with the ponytail having a much stronger bounce than the bangs, and the hair buns simply being skinned to the head.
The feature in itself is quite handy as it allows you to automatically skin hair models, swap between strand-based and card-based hair with LOD, and automatically adapt existing hairstyles to different heads as long as they share the same topology. However, since this particular case was done via cards in the first place, for a specific head, and without the use of hair strands, it was mostly to expand my knowledge of the system in itself.
The hair shader is rather simple, using a Flow map for direction, a ramp to set up colors, and a Depth map to use with Pixel Depth Offset to reduce the intersection effect between different hair cards. Eyelashes and eyebrows were also built in Ornatrix and implemented with the same system.
Clothing, Modeling, Shaders, and Texturing
The initial clothing simulation was done in Marvelous Designer, using Avatar Tape to keep it in place, inner shapes and pins to guide the folds, and a modeled armature to keep the puffy shoulders in shape. Each part was simulated separately.
I finalized the flow of the folds before bringing everything into ZBrush for refining, adding details such as tension/memory folds and seams, tweaking the shapes (especially on the waistcloth, as the original simulation was quite droopy), and adding the missing parts by modeling them from scratch with help of ZBrush' Cloth brushes, such as the corset and the boots. Some details, like the outline of the lace, were removed in order to have a clean bake, as they were simply for visual reference while sculpting.
The models were then retopoed in Topogun and UV'd in Maya through its UV tools. The official artworks hint at the presence of lace details on the high heels, leotard, and waistcloth alike, so I decided to delve into Substance 3D Designer to create a few trim sheets for detailing those areas instead of baking the detail in the texture maps.
I've never given this software the attention it deserved, so I looked up some tutorials about the basic interface, luckily finding exactly what I needed. While it seemed daunting at first, it was actually rather satisfying to use, and I suggest you give it a try if you can, especially if you're familiar with node-based editors.
I started by creating a few simple trims, using the software's procedural nodes and converting them to fibers through the Tile Sampler node. Once I had the basics set up, I moved on by adding different lace density types for variation, masking them with a grayscale floral to create a background for the main sheet. Everything was then assembled into a single tiled trim texture.
I created two sheets, one for the leotard and one for the thigh highs, and used Vertex Color on the model to properly indicate to the cloth shader which parts of the material would be controlled by the separate lace parameters, adding a second UV set specifically made for correctly tiling the trims.
The rest of the texturing was done through standard UE PBR, using the Cloth shading model. I gave some attention to weathering and wear. Millenia, in the original game, just conjures her own clothes out of thin air every time she appears, but I assume that she can't walk out of a dungeon in the same condition as she came in.
So, I focused on adding subtle detail and Roughness variation on areas where dirt and chafing are more noticeable (with the golden trims on the wrists, the neck, and the waist being key points), that could be touched often (the headdress), and that gets worn/dirty the quickest (the soles of the boots). The aim was to give the idea of a set of new clothing that has been worn the whole day through some rough situations, rather than an overly worn-out outfit.
To have some finer control over the original shader, I added an RGB "Cloth type" Map, exported as a separate texture in Substance 3D Painter, and used in-engine to divide each asset into three "sections", each with individual controls for Detail Map, fresnel, iridescence and metalness, allowing for fine tuning of each material directly via shader to get the right look on fabric such as velvet, leather and suede, and a bit of pearl shine on the headdress. This same setup was also used for the waistcloth, with the addition of an opacity value on top to add translucency to the sheer.
The pendants on the earrings use their own Translucent shader, with a texture to control the color variation, marbling "mist" effect, subscatter and parallax distance, along with a cubemap on top to add some extra shine.
It could be considered a minor detail, but in a game environment, you would be seeing her face up close during cutscenes, and it's that kind of "touch of class" that makes a character pop out during motion.
A Chaos Cloth simulation was added to a few parts of the model, namely the pendants and the waist cloth, to allow for some bounce during animation and for more natural resting on the body during posing.
Some minor detailing was finally added on top of the existing texture through the MetaHuman shader, namely makeup and subtle freckles on her face, along with some extra shade on the hair cap and the eyebrows to blend them in. Once I was satisfied with the model, I moved on to the presentation.
Conclusion
The model was posed directly into Unreal Engine by using the MetaHuman control rig, with poses inspired by the original concepts.
The setup is a standard 3-point against a dome background, with the addition of a spotlight from the top and a few extra spotlights to add some light to areas such as the lower leg. A PostProcessVolume was added for color balance, lens flare, and bloom, along with an HDRI background to add some extra reflections to the eyes and more glossy areas.
Everything was rendered through the Movie Render Queue and further post-processed in Photoshop for the final look. For the "beauty" shot, I took inspiration from the character's background as an offense-based magic user, so I went for something dynamic, adding a Wind Directional Source to influence the hair and the clothing to simulate movement, exaggerating her expression, and adding a few extra lights where I planned to composite in the lightning effect.
Highlights were enhanced all across the board, and a simulated DoF effect was added on top, along with gradients to guide the eye (plus a detail that is easy to miss unless you're familiar with the character already, can you see it?)
Manually tweaking your renders is an important part of the presentation, probably just as important as finding the right lightning, while most of the post-processing can be taken care of while rendering, adding an extra layer of work on top can further enhance the look and make the render pop. Sometimes it's as easy as tweaking the shadow balance.
You have to composite silly pictures to create color variation, but in the end, you can use it to guide the viewer's attention towards certain details and to enhance the overall look of your art. And that's a wrap. You can follow me on ArtStation or X (formerly Twitter) for more. See you next time!