{ ;============================================================================== ; RVGL CUSTOM ANIMATIONS ; ; This file allows creating custom object animation (moving whole meshes): ; - Up to 256 different animations can be defined. ; - Each has a main body part and up to 15 child bones which follow their parent bone. ; - Every animation can have up to 256 keyframes, defining the bone positions at that time. ; The game then interpolates the animation between those keyframes. ; - Up to 64 custom model slots are supported. ; ; The type of interpolation can be one of the following: ; 0: linear. Constant velocity and angular velocity. ; 1: smooth start, sudden end. Like an object starting to fall, then hitting the ground. ; 2: sudden start, smooth end. ; 3: both smooth start and end. ; 4: exaggerating or overshooting, i.e. first moving a bit in the opposite direction, ; then over the target amount, then again backwards. Gives a robotic look. ;============================================================================== ;============================================================================== ; ANIMATION ;============================================================================== ; Possible options that can be defined within an animation block, and their ; default values are given below: ; ; ANIMATION { ; Slot 0 ; Slot ID (0 to 255) ; Name "DEFAULT" ; Display name (currently unused) ; Mode 0 ; 0: loop / 1: animate a single time, stopping after the last frame / 2: back and forth (reverse after last keyframe) ; NeedsTrigger false ; Whether the animation needs to be triggered ; ; BONE { ; BoneID 0 ; Body part ID (0 to 15); part 0 is the main body part ; ModelID -1 ; Model ID (0 to 63, or -1) ; Parent 0 ; Body part parent ID; must be smaller than the bone ID; not present at the main body part ; OffsetTranslation 0.000 0.000 0.000 ; Offset to parent location ; OffsetRotationAxis 0.000 -1.000 0.000 ; Offset rotation axis ; OffsetRotationAmount 0.000 ; Offset rotation (in degrees) ; } ; ; KEYFRAME { ; FrameNr 0 ; Number of the keyframe (0 to 255) ; Time 1.000 ; Time (in seconds) since previous keyframe ; Type 0 ; Interpolation type. 0 - linear, 1 - smooth start, 2 - smooth end, 3 - both smooth, 4 - overshoot ; BONE { ; BoneID 0 ; Body part ID ; Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) ; Translation 0.000 0.000 0.000 ; Translation ; RotationAxis 0.000 -1.000 0.000 ; Rotation axis ; RotationAmount 0.000 ; Rotation (in degrees) ; } ; } ; } ;============================================================================== ;============================================================================== ;-------- ; Models ;-------- MODEL 0 "skilift" MODEL 1 "skilift_doors" MODEL 2 "tw_train" MODEL 3 "tw_train_fwheel" MODEL 4 "tw_train_rwheel" MODEL 5 "mk_thwomp" MODEL 6 "muse_barrel" MODEL 7 "muse_mercury" MODEL 8 "muse_venus" MODEL 9 "muse_earth" MODEL 10 "muse_moon" MODEL 11 "mhk_robot_base" MODEL 12 "mhk_robot_shoulder" MODEL 13 "mhk_robot_upper_arm" MODEL 14 "mhk_robot_elbow" MODEL 15 "mhk_robot_lower_arm" MODEL 16 "mhk_robot_hand" ============================================================================== ANIMATION ============================================================================== Possible options that can be defined within an animation block, and their default values are given below: ANIMATION { Slot 0 ; Slot ID (0 to 255) Name "SKILIFT 1" ; Display name (currently unused) Mode 0 ; 0: loop / 1: animate a single time, stopping after the last frame / 2: back and forth (reverse after last keyframe) NeedsTrigger false ; Whether the animation needs to be triggered BONE { BoneID 0 ; Body part ID (0 to 15); part 0 is the main body part ModelID 0 ; Model ID (0 to 63, or -1) Parent 0 ; Body part parent ID; must be smaller than the bone ID; not present at the main body part OffsetTranslation 0.000 0.000 0.000 ; Offset to parent location OffsetRotationAxis 0.000 -1.000 0.000 ; Offset rotation axis OffsetRotationAmount 0.000 ; Offset rotation (in degrees) } BONE { BoneID 1 ; Body part ID (0 to 15); part 0 is the main body part ModelID 1 ; Model ID (0 to 63, or -1) Parent 0 ; Body part parent ID; must be smaller than the bone ID; not present at the main body part OffsetTranslation -250.000 -200.000 -200.000 ; Offset to parent location OffsetRotationAxis 0.000 -1.000 0.000 ; Offset rotation axis OffsetRotationAmount 0.000 ; Offset rotation (in degrees) } BONE { BoneID 2 ; Body part ID (0 to 15); part 0 is the main body part ModelID 1 ; Model ID (0 to 63, or -1) Parent 0 ; Body part parent ID; must be smaller than the bone ID; not present at the main body part OffsetTranslation 250.000 -200.000 -200.000 ; Offset to parent location OffsetRotationAxis 0.000 -1.000 0.000 ; Offset rotation axis OffsetRotationAmount 0.000 ; Offset rotation (in degrees) } KEYFRAME { FrameNr 0 ; Number of the keyframe (0 to 255) Time 1.000 ; Time (in seconds) since previous keyframe Type 3 ; Interpolation type. 0 - linear, 1 - smooth start, 2 - smooth end, 3 - both smooth, 4 - overshoot BONE { BoneID 0 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 1 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 2 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } } KEYFRAME { FrameNr 1 ; Number of the keyframe (0 to 255) Time 1.000 ; Time (in seconds) since previous keyframe Type 3 ; Interpolation type. 0 - linear, 1 - smooth start, 2 - smooth end, 3 - both smooth, 4 - overshoot BONE { BoneID 0 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 1 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 150.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 2 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation -150.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 } } KEYFRAME { FrameNr 2 ; Number of the keyframe (0 to 255) Time 12.000 ; Time (in seconds) since previous keyframe Type 3 ; Interpolation type. 0 - linear, 1 - smooth start, 2 - smooth end, 3 - both smooth, 4 - overshoot BONE { BoneID 0 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation -33500.000 -5000.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 1 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 2 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 } } KEYFRAME { FrameNr 3 ; Number of the keyframe (0 to 255) Time 1.000 ; Time (in seconds) since previous keyframe Type 3 ; Interpolation type. 0 - linear, 1 - smooth start, 2 - smooth end, 3 - both smooth, 4 - overshoot BONE { BoneID 0 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 1 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation -150.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 2 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 150.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 } } KEYFRAME { FrameNr 4 ; Number of the keyframe (0 to 255) Time 2.000 ; Time (in seconds) since previous keyframe Type 3 ; Interpolation type. 0 - linear, 1 - smooth start, 2 - smooth end, 3 - both smooth, 4 - overshoot BONE { BoneID 0 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 1 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 2 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 } } KEYFRAME { FrameNr 5 ; Number of the keyframe (0 to 255) Time 3.000 ; Time (in seconds) since previous keyframe Type 3 ; Interpolation type. 0 - linear, 1 - smooth start, 2 - smooth end, 3 - both smooth, 4 - overshoot BONE { BoneID 0 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 1000.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 1 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 150.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 2 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation -150.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 } } KEYFRAME { FrameNr 6 ; Number of the keyframe (0 to 255) Time 19.000 ; Time (in seconds) since previous keyframe Type 3 ; Interpolation type. 0 - linear, 1 - smooth start, 2 - smooth end, 3 - both smooth, 4 - overshoot BONE { BoneID 0 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 33500.000 5000.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 1 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 2 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 } } KEYFRAME { FrameNr 7 ; Number of the keyframe (0 to 255) Time 2.000 ; Time (in seconds) since previous keyframe Type 3 ; Interpolation type. 0 - linear, 1 - smooth start, 2 - smooth end, 3 - both smooth, 4 - overshoot BONE { BoneID 0 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 1 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 2 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 } } KEYFRAME { FrameNr 8 ; Number of the keyframe (0 to 255) Time 3.000 ; Time (in seconds) since previous keyframe Type 3 ; Interpolation type. 0 - linear, 1 - smooth start, 2 - smooth end, 3 - both smooth, 4 - overshoot BONE { BoneID 0 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 0.000 0.000 -1000.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 1 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation -150.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 ; Rotation (in degrees) } BONE { BoneID 2 ; Body part ID Visible true ; Toggle body part visibility (for all future keyframes until it is changed again) Translation 150.000 0.000 0.000 ; Translation RotationAxis 0.000 -1.000 0.000 ; Rotation axis RotationAmount 0.000 } } } ============================================================================== ============================================================================== }