Hey there! My name is Arnaud Tegny and I am a freelance artist, currently based in France but I tend to travel quite a bit. My life basically consists in making visual stuff, whether it is 2D or 3D, sometimes animated too. I’ve been learning a ton of things on my own. Specifically though, I’ve been developing a passion for real-time 3D and I am happy to share with you a fair bit of the process I’ve been through for making one of my personal favorite works to date, “On a Roll”, starring Neige the Inkling.
The project was of course inspired by Nintendo’s popular shooter, Splatoon. Neige would be what is called a “Fan character”, a character that doesn’t exist in the actual game but taking up its main features to make something that’s part unique and part familiar. The first concepts were drawn back in 2015 soon after the first Splatoon game came out on the Wii U system.
Said early concepts were still a bit different to what she eventually became; before modeling her I decided to paint over some changes and try to find something more appealing. I wanted to preserve the black and white aspect and I know that I wanted some kind of asymmetrical attire too, and Goole happens to be your best friend to find references and inspiration. From there I could mix up the old outfit with new freshness to come up with something that stands out a bit more, and eventually laying out a quick “turnaround” sheet that I could use for modeling.
This is the base mesh that I had made in Maya back in 2015. I used good ol’ box modeling to come up with this, nothing fancy really: extrusions, vertex pushings, from the feet to the head, modeling half of the body first then duplicating symmetrically, and taking care of the asymmetrical parts towards the end.
My workflow has vastly changed since then though, and if I were to make such an organic model from the start nowadays, I would personally use ZBrush. Using ZSpheres with Adaptive Skin at low resolution to make a base mesh and work my way around that, without worrying about topology too much at this point. Either way, there isn’t really a good or bad method for modeling, or tools either, what you should go with is what is working best for you! Simple as that.
So here we are today, Splatoon 2 is out, had much fun with it, and it makes me want to take that old-ish mesh, adding of few divisions to it and import it into ZBrush to have some fun with her.
The topology of the base mesh wasn’t so bad, yet I scrapped most of it. I wanted to focus a bit more on sculpting thus I ended up dynameshing a good chunk of the model. It allowed me to sculpt an open mouth without too much trouble, I think I probably should have modeled it this way from the start.
I didn’t really like how the coat looked, there was some strange pinching but also weird stuff happening in regard to the thickness of the cloth and the collar, so instead of trying to (probably painfully) fix that I decided to use the ZSphere retopology method to quickly give it some new topology. Then, with the ZModeler brush I could assign some polygroups and creases, and finally give it some thickness with Panel Loops along said polygroups. Much cleaner work.
The model is almost fully polypainted (vertex colors) with no UVs, aside from the gloves and shoes which I’ll get to in a bit. I first utilized the FillObject function to fill each subtool with flat colors, before using the basic Standard brush (with the Zadd/Zsub function turned off) to give it some colors/values variations. I try my best not to overdo it though; a little goes a long way.
For some texturing details, you might want to use the ZAppLink feature, which allows you to take a “screenshot” of your current scene and open it in your favorite painting program, where you can draw the details and anything you want that will be projected on your mesh once you re-enter ZBrush. In order to retain all of the details that you painted though, you have 2 options: you can either subdivise your subtool to a fairly high resolution (it depends on the mesh but you can expect to cross the 1 million cap quite easily) or, you can use the UV Master plug-in (included in Zbrush) to lay out some quick UVs. For any option you choose, you should do it before using ZAppLink.
Then comes the part of posing the character, which can be a relatively long process. Patience is key! I use the Transpose Master plug-in quite extensively for posing, along with a lot of masking and mask blurs, and the Transpose line to move and rotate things around. The recently added gizmo within ZBrush can prove itself useful too.
One process that I find effective is to first pose what makes the flow of the entire body and action, i.e. the upper and lower body with the arms and the legs. I pay an extra attention to the line of action along with the axis of the shoulders and the hips too. Try to break anything that feels too parallel / linear / symmetrical to create some interesting poses.
Then once this is done, you can place the head, hands, feet and adjust everything according to the main flow you’ve just set up. It’s like doing animation, you take care of the primary action first and then add up secondary informations according to it.
Alright so now we have our model posed and we are happy with it so far! However it has XXmillions polygons and in order to make it fully appreciable in real-time, there is going to be quite a bit of optimization to be done. Never fear, this part is actually pretty fun. Well I think it is anyway.
Your go-to tool is the Decimation Master, which will allow you to convert your multi-millions polygons meshes into few thousands ones, all the while looking almost identical. Yep, that’s quite the magic at work here.
The first thing that you want to do is to make sure that you check “Keep UVs” (if you have subtools with UVs in your scene, if not you can just leave it unchecked) and “Use and Keep Polypaint”. Leave the “Polypaint weight” by default for now, then you can hit the “Pre-process All” button. This process may take a bit of time depending on your scene and your hardware so go get yourself a well-deserved coffee in the meantime. Maybe play some more Splatoon or Overwatch while you’re at it.
After Zbrush is done computing, you are going to be able to considerably reduce the amount of polygons for each of your subtools, interactively and one-by-one. I’ll take the example of the tenta-hair thingy as it is a good one for demonstrating this process.
Observe the amount of Points on the upper right corner. Now we are going to experiment with numbers to get the most optimized result.
The setting that you wanna play with is the “% of decimation“. It is set at 20% by default but if the mesh that you are wanting to decimate has a very high resolution, you can expect to go much lower than that. I usually start at around 5% and see how it goes. Just enter 5 and press the “Decimate Current” to see the result: has the overall appearance of the mesh changed too much? You’re probably too low. Has it barely changed at all? You’re probably too high.
The best part of it is, what you’ve just done isn’t set in stone. If 5% proved to be too low, just change it to 10% or something and press the Decimate Current button again to see an instantly updated result. If it was too high, try out at 1%. Do not hesitate to use decimals too. Basically, the goal that you should keep in mind is this: Try nailing the lowest setting that will both retain the overall shape of your mesh AND the appearance of your polypaint.
After playing around with it, I figured that the best setting for this subtool was 1.2%.
The mesh may appear kinda “faceted” at this point, but do not worry about it too much. That’s due to how ZBrush displays polygon and it won’t appear when you upload your model on Sketchfab.
Optional: Double Decimation
There’s a reason I took this one subtool as an example over the others. We’ve been as low as we could and converted our 3.233M mesh to a 38K one, which is already a huge improvement, but can we make it go any lower? We actually can.
But this time you want to change the “Polypaint weight” to 50%, and press the “Pre-process Current” button (as I don’t feel this second operation is necessary on all subtools, in fact you may end up using this only for some specific cases). ZBrush is going to pre-compute the mesh once again but much, much faster than previously, and then you can play around some more with the % of decimation. Beware that this time the values that you enter will need to be higher. I usually play around 50~75% depending of the results I get.
Why not decimate all of the subtools at the same time? That’s true that there is a “Decimate All” button that allows you to do so. But chances are that all of your subtools do not have the same, evenly distributed topology. One setting that will be too low for one subtool can be too high for another, and you’re losing control over what’s happening on your model when you decimate it as a whole. But you’ve been working on this project for quite some time now right? Better make the best use of the optimization tools at your disposal to get the best out of it.
That’s about it for Decimation guys. That took me a while to explain and it may feel like a rather long process, but in practice it is actually fairly quick to do!
The only parts of the character model that has a bit more “advanced” texturing are the gloves and shoes, as they include normal maps. I started by unwrapping some quick auto-UVs using the UV Master feature; I just kept the topology of my original base mesh but this would have worked just fine on a decimated mesh as well. The UVs aren’t always the cleanest of the world but it does the job just fine for this type of texturing. It’s also a fairly quick process.
After this is done I exported these specific subtool as an FBX file in order to generate some texture maps.
The program I used for that is Substance Painter, which is one hell of an amazing program that offers so many possibilities that I feel like there is still so much I need to learn to fully grasp the scope of what it has to offer :’D More on that later has I’ll be showing the process of texturing the Dualies.
All I want for my gloves and boots is some Leather texture to them. I grabbed the “Leather Big Grain” in the Materials list and stacked it up on the layer list for each object, and played with the UV scale until I liked it. All I want is a Normal map and a Glossiness map so I’m deactivating the Color channel on the right side.
One setting that you can use too, is the ability to change the Projection mode to be either based on the UV projection, or Tri-planar projection. Try them both and keep what’s looking best. You can also increase the size of the map which is going to refine the details.
Finally, I exported the maps to a folder for later use with Sketchfab compositing. The FBX can be ditched as it was only used to generate the maps and the subtools in the ZBrush file still have their UVs.
Making of the Dualie Squelchers
These very much deserve their own section as the process is pretty different; while Neige is a decimated high-poly model, the weapons on the other hand are true low-poly, game-rez models with a bunch of maps applied.
I used Maya once again to model the base mesh of these, as traditional modeling is my go-to method in regard to hard surface modeling. I could have used Zbrush and its ZModeler brush along with its retopology tools for that, but for such mechanical objects I tend to find traditional modeling to be more… relaxing.
Process goes as follow:
- Modeling of the main shapes of the object.
- Applying creases on edges that should remain hard after subdivisions.
- Subdivision preview. I also like to change the shader to something a bit glossier so I can better see any pinching that may occur and fix them accordingly.
- I first save the model before applying subdivisions as I am going to use it as is for making the true low-poly version later on. Then I apply some actual subdivisions (around 3 or 4) to the entire model, before exporting this as an FBX for further detailing work inside of ZBrush.
The first thing that I usually do upon importing my base mesh into Zbrush, is to Dynamesh all of its parts separately and at at high density in order to give me an even, uniform mesh to work on. I use a lot of Alphas with the Standard brush for adding such details, whether with the DragRect or the DragDot type of stroke depending on what needs to be done. Also make sure to set the Focal Shift of your brush to -100 or it isn’t exactly going to work as intended.
In some cases though, the DragRect or DragDot functions can be a little troublesome in order to position your alphas correctly. Here’s a little technique that I’ve figured out to work around this, using Photoshop:
Position your canvas where you want your details to be, and use ZAppLink to open it in Photoshop.
Draw the shape of whatever needs to be done on a separate layer, in black
In order to give a bevelled effect to our shape, we are going to apply an “Inner glow” layer style to it.
Once this is done, re-enter in ZBrush to project the shape on the model, as polypaint data. It might be useful to save the view right now (Document > Zapplink properties > click on Cust1 or Cust2) so we can recover it after moving the model in case the shape needs to be modified without having to re-draw it from scratch.
Then, under the Masking tab click on “Mask By Intensity“. This is going to mask out the projection that you’ve just done. From here you can invert the mask and interactively use the “Inflate” deformer until you are happy.
After the high-poly model is done, I go back to my save of my base mesh (the one before applying subdivisions to it) and I modify it in order to make it match the shape of the high-poly while trying to use the lowest amount of polygons. It might be necessary to make a decimated version of the high poly in ZBrush and import it in the modeling program that you’re using to make sure that the low-poly follows the shape of the high as closely as possible.
Then, I lay-out UVs. I am not going to cover the whole process for making UVs, but a rule of thumb for hard-surface models is to put a seam AND a hard edge on any angle of the mesh that’s close to 90°, and making several UV islands/shells this way. You also want to make sure that the shells aren’t too close to each other as there is going to be some edge padding (dilation of the pixels to ensure smooth transition) around them on the maps.
Another thing worth mentioning is that if parts of your model were modeled and UV unwrapped as halves then mirrored (which I try to do as much as possible when it comes to low-poly models), you want to offset these duplicated parts on the UV Layout by -1 as shown in the picture above. That is to ensure proper normal map baking later on.
Back to Substance Painter for some texturing fun! That’s over here that you can bake all the details of your high-resolution model on your low poly. I highly recommend checking out Allegorithmic’s YouTube channel for more about the basics of Painter.
I usually start off by baking a Normal map, a World Space Normal map, an Ambient Occlusion map, and a Curvature map. This last one is really interesting, it is basically a grayscale map that highlights the edges and darkens the cavities of your model. One workflow that I find efficient, is to first make a Diffuse map inside a digital painting program using this Curvature map as a base, then stack up the material attributes (metalness, roughness…) on top of that in Painter.
It is also going to be useful to make an ID map early in the process in order to apply said material attributes to separate parts of your model, using the “Mask by color selection” feature. There are multiple ways to make this map.
The final step for the Dualies is going to add decals. It’s basically small meshes that sit very close to the main mesh to give the illusion of stickers stuck on it. It also breaks the symmetry of the texture map of the weapon by making it effectively looking different, while in fact it isn’t.
Splashes & Splooshes
I am not done with Neige just yet as I now need to make a lot of ink flowing around which is going to add a dynamic, “paused movie” type of effect.
In order to make the ink that sits on Neige, I made a temporary mesh by merging all parts of Neige and dynameshing them together. Then with the Standard brush I masked parts here and there and made a Extract (under the Subtool tab) to generate small meshes out of these masked parts.
I then used a bit of the Standard, Move and Inflate brushes to make the newly generated meshes looking more organic and random.
I sorta used a similar process to make the one big splash that comes out of the Squelcher. I inserted a cone primitive and masked parts that I extracted afterwards, then made a lot of move/pull/inflates until I got to the point I wanted, using Dynamesh regularly for keeping a workable mesh at all times.
The entire thing is almost done, to help me in the process of making the whole ink mess that’s on the ground and floating around I used an awesome brush by BadKing that you can grab for free over here.
It is an InsertMesh type of brush that offers several “splashes” sort of base meshes. You can use those as a base, fuse them together and do another whole lot of moves and deformers to create your own unique shapes out of them. I also placed and defined these shapes while taking into account the composition of the scene to create something harmonious altogether.
It’s finally time for some Sketchfab fun! 😀 I actually love this part because you finally get to see your work with proper lighting and are allowed to experiment with it. That’s also the part when you’re reaching the end of your work and can start to appreciate what the final product is gonna look like!
I often process in this order:
I start off by experimenting with HDRI maps. I love the “Arches pinetree” map because of its contrasted colors (yellow/orange-ish and blue, which happen to be complementary colors for that matter) and it creates a nice lighting setup on its own. I used this one for this model. I mess around with the Orientation slider and try to find a setting that I feel looks good, but I do not touch the Brightness slider just yet. That is because I am using the HDRI map as a starting point and I’m gonna add more separate lights to my scene in just a second. But before that, I am going to play a bit with material attributes first.
One aspect of Sketchfab that I find truly beneficial is that it supports vertex color. Since all my subtools are still separated I can easily select them directly by clicking on the scene and adjust their properties one by one depending on how I want them to look: are they glossy or mat, are those metallic objects, etc. I try to have a proper balance of glossy and mat materials. They can really enhance each other, just like vivid colors and shades of gray do.
If you have maps for your model, as it is the case here for some parts of Neige and the Squelchers, you can upload them in the proper slots. It is again a very easy and simple thing to do.
Now that I’ve set up the materials of my model, I am going to move on with the lighting and add a few more lights. I can still get back to my materials at any time for adjustments!
The 3-Points Lighting setup is a simple but incredibly effective method largely used in cinema and photography, and described in the picture above (courtesy of Wikipedia).
- The Key light is basically the main light, directed at the subject
- The Fill light is directed at the subject too but from a different angle, with lower intensity. It is used to enhance the details that the Key light do not reach entirely
- The Back light, aka Rim light, is a strong and bright light placed behind the subject that is used to highlight the contours and separate said subject from the background.
This setup remain flexible as there is no hard rule about the angle of the lights, should they shine from above or below, etc. You gotta experiment and run with what looks best to you. So, I am now going to add these lights to my scene in addition to the HDRI map that is already there.
You can experiment with the orientation, intensity and colors of all these lights until these make of your baby something you can be proud of.
There comes the very final step of the whole process. The icing on the cake, that can add quite a bit of polish to your work: I am talking about Sketchfab’s Post Processing Filters.
Here I used the Ambient Occlusion and Vignette effects. I often like using the Sharpness effect too, even though I didn’t end up using it for that one. Color Balance can be cool too, you can fine-tune the colors of your entire scene by pushing the sliders very slightly, or create something rather on the stylized side on the higher settings.
I think that’s about it for this Spotlight guys! Thanks a lot for reading and I hope that you’ve learned a thing or two, may this be useful for your own work and path. And of course, thanks a whole bunch to the Sketchfab Team for the opportunity. I am truly honored. 😉
You can also reach me on my e-mail for any inquiries: firstname.lastname@example.org
That’s all Folks, Thank you lots y’all!