I have been working on this pose model as a way to practice animation. I also hope I can use it for building mock-ups and animatics for real world shots.
It was good animation practice. I looked up some videos on making walk cycles and some reference footage for the cossack dance. All in all, I’m happy with how it came out. The largest portion of effort went into getting it to uploaded to Sketchfab properly. Sketchfab can be frustrating as hell but it is such a great way to show off your models that I feel like it is worth it. Hopefully once I learn the proper workflow it will not cause as much grief. Before I detail my struggles with Sketchfab, let me elaborate on how I created the model.
The Fun Part
I used sculpt mode to make each part separately and a mirror modifier to duplicate them. I looked up some references and tried to make joints that would make sense for a doll. I made actual ball and socket and hinge joints for the connections. It was definitely overkill since you cant see them. I used the boolean modifier to make the socket, which of course led to bad topology and caused some trouble down the line.
I used a rig and IK setup from a YouTuber called RoyalSkies, whose video is linked at the end of this post. I like it because it is very simple. I can position and rotate an extremity with one bone. I’m sure there are better rig setups depending on the situation but this worked for now. I could try using the three bones in the arm as a chain and putting the IK constraint on the hand. Or, what if I used the hand as an IK target for the rest of the arm?
I added a heap of constraints to the bones to try and limit self intersection. It worked OK but I think there is a certain amount of clipping that you have to accept when it comes to animating. It also led to limbs popping into position as the IK target moved which had to be refined away.
I was able to animate fairly well with just the four IK bones. There is one piece of advice that applies to this as it does to many other parts of Blender. Make a complete pass first and then refine.
Here are some other discoveries about animation.
For a looping animation, set the frame range to be one frame earlier than you’d think. If you make the first and last frame exactly the same distance apart, you will get 2 frames of the same position which will look like a pause.
Set keyframes for all of the bones at the start of an action. Otherwise, a bone that has been moved by a previous action will not necessarily be put in the right starting position.
There is a way to make an armature and connect many separate objects to it, which is nice since you don’t have to fool around with vertex groups. Unfortunately it didn’t work when exporting using the Sketchfab exporter. It may have worked if I’d used some other format but I just ended up joining them together and applying weights to all the parts. It wasn’t too bad since you can use Select Connected in edit mode to choose only the vertices of a specific part.
The material was an attempt at a wood like texture. I baked the textures to images to make sure they worked once uploaded. I also put a roughness map on it to give it a polished but well handled look. Pretty subtle but good practice for making things more photorealistic. Here’s my node setup.
So, after all that, I was happy and wanted to show it off on Sketchfab. Unfortunately, I thought that using the plugin designed for the task would be the best way to do it. I was wrong.
The first problem was the model had strange spikes coming from the hands. It took me a long time to figure it out but the root cause was the boolean modifier I used to make the ball and socket joints. The exporter didn’t like a face in there that was some crazy ngon. I found that it only happened when there was an armature on the model but for my purposes I could not remove the armature. I eventually fixed it by running either Triangulate or Split Non-Planar faces. I don’t like that solution though because it permanently changes the model.
The second problem was that no matter what I tried, I could not get the arms to follow the IK target. It was doubly strange because the legs used the exact same setup and worked perfectly.
I tried dozens of different settings and uploaded dozens of test models, assuming there was some magic combination. Things I tried included:
- Baking the actions for some/all of the bones
- Renaming bones
- Recreating the IK targets
- Creating a different IK chain that includes the hand as the last bone
- Removing the angle limits on the bones
- Re-weighting all vertices, both manually and automatically
- Completely removing and re-creating the armature from scratch(this actually worked but I wouldn’t consider it a solution)
I came to the conclusion that the Sketchfab exporter is kinda junk. Sometimes it just plain doesn’t work and no amount of fiddling with settings will fix it.
The solution for me was to use the built-in GLTF exporter. It supports materials, vertex weighting and multiple animations. Once I exported to GLTF and uploaded using the web interface, everything worked beautifully.
The Sketchfab plugin supposedly uses GLTF under the hood but for whatever reason, it creates problems that don’t happen when you manually export and upload to Sketchfab.
Only one thing to note about using GLTF for a model with multiple animations. You have to Push Down each action to save them to the file. My export settings are below as well.