Lesson 4 - Best Practices & Strategies
If you can learn from my mistakes and trial and error experiences you will benefit from all my frustration and have a smoother animation experience.
General Animation Strategy
- Prepare the mesh for being animated. Sometimes going straight from defining the mesh geometry to animations leads to some issues which we will discuss later in much more detail.
- Lay out the desired visual effects. Deciding on a plan based on your experiences and expectations will have large benefits later on. Lay out what properties you want to have. For example, if we consider an engine here are some questions I would ask myself. By no means is this all the questions I would ask, but I hope this provides a starting point and gets you to think about some more questions to ask.
- Is there going to be an Afterburner?
- Will the nozzle move? If so, should it move with airspeed? Throttle setting? Whether Afterburner is engaged or not?
- Do I want to have any rotating machinery (like the turbine or intake fan)? Which way should this rotate?
- Is there a thrust-reverser? How should this move?
- Rig the model. Based on the animations required to achieve the visual effect you envisioned in Step 2, you now have a general idea about how the parent-child relationships should be setup. By defining these now, we can help avoid a lot of issues with adding in effects later on in the animation process. Sometimes these last-minute additions require you to completely de-construct the parent-child relationships of a particular part of the model. For example, when I made the Boeing 787, it took three attempts to properly rig the wing and get all the animations working properly.
- Apply the CLAs. I like to do step 4 just before step 5 for a particular component, then move on to another object and repeat the steps.
- Define the STAs.
First attempt (left) had obvious issues with the sections of the wing. The second attempt (top) provided better results and the 3rd attempt got it right.
Name EVERYTHING With Sensible Names
Alright, I will be the first to admit I do not always follow this. However by naming all the components you are working with and animating, it will be easier to find the right object when things start to overlap. In addition the Outliner window becomes even more useful for looking at parent-child relationships. I like to name objects and empties with similar names if the empty is the parent of the mesh object. For example, if I have a nose landing gear piston, I might name the object "nlg_piston" and the parent object "nlg_piston_e" or "nlg_piston_empty". Note that Blender has a character limit for object names, so when possible, look to use shorthand notation, somewhat like I did here with nlg = Nose Landing Gear.
Place Object Centers At Known Locations
There are several ways to do this. I prefer to have the object centers at a vertex, especially when part of an assembly. Sometimes if there isn't a vertex where I want to put the object center (for example to keep it on the axis of rotation), I will insert one extra vertex for this purpose. If you follow my addon creation projects, you probably know that I'm always looking for ways to reduce vertex count, so sometimes instead of adding a vertex, I will use the median position between several vertices to place the object center.
Remember that when placing the object centers, to always place them on the axis of rotation in order to simplify your work when it comes to defining STAs.
Use Temporary Objects To Hold Position
Sometimes when rigging complex models, it may be necessary to move objects around, while retaining the ability to move them back to the original position. While Blender does have an Undo feature, sometimes this skips several steps and may undo more work than you desired. Having a temporary object co-located with the object's original position holds that position and also allows you to use the Snap To feature to move the object back into position with the 3D Cursor.
Rig Objects In Local View
When rigging objects and establishing parent-child relationships, on-screen clutter is your enemy. By selecting only the objects you wish to link together and temporarily isolating them from the rest of the model, you can be more effective in your process. It allows you to control what you see and perhaps more importantly what you can accidentally click on.
Zero-out Rotation, Position and Scaling Prior to Creating Parent-Child Relationships
When dealing with parent-child relationships, rotations, position and scaling factors on an object are your enemy, particularly so scaling. Prior to establishing a parent-child relationship, review the Transform Properties Menu for each object and ensure the following are true:
- No scaling factors applied in any direction. Failing to check this will result in the scaling being reversed on export to a DNM file and not something that can be easily reversed once created without tearing everything apart and starting again from scratch.
- The parent and child objects have their object centers in the exact same 3D point in space. This makes things cleaner. If the child object needs to be moved away from the parent object for the purposes of the model it can be done so after establishing the parent-child relationship.
- Avoid creating the relationship if the parent and/or the child object has a rotation applied to it.
While possible to create a successful animation with rotations involved prior to the parent-child relationship, it is best to avoid that whenever possible particularly when the animation involves rotation. There are some cases where exceptions do work, but exceptions to the rule shouldn't be relied on.
Test Animations Early And Often
This is more important when you are starting out. As you gain experience you will learn how to properly define animations, however the earlier you test things, the earlier you will find your mistakes. Do not be afraid to make mistakes. I have not completed a project without redoing some of the animations. In addition, sometimes things look right in Blender, but not in YSFlight or another program like DNMViewer or Polygon Crest. In my 787 example above each attempt looked perfect in Blender, but due to how I setup the Parent-Child Relationships, when exporting to a DNM file, things were not as I intended. Because I tested the animations before doing the same thing to the other wing, I was able to perfect what needed to be done and then only do it once on the right wing, ultimately saving me a lot of potential duplicated work.