This week was the week that we learnt about rigging and what it entails, including global and local space, parenting, using empties, and object constraints.
If an object doesn’t have a parent, it is basically parented to the world, and transforms are relevant to the scene origin. Each object’s “zero” or default point is its parent – when an object is parented to another, the child object transforms are relevant to its parent – this is called its “local space”.
While rigging in Blender it’s best to parent objects without inverse correction, otherwise the transforms of an object may not be accurate – it’s also possible to remove this when parenting by clicking object > parent > clear parent inverse.
Another note that I found interesting is that a parent chain is called an FK or forward kinematic chain, meaning there is a dependency to the root of the chain – when the root moves, the rest do too.
In Blender, when an object is rotated it follows an order in that rotation – X, Y and then Z, which can be important to note while rigging as this order means sometimes while animating, the rotation of objects can take a path that wasn’t what you predicted, in which case turning on “gimbal” rotation can help you out with seeing how the axes have turned. It’s best to make sure your bottom one is the one you’re most likely to move so it doesn’t lock the others.
Empties are basically tools in Blender, they just have transforms nodes and are otherwise, well, empty.
They can be very useful in rigging however as they can have object constraints attached them and can be used as controllers, hence they are mostly just tools.
Object constraints also give us more control in terms of rigging and helping with animation and we mostly had a look at the transform constraints during this class.
We also learnt about the “child of” constraint, which works like a normal parent-child relationship except that you can adjust the level of influence as well as set keyframes on the level of influence that we want on the object. After the influence has been disconnected, in order to make sure the object stays in the position it’s been set at, you can keyframe the position (location and rotation), then find the frame where you want it to stop, go one frame before that and keyframe that same position, then back to the next frame and object > apply > visual transform, which applies its position to its location and rotation numbers and keyframe that, then go to the child of constraint and keyframe the influence at 1 on the previous frame, and back to 0 on the next one.
Finally, a damped track constraint can be very helpful when animating eyes – you can create an empty and align it perfectly to the location of the first eye by selecting the empty and the eye, right clicking on location and selecting “copy to selected”. Then you can make a duplicate of that and locate it where the other eye is. Then you can select both empties and move them perfectly in front of the eyes. Next you can create a single empty that will control both empties, and parent both empties to the new empty. In the eye’s settings you can add a “damped track” object constraint, check which track axis setting works and do the same with the other eye. Then you can use the control that both empties are parented to in order to control where the eyes are looking.
After learning about all of that, we did a quiz on mentis together which was fun and helped with realising what we knew and what we didn’t know at this stage.
Afterwards we were given an exercise to figure out what was wrong with this animation.
At first I was totally lost but then Eoin helped me figure some things out.
A lot of the different parts had things missing or thrown off such as the influence not being all the way up, the constraints being hidden, the X Y or Z axis not being on or some parts simply not having any constraints applied to them.
I thought that we had to do more than was actually required but it was basically just a spot the mistakes exercise. After I got the hang of that it became far easier to figure out.
Then I moved onto the next exercise.
Our aim was to take this model of a waterwheel, create an appropriate rig for it and then animate it for it to spin, and additionally make the buckets on it move side to side.
My initial attempt wasn’t great and I was struggling a lot to make things work. I did create a circle and add a copy rotation constraint to the wheel so that it would follow the wheel, but I didn’t set it up in the best way. I did make edit the graph to be a vector line so that the movement would be smooth.
After some experimentation, I did get it roughly working and set damped track constraints on the buckets, but it wasn’t perfect and not really the intended way of doing it.
Later at home I tried this exercise again to see if I could figure it out this time.
I decided to take a different approach this time, using an arrow empty spinning in a circle empty like a clock, and this functioned well as a rig to make the wheel spin. I set the keyframe graph as a vector line again.
However, I still wasn’t quite sure what to do with the buckets.
I tried using a damped track constraint, and again it technically worked, however it still wasn’t having the exact intended effect.
Therefore, I decided to look at the solution to the exercise to see what I was doing wrong.
I was on the right track creating a circle as a control to make the wheel spin, however instead of making the wheel spin directly, the wheel was parented to an empty that I actually gave the copy rotation constraint. An arrow empty was used, but it was for the buckets – in that way, you could animate multiple buckets using only one control. Empties were used instead of the mesh itself in order to animate the different parts of the wheel as well, with the wheel parented to the empty in the middle and the buckets parented to their respective empties.
I also set the buckets to have copy location constraints to their respective empties.
Eventually, everything was set up properly and I had controls for everything! This exercise was very good for introducing me to how to set up controls/rigs in models.
I also had a look at some of the extra content on blackboard, for example on how to set up a control rig within an armature.
For example, you can duplicate bones and keep them disconnected, and untick Deform. You can set bones to look specific ways like in this cube, the master control looks like a circle, and so does the tilt control. That way, you have controls for your mesh in the armature without the bone actually acting like the armature usually does. I also learnt that the zero position of bones are where they are positioned in edit mode.
Some more extra content on Blackboard showed how you can set up a tilt rig in a cube, which I found interesting and I figured would come in handy with my character, who was supposed to have a baseplate, and learning how to make it tilt effectively would be useful.
The tilt control rig tutorial actually continued from the previous cube that I had made. I put a bone on each side of the cube (duplicating and moving them, holding CTRL helped them snap in place), and parented the bones in a specific way: middle to left, left to right, right to up, and up to down. I held down all four, held ALT and unticked deform. I also added limit rotation and copy rotation bone constraints to them so that the cube didn’t tilt any more than 90° to either side.
I also decided to look at how to set up squash and stretch in this rig just for some extra knowledge. I added a maintain volume object constraint, and moved the origin down to the ground, so that when scaling, it would scale up and down from the ground rather than from the middle.
I added a control where I locked the location, rotation and scale but added a custom property which I named S.S. for squash and stretch, and set the default value as 0, the minimum value as -1 (later changed to -0.7) and the maximum value as 1.
I selected the cube, right clicked its Z scale value, and added a driver. I hadn’t really used drivers before so it was interesting learning a bit about them here. I set the variable as a single property, and copied the data path from the SS property, pasting it into the path. Afterwards I could squash and stretch the cube just by moving this controller up and down!
However I added a few more properties to make the squash and stretch more stylised. First I added some loop cuts to the cube and bevelled the edges. Then I got to have a look at shape keys, which allow you to change the mesh of an object and set “keys” for those changes, which is very useful in this exercise.
I first added a driver to the stretch control and opened the drivers editor again. I copied the driver variable from the Z scale control, and that was enough to assign the shape key I wanted to the stretch.
I was able to do the same for the squash too, the only difference being that I had to add a minus to the variable.
And with that I had a functional tilt rig and squash and stretch for my cube! This was a very rough and quick test but I was glad that things were working at least.
It wasn’t the most productive week in terms of modelling, however I did have a small start on it.
It took me a while but I finally completed my modelling sheet for my dragonborn character, Clarence. I made sure to keep his arms in A pose rather than T pose this time, and I also added a rough shape to model the instrument case from, as well as the hat. I also decided to draw his mouth closed, as it would be complicated for me to try to make a dragon mouth, and he wasn’t going to have any speaking roles anyway.
As for the hair, I wasn’t sure how I was going to go about it fully, but I decided to leave it for later. I also made his legs more animal-like, as I knew that they weren’t being animated anyway so I wouldn’t have to worry about any rigging concerns.
As I mentioned last week, despite it being human-based, I used Dikko’s poly modelling tutorial for creating this character.
It wasn’t the process that I was used to with sculpting and then retopologising, however retopologising was very unenjoyable for me last time and I figured it may be more effective and interesting if I try out poly modelling.
(Posted by u/Siletrea on Reddit)
I also looked at some other references online to help as the face wasn’t human.
From where I left off, I was able to add a mirror modifier and start extruding some more polygons to slowly but surely start building this character.
I was successfully able to create the mesh around the face and the eyes, create some nostrils and start creating a mouth, keeping in mind that I wanted my mesh to be made of quads.
The topology around the mouth was a bit tricky to figure out but this was how I tried to make it work for the time being.
Eventually, my character has a face, and thankfully with subdivision on he was looking really nice and smooth!
Creating the spikes at the side of the face was a struggle but I managed to create some loops and figure it out that way.
I also created some teeth from the mouth, which I was able to do simply by extruding from the mouth, since it wasn’t going to open anyway.
After a lot of work the dragon was starting to come together! It was really satisfying seeing the result of so much work come to life.
The back wasn’t fully looking as nice as I wanted but I tried not to worry about it too much for the time being as it would like be covered by his hair and hat later.
And next came the ears! These really brought my character to life and I was really happy with how he was looking so far.
That was all the work I managed to get done this week, however I was happy that I was finally able to start on my model and start to get back on track with things.