Huh… I just realised I never did a part 2 for the Sabriel post…
For another time. Right now I want to talk about my latest set of problems, in an ongoing sense rather than any finished state.
Meet Metum (mee-toom), a character designed for my brother’s planned expansion to his project ‘Walker’, for which we’ll be working together on the side from now on.
So from here I took the concept to Zbrush, which has become something of my go-to for starting anything remotely organic in shape these days, to construct every part of the model that wasn’t either cloth or the larger mechanical arm (though in hindsight were I to do it again I’d sculpt the arm too). Given my workflow generally progresses as ZBrush > 3DCoat > 3DS Max > Photoshop/Quixel for organic assets to be taken to Unreal 4, I figured I could sort out the hard surface of the left arm at the 3DS Max stage. The cloth and hair have been a real learning experience for this project, and no I haven’t got them into engine yet, and this is because despite having been warned before I decided I wanted this to be a game-ready model, and that meant I was using Nvidia Gameworks. Specifically PhysX Cloth and Hairworks, but I’ll get to that bit later.
As you can see it was mainly just the organic shapes I knocked out in the first stage. From there I took the model into 3D-Coat in 3 pieces: the head, arm and the rest of the body, with each weighing in at about 1.5mil polys each. Using the quad tool and a mirrored plane for all but the arm I went about creating a much lower-poly mesh to use in the final result. Since I have looked into other options available to streamline my retopo stage, which I go over in my post here.
From here I moved to 3ds Max, to construct the more hard-surface sections of the mesh, such as the left arm and the teeth, to unwrap and rig the model for texturing and animation, and also to explore options for using the Nvidia Gameworks plugins for cloth and hair to be used in Unreal Engine 4. In the end my setup was largely ready to go, but in my haste I made some fairly amateur mistakes that ultimately saw the character’s rigging broken for exportation purposes. These mistakes were as follows:
- Always reset your xform before skinning. In my haste I neglected to do so. This meant when it came time to export my fbx was a mess of misalignment and scale errors. (have a good laugh at my expense)
- A bit less obvious but remember that Unreal (and a lot of other programs for that matter) won’t accept a model with bones sharing a name (in this case spine segments). 3ds Max also doesn’t like you changing bone names after they’ve been skinned.
Due to my sloppiness in this regard, despite the fact the PhysX cloth is working and my hairworks guides have been set up, I can’t actually export the model correctly in it’s current form to use either of them. Both can be fixed by redoing the rig with the changes above, so there will be a followup post in the next 2 weeks with all the nice dynamic physics applied.
Going into the specifics of the Gameworks plugins while I’m on it, PhysX cloth works in a very similar fashion to a more standard cloth modifier in 3ds Max, but using a specifically low-poly mesh (generally under 1000 quads if it can be managed) for the cloth region. Before applying the PhysX cloth modifier to the mesh the first step is to make sure there’s a skin modifier applied to it, with any bones you’ll want to affect the cloth in the stack, and the correct skin weights applied at least to the verts where you want your cloth to join up with the rest of the model. In this case I have the skirt meeting along the bottom of the rib cage, so I made sure to skin the top edge vertices of the skirt to spine3, the bone that the bottom edge of the rib cage is following. After applying the PhysX cloth modifier to your intended cloth mesh, you then use your paint tool (highlighted in red in the screen below), set to the ‘Max Distance’ channel to paint in the outer limits to the weighting under which the cloth will simulate. You can leave the most all of it at 100 if you like, though it’s generally better to taper in towards the point from which the cloth is hanging as you get close to it, for a result with more volume to it. It is also important here that you keep that row where the verts are skinned to your mesh set to zero, as this is what tells the PhysX simulation to use your skin that keeps the cloth following the rest of the character.
Once you have the max distance in place you can use the ‘Physical Material’ sliders to adjust further values for the material much like you would under the object properties in the normal cloth modifier. Where this differs a bit is that you’re not using your model as your cage but instead a set of cages constructed around your existing rig. To do this, with your PhysX Clothing modifier open, you first create a ‘kinematic rig’ from the PhysX toolbar. Then you add the bones you want to affect the cloth to its ‘Bone Setup’ field (or remove those you don’t want to have an effect if all bones are already selected). After this select each of these bones on the rig, they should all now contain a modifier for ‘PhysX Rigid Body’. Under this there is a value for ‘Hull’, which is the cage that will function as the collision for your cloth. These can be rotated or moved into the positions yo want as well as adjusted for size using the ‘Physical Mesh Parameters’ in your modifier. Once you do this for all bones involved your cloth object can be saved out as an .apx and the whole model an .fbx as you normally would to import into unreal and set up the cloth for use in engine. The tutorials I followed for this process can be found here and here, worth watching as they go into a lot more detail than I as well as different ways to achieve a similar result.
Hairworks is a bit more straightforward, but also takes some setting up to get the right result. The first thing I did was to create a clone of mesh the hair would grow from, removing any geometry that wouldn’t have hair and/or wasn’t needed as a collision. I also altered the geometry slightly on this version of the mesh so the verts would be more evenly spaced where I wanted hair to grow, as this gives a more even result in the final product.
I then applied a ‘Hair and Fur’ modifier to this mesh, which is found under world space modifiers. Using this tool I styled the hair how I wanted it, while also allowing it to sit far enough off the body that it could fall into place once the PhysX had been applied to it. Once I was happy with the style and had listed any other parts of the model I wanted to hair to collide with in this modifier, I ran a guides -> splines conversion from the tools function and applied a hairworks modifier from the gameworks menu. Within this modifier I selected the spline group I just created as my guide for the hairworks group and exported the retopologied head mesh with the spline group as an .apx hairworks format, similar as to with the cloth. This file is now ready to be used in the hairworks editor, but I haven’t been able to complete this yet due to the rigging error I talked about earlier. It will be in the next post.
Getting back to the my pipeline. To get maps for normals, ambient occlusion and height (for the environment pieces) I took the high and low poly of the pieces of the character model, with the additional division of breaking the face inside the skull into a separate piece, and ran them through xNormal.
Ttexture stage was largely handled in quixel, but I’ve since looked into the polypaint options available in ZBrush, which I used for the ice objects in the environment. Using the masking options available it’s very easy to get graduated and edge highlighting painted texture that would either function just fine by itself as a more cartoonish, painterly style of texturing or as a better foundation to then add detail to with quixels smart materials layered over. As it stands the two are stylistically very different, but I’m still quite happy with how the it came out just with some time in quixel.
The fruits of my labor:
And you also her moving moving under the (otherwise useless) rig in 3ds Max and the model brought into unreal, with the environment pieces arranged (with a few glowy orange pillars I borrowed from Lachlan with permission #noplagiarismintended) can be seen in my show reel from :50.
Artstation is here: hstandfield.artstation.com
Now I just have to fix all that. *groan*