ANIMATION
| Scion Morphing . | Turrets . | Walker |
To animate with Max you have an absolute TON of options, none of which will actually help with animating BZ2 objects. All of the inverse kinematics (IK for short, meaning pulling on one object will move the ones linked to it), bones (a better way of doing IK), pivot limits, etc. are pretty much ignored by BZ2 objects in favor of the built in restrictions of the animations. For instance you can limit the movement of a piece by setting up pivot limits and still watch it spin it's head all the way around in BZ2. Obviously, the limits are ignored in the conversion, although they might help you in MAX.
There are really only two types of animation in BZ2: FIN and SPECIAL. This is Avatars definition of the animations. Since he is more or less the person who found out and published how it works, his terminolgy will be used. I am aware that people like DutchBoy or Lizard should be mentioned here as well. So thats why I do that :)
The first FILE is thrusting forward, the second is coasting, and the third is thrusting backward.
The first FRAME of each of those three files is a left turn, the second is moving straight, and the third is a right turn. Move the parts of the ship the way you want them for each, creating a 'keyframe' for each piece that moves in each frame.
This is the most important part here. EACH MOVING PIECE MUST HAVE A KEYFRAME IN EACH FRAME. If you have a part that only moves when the ship is coasting forward you still HAVE to define where it is in the 'left' and 'right' turn frames. Otherwise that piece will do weird things...
A FIN animation is tied into
the thrust and steering of a vehicle. There are only 9 single frames, three
for each thrust.
So, that's
| animCount = 3
animName1 = "forward" animFile1 = "mytankf.XSI" animName2 = "neutral" animFile2 = "mytankn.XSI" animName3 = "reverse" animFile3 = "mytankr.XSI" |
You can call them anything you want as long as the proper animName is used. This links the animation to that action by the player, such as pushing forward on the joystick or hitting forward on the keyboard.
The only real tricks here in Max is to make sure each frame has any moving objects as keyframes. Keyframes are frames that contain the actual position of the object at that time in the animation. All other frames are created based on these key frames, and for BZ2 all three frames have to be keyframes for anything that's moving. An object is 'keyframed' at whatever frame you're looking at if it has a white set of box corners around it on that frame. When selected a small filled in circle will appear below the slider bar at the bottom of the view windows also. Each moving object has to have that box around it in each frame. You can, most of the time, move the object just a little to get it 'keyframed' in that frame, even if it's not supposed to move much. All you're really doing is telling Max to store that position for that frame. There is also a button for each type of movement in the 'Motions' tab (spoked wheel, up by Modify and Create...) This will add a keyframe at that frame for the selected object, but it's quicker and easier to just wiggle the selected part a little. : )
It's easiest to select each piece you want to animate and use the MOTION selector to assign a POSITION and ROTATION key to that piece in each of the three frames first, before you start moving things. The objects that have a keyframe will show up with white squares bracketing them in each frame that they're 'keyed' in. Once everything has an assigned position and rotation in each of the three frames you can't really screw anything up.
Now save your model again, as the first of the three animations. As already mentioned, you can call it anything you want but I'd definately have the F,N,and R in there to help keep them seperate. Let's do the FORWARD anim. So, now you have 'mytankF.max' ready to roll.
In the bottom right side of Max, to the right of the little 'key' there's a 'window with a clock' symbol. This sets up the length and timing of an animation. Hit that and change the 'length' under the 'Animation' section to 2. This gives you three frames, 0, 1 and 2, and these will now be shown in that slider bar under the view windows. Close that dialog and hit the big square "Animate" button.
Now move the parts you want to move into the proper position for a Left Turn while thrusting. (I'm pretty sure it's left first, then center, then right) Make sure anything that has to move at any time in the next two frames has the white outline corners, so that it's keyframed. For the most part with fins this means one fin raised slightly higher than the other, but both still angled forward quite a bit.
Move the slider at the bottom of the view windows to 1, or the center frame. This is how the objects that you want to animate should look when you're thrusting straight ahead without turning. Now rotate or move the parts you want into the position you want when the player is moving straight forward. For the Razor, for instance, (just using it as an example as how Avatar learned this from seeing how DB did it) it was the rear fins angled all the way forward.
Now move the slider to 2, or the 'right turn while thrusting frame'. Move the pieces into position. Turn off the Animate button and move the slider through the frames, watching the animation. Save and export as XSI.
Now I do the 'neutral' position, which usually just means backing off on the angle of the fins a bit but leaving the animations pretty much the same as the 'forward' setting. For 'neutral' you're still setting up turns and such, but without the thrusters engaged.
Again, set up the positions and then save, then export as XSI.
Now one more time, this time as if you were hitting reverse, which usually means angling the fins backwards. I usually just reverse the angles of the 'neutral' settings for this one. Save and export.
Set up the ODF for the names
of the object and place it in the game, and it should now mix and match
the different frames you set up as you thrust and turn. If something looks
funny it usually means one moving object didn't get keyframed somewhere,
and you can just reload and adjust (remember to delete the .msh file from
the BZ2root/data/bindata folder that has been created by BZ2).
Special animations are usually about 30 frames long, but can be pretty much anything you want within reason. For those animations you do pretty much the same thing, but each frame of the animation doesn't have to be a keyframe. Just set the TIME CONFIGURATION up for however many frames you want, hit the ANIMATE button, and start moving parts around as you slide the TIME slider at the bottom of the screen to various points in the length of the animation. A moving part must have a first keyframe and a last keyframe, as shown by the little white/black circles that appear below the time slider.
Now, as you've seen already the game is weird about positioning. Very touchy about the pivot points and linking and such. It's very easy to get an object that looks perfectly in Max to just 'collapse' down to ground level in the game. For the most part it's better not to 'mirror', rotate or rescale things using the Max tools. The best way to do any of that is by applying an "XFORM" modifyer first. This sticks a yellow box around the object. Resize, rotate, or whatever you want to the yellow box and it should help keep things looking right.
Also, in the 'Heirarchy' tab (big box over three small boxes, next to 'modify' and 'create') you can alter the Pivot, which is MOST important in BZ2. Resetting the 'Scale' and 'Transform' for the Pivot and Object is what I end up doing constantly. By now you must know that the blue arrow is up, and that the green is the direction of most of the HP's effects. I say 'most' because the green arrow depends on the blue and red being properly aligned, and I end up hitting 'reset transform' on the pivot a lot because I don't trust the darn thing. I've had too many models do screwy things when they get in the game, like shine lights out backwards or shoot forward but look backward, because I screwed up the pivot on a HP. : )