logo80lv
Articlesclick_arrow
Research
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_loginLogIn

Reimagining Ifrit from Final Fantasy VII Remake in ZBrush & Unreal Engine

Ronald Gebilaguin shared the workflow behind the Ifrit project, showed how he improved the original model, and explained how the lava was made. 

Introduction

Hello! I’m Ronald Gebilaguin or Gevz/GevzArt online. I started working in the CG industry around 2008 in a post-production studio back in the Philippines. After almost a year in that gig, an NPC I call FriendA_Jeff referred me to his employer, an outsourcing company for games called Ladyluck Digital Media Inc. (now closed). There, I contributed to about 20 projects, most notably – Uncharted 2 and 3, EA Mix Martial Arts, and The Sims 4.

After 6 years, I decided to adventure abroad to Poland to join CD PROJEKT Red. I got referred to by another NPC, FriendB_Len. There, I worked mainly on Gwent and its campaign, Thronebreaker. After almost two years, I moved to Sweden and joined Ubisoft Massive. The same NPC, FriendA_Jeff, referred me here. Currently, I'm in my 6th year, working on Avatar: Frontiers of Pandora as a Lead Character Artist. This is why you always talk to NPCs.

I also dabbled in toy figure sculpting. I was fortunate enough to have been selected to join Banpresto World Figure Colosseum by Bandai when I got to make two figures – Jinbe from OnePiece (2018) and Gogeta from Dragon Ball Z (2019). Both are now released in the market.

In my free time, I like to do stuff that is very different from what I do at work. In this case, something more fantastical and stylized. Below is a breakdown of how I made Ifrit. I tried to add as many details as I could. Hope it helps! 

The Ifrit Project

Round 1

When FFVII Remake was released back in 2020, I absolutely loved the version of Ifrit in there and wanted to make my own interpretation inspired by the original design and the final in-game version. I’ve been playing Final Fantasy games since the original FFVII. They are worth cutting classes for. It’s about time I make a tribute!

I compiled a PureRef reference board. These images are categorized into groups – original visuals, anatomy, real-world references, and other artists’ works. I don’t work side by side with this board. I would just open it during breaks to study specific areas. This prevents me from getting trapped in just replicating what I see. 

My goal back then was simple – I just wanted to make a posed, digital sculpt. I didn’t have a consistent schedule when I was working on this. I just tried to chip away at this for an hour or two at a time. There were weeks when I wouldn’t touch this at all. I don’t want to put pressure on myself to finish soon. The whole point is to have fun and relaxing sculpting sessions at night. It took about 3 months, and voila!

At this point, I already met my goal and shelved it.

Round 2

Fast-forward to early 2023. The hype for Final Fantasy 16 was building up. I decided to continue Ifrit and finish him as a real-time game character. But I knew I needed to learn new stuff or I would get bored very fast. So I set a couple of specific goals for myself:

  • Finish it in Unreal Engine.
  • Texture it using UDIMs.
  • Add simple rig and animation.
  • Add simple VFX.
  • Try the Unreal Engine tools for rendering cinematics.
  • Wrap everything up before FF16 releases.

All these were exciting enough for me to continue an old project.

High Poly

When I opened the ZBrush file from 2020, it was apparent that I needed to do two major changes:

  • “Come at me bro" is not a good bind pose. I had to rotate his arms downwards and into an A-pose so it’s easier to rig and animate.
  • Anatomy proportions need to be updated to make it more appealing. But at this point, it will take too much time to do these adjustments in the high poly. I decided to tweak the low poly instead. More on this later. Just to note, this is not recommended to do at work in a proper production setting where you need to work with other departments. Ideally, proportions should be nailed down in the high poly stage or earlier. But this is personal work, so it’s fine.

Head & Body

Everything was modeled in ZBrush. It was a bit free-form. I just started with the head and worked my way down. The whole thing was a lot of dynameshing to get the primary big shapes. And when I'm happy, I ZRemeshed it to have good topology and continue with secondary, tertiary shapes, and so on.

Below are the layers of how I sculpted the skin surface. I could have used those scanned products for texture projection on the face, like TexturingXYZ. But I know from early on that I won’t be showcasing the skin pores with extreme close-ups. This character already has a lot going on for a viewer to look at. In this case, I focused on perceived details rather than accuracy.

Same exact layers of details for the torso and legs:

Skin Plus Gold Plus Lava

In the game, only his horns have gold plating. I decided to double down on this and add more all throughout his body. I just thought it makes him look more majestic and godly. One noticeable difference here, as seen above, is the lack of high-poly detail for the lava parts. I wanted to challenge myself to add as much detail as I can in the textures. That said, the lava became the thing that connected the gold and skin. In hindsight, I should have sculpted it to better blend all three main surfaces. 

Blending Between by Projection

The mesh resolution was a big challenge. The only solution I found that worked perfectly, was to split the meshes into multiple parts and project the seams in between. There should be a good enough overlap between the meshes to give room for a seamless transition.

One obvious downside of this method is, each time those areas are tweaked, you will need to reproject the transition. So this should be the last step to wrap up the sculpt.

One not-so-obvious downside of this is it won’t work if you need to bake a thickness map from the high poly. The overlap transition will come out as pure black in the bake. Usually, you won’t need a highly accurate thickness map that matches the high poly perfectly. But if you really need to, you will need to find a workaround.

Horns

He got two sets: head and shoulder horns. I sculpted them the same way as the skin parts – DynaMesh> ZRemesher> base sculpt> surface detail.

Eyes & Teeth

Nothing fancy here, just straightforward sculpting. The insides were not as detailed because I knew I wouldn't show it anyway. The eyes will glow, I didn’t pay much attention to it.

Clothing

For the most part, sculpting these was pretty straightforward. All the skin-tight items – thigh wrapping, boots, bootstraps – were modeled from masks.

The ornamental detailing was made with masks and inflate.

If you zoom in, you can see that the edges are not as clean. I just had to accept this and move on. I knew I wouldn't be showcasing these up close anyways. But ideally, I would model these to get cleaner edges.

The bracer started from a cylinder. I modeled it on its own and with no rotations so I could use symmetry and then just put it in place after. Like the belts from earlier, the ornamental detailing (in blue) was extracted and zremeshed from the cylinder.

The fabric was masked and extracted from a plane. I settled on the rough general shapes of the ripped bottom parts. I know I’ll be making the final alpha in the textures anyways.

I have a simple Arnold scene setup. I would try to do test renders at specific points:

  • Checking each stage – primary, secondary, and tertiary forms.
  • Checking intensity of surface details. This is a good test so I can avoid spending too much time fixating on details that won’t be seen.

Low Poly

I retopologized everything in Maya using QuadDraw. Nothing special. As a shortcut, I retopologized everything in lower resolution and just subdivided them. I’m not really concerned about the budget for this since it's personal work.

Scaling Issues

Because it started out only as sculpting for fun, I never bothered to check the scale. But now that I decided to go all the way, I needed to set this right. I scaled it up after I baked all the maps. 

Updating the Anatomy Proportions

As I mentioned in the high poly section, I tweaked the proportion in the low poly to hopefully give it more appeal as a hulky beast. I first did a quick and dirty pose test in ZBrush to see how much adjustment I needed, then updated the proportion.

UVs

Since I worked almost exclusively on games, I have never made a character in UDIMs before. I had to do it here. I was drooling over how much resolution I had during texturing, but it is really taxing on my machine. My Substance 3D Painter file was 10GB and it took more than 5 mins when saving.

Hair

After the proportion tweak, I worked on the hair. I used an old texture I had from another project. It's pretty straightforward. All the cards are hand-placed. Final Fantasy hairstyles are stylized and are made up of chunks, this makes it simpler to model. I had to add a couple of layers to somehow blend the chunks a bit, not completely though. I want to keep the separations still visible to still have that FF hairstyle vibe.

Then I modeled it in layers.

Texturing

I had to texture him using the mesh with the original scale and proportion because that’s what I used for baking the high poly.

Also, since it’s UDIMs, this file has 18 4k texture sets. The scene is quite heavy. This prevented me from using existing materials. I created all layers myself just to make sure there are no extra things that Substance 3D Painter has to load. 

Skin, Metals, Horns

As you can see, these were textured pretty simply. I would always think of the end product to make sure I only put in the effort that is actually visible later. 

For the skin, the main thing was having enough color variations. Applying them was a combination of hand painting and grunge masks. The same approach was used in the roughness map combined with the curvature bake using the mask editor.

For the metal bits, I had to make sure the diffuse has a nice contrast. Those bright spots and edges work well with roughness and metalness maps. 

The horn is super simple. Mostly a few layers of color variations using a curvature map via the mask editor. I know this is mostly covered in lava anyways.

Lava

I was looking for a way to make the lava fully procedural but the more automated it is, the less control I have with the art direction. So I found a simple compromise. 

I used this tile to generate different types of lava patterns I used for height, color, and emissive maps.

Then I have a mask where I want the lava to be. This was hand-painted so I can control the shape as I want. This was critical because I used the lava to blend the gold bits in the skin.

I used anchor points a lot on this which was super handy. I can now brush wherever I want in the mask and it will apply all the different filters and layers I have to generate the lava.

The clothing and accessories are pretty straightforward. Again, I made sure I had enough color variations in the diffuse and good contrasty bright spots on the metal bits. 

Below is the base normal map from the bake.

This one shows the added height/normal details from Substance 3D Painter. Almost all the surfaces received additional details. The most significant here is the lava.

Rigging

I used AdvancedSkeleton5 to rig this brute. I can’t recommend this enough, it's super simple to use. It can rig almost any character and also includes a basic facial rig.

I used ngSkinTools 2.0.40 for skinning, it is heaven-sent. There are layers! You can check this video for a super quick intro: 

Animation

I’m not an animator but I was really determined to add an animation on this guy. It’s crazy how much life it adds to your character once it starts to move. I recommend that you do that extra push and animate your characters!

Unreal Engine

I’ve been wanting to do a Unreal Engine project for a long time. It’s a no-brainer really. Real-time rendering is the future and UE is spearheading this. 

I started work on the particles by following this short tutorial. Then I played with the settings to get what I want. I ended up using three emitters. The first one is for general coverage from his neck to his feet with a lifespan of 1-2 seconds. 

The second emitter only covers his forearms with a lifespan of 2-5 seconds. This should give the impression that the fire would start from his forearms.

The last emitter also comes from his forearms with a lifespan of 4-5 seconds. These are the few elongated sparks that travel longer and faster. Having these variations of emitters gave the sparks a more natural look.

Levels

I made two levels for this project – a studio-like setup and a canyon environment. The former, as seen below, has a very basic setup. I have a back wall and floor with a basic concrete texture from the Quixel library. I used 6 rectangular lights, all with their Mobility set to “movable” so they all cast dynamic shadows.

The canyon level is equally as simple. I used four rectangular lights (set to “movable”). This was mainly used for the night renders. For the daytime, I mainly used the directional light (time of day). Those environment assets are all from the Canyons of Utah Collection in the Quixel library. I just downloaded a few and placed them based on what is seen in the camera.

Finally! Here is the completed render for Ifrit. I hope you like it!

Things to Improve

Several times I wanted to go back to a previous stage to fix or improve something. In an alternate universe where I get to continue this, I would want to improve the following:

  • Do another pass on the skin texture and give it a better transition to the lava. Maybe give it a burned look so they blend better.
  • I messed up the rig and had the joint orientations wrong. This made it hard to animate. I had to settle with a simple idle. I would go back and re-rig it better.
  • Study better composition for the render shots and learn more about real-world cameras.
  • Add more visible asymmetry to the body, especially the lava. Right now, almost the whole body is mirrored. Got lucky that it’s not as jarring since the clothing, face, hair, and animation hides the symmetry a little bit.
  • ADD FIRE!

Conclusion

The initial high poly goal back in 2020 took me 3+ months on and off. Then when I picked it up again this year: low poly> texturing> rendering> final presentation took another 3+ months. I would usually work on this for 1-2 hours at night on weekdays and maybe a bit longer during weekends. Not consistent, just whenever I feel like it. It was important for me that it remained a relaxing session each time I worked on this. No pressure to finish, just having fun.

As for my advice, let’s start with a reality slap: your skills are your only job security. There’s really nothing else to say on this. Also, even if you are employed in a stable place, boredom and exhaustion will kick in at some point. It is the nature of our work to seek new and exciting things. Your opportunities are always capped by your skills.

Now to the cliche stuff: finished is better than perfect. As I wrote earlier, I want to improve this project and make it perfect (whatever that means) but I decided to just live with it and move on. I will apply those things in my next project instead. 

Also, I understand very well how exhausting it is knowing that a character project takes a lot of time. What worked for me was to break it down into bite-size goals that are doable in one seating. Something like retopo of the boots for today, I’m just going to focus on that and try to not think of other things. Before I knew it, I finished the whole low poly.

Lastly, find fun in what you do! Maybe try doing something completely different from your day job. Particles are cool, maybe try it! How does your character move? Maybe animate an idle! How will your character look from a dramatic camera angle? These little nuggets of curiosity keep your brain engaged and playful. It is literally our job to create fun. Keep making art!

Ronald Gebilaguin, Lead Character Artist

Interview conducted by Theodore McKenzie

Join discussion

Comments 0

    You might also like

    We need your consent

    We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more