**(1) AnimGroup**

u32 use_animation_channel When every channel has data, this is used instead of Anim, which was used by NIFF1.0. The following are the channels that are used: If the conventional Anim is used, please set ANIM_CHANNEL_NO_USE.NIFF2_ANIM_CHANNEL_NO_USE 0x00000000 NIFF2_ANIM_CHANNEL_ROTATE_AXIS 0x00000001 NIFF2_ANIM_CHANNEL_ROTATE_X 0x00000002 NIFF2_ANIM_CHANNEL_ROTATE_Y 0x00000004 NIFF2_ANIM_CHANNEL_ROTATE_Z 0x00000008 NIFF2_ANIM_CHANNEL_ORIENTATION_XY 0x00000010 NIFF2_ANIM_CHANNEL_TRANSLATION 0x00000020 NIFF2_ANIM_CHANNEL_UNIQUE_SCALE 0x00000040 NIFF2_ANIM_CHANNEL_CLASSICAL_SCALE 0x00000080 NIFF2_ANIM_CHANNEL_ORIENTATION_CONSTRAINT 0x00000100 NIFF2_ANIM_CHANNEL_DIRECTION_CONSTRAINT 0x00000200 NIFF2_ANIM_CHANNEL_UPVECTOR_CONSTRAINT 0x00000400 NIFF2_ANIM_CHANNEL_PREFERRED_AXIS_CONSTRAINT 0x00000800 NIFF2_ANIM_CHANNEL_POSITION_CONSTRAINT 0x00001000 NIFF2_ANIM_CHANNEL_UNIQUE_SCALE_CONSTRAINT 0x00002000 NIFF2_ANIM_CHANNEL_CLASSICAL_SCALE_CONSTRAINT 0x00004000NIFF2_ANIM_CHANNEL_ROTATE_AXIS is the animation channel for rotation around the axis.

NIFF2_ANIM_CHANNEL_ROTATE_X is the animation channel specifying the angle of rotation around the X axis.

NIFF2_ANIM_CHANNEL_ROTATE_Y is the animation channel specifying the angle of rotation around the Y axis.

NIFF2_ANIM_CHANNEL_ROTATE_Z is the animation channel specifying the angle of rotation around the Z axis.

NIFF2_ANIM_CHANNEL_ORIENTATION_XY is the animation channel specifying rotation along the X axis and Y axis.

If the X axis and the Y axis are not orthogonal, please create software on the N64 side so the Y axis can be adjusted.

NIFF2_ANIM_CHANNEL_TRANSLATION is the animation channel specifying the translating value.

NIFF2_ANIM_CHANNEL_UNIQUE_SCALE is the animation channel specifying the unique scale used by Unique.

NIFF2_ANIM_CHANNEL_CLASSICAL_SCALE is the animation channel specifying the scale used by normal CG tools.

NIFF2_ANIM_CHANNEL_ORIENTATION_CONSTRAINT is the animation channel constraining the orientation value for the specified object.

NIFF2_ANIM_CHANNEL_DIRECTION_CONSTRAINT is the animation channel directing the X axis toward the specified object.

NIFF2_ANIM_CHANNEL_UPVECTOR_CONSTRAINT is the animation channel directing the Y axis toward the specified object.

NIFF2_ANIM_CHANNEL_PREFERRED_AXIS_CONSTRAINT is the animation channel directing the Z axis toward the specified object.

NIFF2_ANIM_CHANNEL_POSITION_CONSTRAINT is the animation channel which constrains translating to the specified object.

NIFF2_ANIM_CHANNEL_UNIQUE_SCALE_CONSTRAINT is the animation channel which constrains the unique scale to the specified object.

NIFF2_ANIM_CHANNEL_CLASSICAL_SCALE_CONSTRAINT is the animation channel which constrains the classical scale to the specified object.

If multiple animation channels are used simultaneously, please describe each with bitOR. However, there are some impossible combinations as shown below:

RotateAxis, (RotateX, RotateY, RotateZ), OrientationXY cannot be used simultaneously. However, RotateX, RotateY and RotateZ can be used in combination.

UniqueScale and ClassicalScale cannot be used simultaneously.

OrientationConstraint cannot be used simultaneously with RotateAxis, RotateY, RotateZ, OrientationXY.

UpVectorConstraint cannot be used simultaneously with RotateAxis, RotateX, RotateZ, OrientationXY.

PreferredAxisConstraint cannot be used simultaneously with RotateAxis, RotateX, RotateY, OrientationXY.

PositionConstraint and Translation cannot be used simultaneously.

UniqueScaleConstraint cannot be used simultaneously with UniqueScale, ClassicalScale, ClassicalScaleConstraint.

ClassicalScaleConstraint cannot be used simultaneously with uniqueScale, ClassicalScale, UniqueScaleConstraint.

DirectionConstraint cannot make use of RotateAxis, RotateX, RotateY and OrientationXY at the same time. A number of the same kinds of constraint cannot be used at the same time for moving, rotating, and scaling.

u32 rotate_axis_num Describes the RotateAxis number. If the RotateAxis channel is not used, please describe 0x0. u32 rotate_x_num Describes the RotateX number. If the RotateX channel is not used, please describe 0x0. u32 rotate_y_num Describes the RotateY number. If the RotateY channel is not used, please describe 0x0. u32 rotate_z_num Describes the RotateZ number. If the RotateZ channel is not used, please describe 0x0. u32 orientation_xy_num Describes the OrientationXY number. If the OrientationXY channel is not used, please describe 0x0. u32 translation_num Describes the Translation number. If the Translation channel is not used, please describe 0x0. u32 unique_scale_num Describes the UniqueScale number. If the UniqueScale channel is not used, please describe 0x0. u32 classical_scale_num Describes the ClassicalScale number. If the ClassicalScale channel is not used, please describe 0x0. u32 kind_of_orientation_constraint_node The tags shown below describe the type of node that performs Orientation Constraint. If not using Orientation Constraint or for an external file reference, please describe with 0xffffffff.TAG_OBJ_LIST 0x00020000 TAG_CHAIN_ROOT_LIST 0x00240000 TAG_JOINT_LIST 0x00250000 TAG_EFFECTOR_LIST 0x00260000u32 orientation_constraint_node Describes the node index number that performs Orientation Constraint. If not using Orientation Constraint or for an external file reference, please describe with 0xffffffff.

u32 kind_of_direction_constraint_node The tags shown below describe the type of node that performs Direction Constraint. If not using Direction Constraint or for an external file reference, please describe with 0xffffffff.TAG_OBJ_LIST 0x00020000 TAG_CHAIN_ROOT_LIST 0x00240000 TAG_JOINT_LIST 0x00250000 TAG_EFFECTOR_LIST 0x00260000u32 direction_constraint_node Describes the node index number that performs Direction Constraint. If not using Direction Constraint or for an external file reference, please describe with 0xffffffff.

u32 kind_of_upvector_constraint_node The tags shown below describe the type of node that performs Upvector Constraint. If not using Upvector Constraint or for an external file reference, please describe with 0xffffffff.TAG_OBJ_LIST 0x00020000 TAG_CHAIN_ROOT_LIST 0x00240000 TAG_JOINT_LIST 0x00250000 TAG_EFFECTOR_LIST 0x00260000u32 upvector_constraint_node Describes the node index number that performs UpVector Constraint. If not using Upvector Constraint or for an external file reference, please describe with 0xffffffff.

u32 kind_of_preferred_axis_constraint_node The tags shown below describe the type of node that performs Preferred Axis Constraint. If not using Preferred Axis Constraint or for an external file reference, please describe with 0xffffffff.u32 preferred_axis_constraint_node Describes the node index number that performs Preferred Axis Constraint. If not using Preferred Axis Constraint or for an external file reference, please describe with 0xffffffff.

u32 kind_of_position_constraint_node The tags shown below describe the type of node that performs Position Constraint.

If not using Position Constraint or for an external file reference, please describe with 0xffffffff.u32 position_constraint_node Describes the node index number that performs Position Constraint. If not using Position Constraint or for an external file reference, please describe with 0xffffffff.

u32 kind_of_unique_scale_constraint_node The tags shown below describe the type of node that performs Unique Scale Constraint. If not using Unique Scale Constraint or for an external file reference, please describe with 0xffffffff.u32 unique_scale_constraint_node Describes the node index number that performs Unique Scale Constraint. If not using Unique Scale Constraint or for an external file reference, please describe with 0xffffffff.

u32 kind_of_classical_scale_constraint_node The tags shown below describe the type of node that performs Classical Scale Constraint.

If not using Classical Scale Constraint or for an external file reference, please describe with 0xffffffff.u32 classical_scale_constraint_node Describes the node index number that performs Classical Scale Constraint. If not using Classical Scale Constraint or for an external file reference, please describe with 0xffffffff.

u32 external_orientation_constraint_file_name_index If the Obj that performs Orientation Constraint references an external file, that file name is described with an ExternalNameList index number. Please do not include the directory name etc. when describing this file name.

If there is no external reference, please describe with 0xffffffff.

u32 external_orientation_constraint_obj_name_index If the Obj that performs Orientation Constraint references an external file, that Obj name is described with an ExternalNameList index number. If there is no external reference, please describe with 0xffffffff.

u32 external_direction_constraint_file_name_index If the Obj that performs Direction Constraint references an external file, that file name is described with an ExternalNameList index number. Please do not include the directory name etc. when describing this file name.

If there is no external reference, please describe with 0xffffffff.

u32 external_direction_constraint_obj_name_index If the Obj that performs Direction Constraint references an external file, that Obj name is described with an ExternalNameList index number. If there is no external reference, please describe with 0xffffffff.

u32 external_upvector_constraint_file_name_index If the Obj that performs Upvector Constraint references an external file, that file name is described with an ExternalNameList index number. Please do not include the directory name etc. when describing this file name.

If there is no external reference, please describe with 0xffffffff.

u32 external_upvector_constraint_obj_name_index If the Obj that performs Upvector Constraint references an external file, that Obj name is described with an ExternalNameList index number. If there is no external reference, please describe with 0xffffffff.

u32 external_preferred_axis_constraint_file_name_index If the Obj that performs Preferred Axis Constraint references an external file, that file name is described with an ExternalNameList index number. Please do not include the directory name etc. when describing this file name.

If there is no external reference, please describe with 0xffffffff.

u32 external_preferred_axis_constraint_obj_name_index If the Obj that performs Preferred Axis Constraint references an external file, that Obj name is described with the ExternalNameList index number. If there is no external reference, please describe with 0xffffffff.

u32 external_position_constraint_file_name_index If the Obj that performs Position Constraint references an external file, that file name is described with the ExternalNameList index number. Please do not include the directory name etc. when describing this file name.

If there is no external reference, please describe with 0xffffffff.

u32 external_position_constraint_obj_name_index If the Obj that performs Position Constraint references an external file, that Obj name is described with the ExternalNameList index number. If there is no external reference, please describe with 0xffffffff.

u32 external_unique_scale_constraint_file_name_index If the Obj that performs Unique Scale Constraint references an external file, that file name is described with the ExternalNameList index number. Please do not include the directory name etc. when describing this file name.

If there is no external reference, please describe with 0xffffffff.

u32 external_unique_scale_constraint_obj_name_index If the Obj that performs Unique Scale Constraint references an external file, that Obj name is described with the ExternalNameList index number. If there is no external reference, please describe with 0xffffffff.

u32 external_classical_scale_constraint_file_name_index If the Obj that performs Classical Scale Constraint references an external file, that file name is described with the ExternalNameList index number. Please do not include the directory name etc. when describing this file name.

If there is no external reference, please describe with 0xffffffff.

u32 external_classical_scale_constraint_obj_name_index If the Obj that performs Classical Scale Constraint references an external file, that Obj name is described with the ExternalNameList index number. If there is no external reference, please describe with 0xffffffff.

RotateAxis This is the RotateAxis area. This channel describes rotation by specifying the axis of rotation. When rotate_axis_num = 0, this area is not described. RotateX This is the channel that describes rotation around the X axis. When rotate_x_num = 0, this area is not described. RotateY This is the channel that describes rotation around the Y axis. When rotate_y_num = 0, this area is not described. RotateZ This is the channel that describes rotation around the Z axis. When rotate_z_num = 0, this area is not described. OrientationXZ This is the channel that describes rotation when it is expressed by orientation. When orientation_xy_num = 0, this area is not described. Translation This is the area that describes translating. When translation_num = 0, this are is not described. UniqueScale This is the area that describes UniqueScale. When unique_scale_num = 0, this area is not described. ClassicalScale This is the area that describes ClassicalScale scaling used by normal CG tools. When classical_scale_num = 0, this area is not described. Appendix ... about Unique Scale

u32 interpolation_type Describes the interpolation type between this key and the next key. The following flags have been defined: NIFF2_INTERPOLATION_TYPE_CONST retains data from this key to the next key. In this case, all acceleration data is ignored.NIFF2_INTERPOLATION_TYPE_CONST 0x00000000 NIFF2_INTERPOLATION_TYPE_FULL 0x00000001 NIFF2_INTERPOLATION_TYPE_LINEAR 0x00000002 NIFF2_INTERPOLATION_TYPE_HERMITE 0x00000003NIFF2_INTERPOLATION_TYPE_FULL expresses full frame animation. Please describe data for all keys. In this case, all acceleration data is ignored.

NIFF2_INTERPOLATION_TYPE_LINEAR performs linear interpolation from this key to the next key. In this case, all acceleration data is ignored.

NIFF2_INTERPOLATION_TYPE_HERMITE uses the Hermite function to perform 3D interpolation from this key to the next key.

u32 key Describes the Key value. float axis_x Describes the X component of the direction vector of the normalized rotation axis. float axis_y Describes the Y component of the direction vector of the normalized rotation axis. float axis_z Describes the Z component of the direction vector of the normalized rotation axis. float rotation_angle Uses radians to describe the angle around the rotation axis. float differential_axis_x Describes the X component of the connection vector for Hermite interpolation concerning the direction vector of the rotation axis. float differential_axis_y Describes the Y component of the connection vector for Hermite interpolation concerning the direction vector of the rotation axis. float differential_axis_z Describes the Z component of the connection vector for Hermite interpolation concerning the direction vector of the rotation axis. float differential_rotation_angle Describes the connection vector for Hermite interpolation concerning the angle around the rotation axis.

u32 interpolation_type Describes the interpolation type from this key to the next key. The following flags have been defined: NIFF2_INTERPOLATION_TYPE_CONST retains data from this key to the next key. In this case, all acceleration data is ignored.NIFF2_INTERPOLATION_TYPE_CONST 0x00000000 NIFF2_INTERPOLATION_TYPE_FULL 0x00000001 NIFF2_INTERPOLATION_TYPE_LINEAR 0x00000002 NIFF2_INTERPOLATION_TYPE_HERMITE 0x00000003NIFF2_INTERPOLATION_TYPE_FULL expresses full frame animation. Please describe data for all keys. In this case, all acceleration data is ignored.

NIFF2_INTERPOLATION_TYPE_LINEAR performs linear interpolation from this key to the next key. In this case, all acceleration data is ignored.

NIFF2_INTERPOLATION_TYPE_HERMITE uses the Hermite function to perform 3D interpolation from this key to the next key.

u32 key Describes the Key value. float rotate_angle Uses radians to describes the rotation angle around the X axis. float differential_rotate_angle Describes the connection vector for Hermite interpolation concerning the rotation angle around the X axis.

u32 interpolation_type Describes the interpolation type from this key to the next key. The following flags have been defined: NIFF2_INTERPOLATION_TYPE_CONST retains data from this key to next key. In this case, all acceleration data is ignored.NIFF2_INTERPOLATION_TYPE_CONST 0x00000000 NIFF2_INTERPOLATION_TYPE_FULL 0x00000001 NIFF2_INTERPOLATION_TYPE_LINEAR 0x00000002 NIFF2_INTERPOLATION_TYPE_HERMITE 0x00000003NIFF2_INTERPOLATION_TYPE_FULL expresses full frame animation. Please describe data for all keys. In this case, all acceleration data is ignored.

NIFF2_INTERPOLATION_TYPE_LINEAR performs linear interpolation from this key to the next key. In this case, all acceleration data is ignored.

NIFF2_INTERPOLATION_TYPE_HERMITE uses the Hermite function to perform 3D interpolation from this key to the next key.

u32 key Describes the Key value. float rotate_angle Uses radians to describe the rotation angle around the Y axis. float differential_rotate_angle Describes the connection vector for Hermit interpolation concerning the rotation angle around the Y axis.

u32 interpolation_type Describes the interpolation type from this key to the next key. The following flags have been defined: NIFF2_INTERPOLATION_TYPE_CONST retains data from this key to the next key. In this case, all acceleration data is ignored.u32 key Describes the Key value. float rotate_angle Uses radians to describe the rotation angle around the Z axis. float differential_rotate_angle Describes the connection vector for Hermite interpolation concerning the rotation angle around the Z axis.

u32 interpolation_type Describes the interpolation type from this key to the next key. The following flags have been defined: NIFF2_INTERPOLATION_TYPE_HERMITE uses the Hermit function to perform 3D interpolation from this key to the next key.

u32 key Describes the Key value. float x_axis_x Describes the X component of the normalized X axis. float x_axis_y Describes the Y component of the normalized X axis. float x_axis_z Describes the Z component of the normalized X axis. float y_axis_x Describes the X component of the normalized Y axis. float y_axis_y Describes the Y component of the normalized Y axis. float y_axis_z Describes the Z component of the normalized Y axis. float differential_x_axis_x Describes the connection vector for Hermite interpolation concerning the X component of the X axis. float differential_x_axis_y Describes the connection vector for Hermite interpolation concerning the Y component of the X axis. float differential_x_axis_z Describes the connection vector for Hermite interpolation concerning the Z component of the X axis. float differential_y_axis_x Describes the connection vector for Hermite interpolation concerning the X component of the Y axis. float differential_y_axis_y Describes the connection vector for Hermite interpolation concerning the Y component of the Y axis. float differential_y_axis_z Describes the connection vector for Hermite interpolation concerning the Z component of the Y axis.

u32 interpolation_type Describes the interpolation type from this key to the next key. The following flags have been defined: NIFF2_INTERPOLATION_TYPE_CONST retains the data from this key to the next key. In this case, all acceleration data is ignored.NIFF2_INTERPOLATION_TYPE_FULL expresses full frame animation. Please describe the data for all keys. In this case, all acceleration data is ignored.

u32 key Describes the Key value. float translate_x Describes the X component of the translation. float translate_y Describes the Y component of the translation. float translate_z Describes the Z component of the translation. float differential_translate_x Describes the connection vector for Hermite interpolation concerning the X component of the translation. float differential_translate_y Describes the connection vector for Hermite interpolation concerning the Y component of the translation. float differential_translate_z Describes the connection vector for Hermite interpolation concerning the Z component of the translation.

u32 interpolation_type Describes the interpolation type from this key to the next key. The following flags have been defined: NIFF2_INTERPOLATION_TYPE_CONST retains the data from this key to the next key. In this case, all acceleration data is ignored.NIFF2_INTERPOLATION_TYPE_FULL expresses full frame animation. Please describe the data for all keys. In this case, all acceleration data is ignored.

u32 key Describes the Key value. float scale_x Describes the scale value in the X axis direction. float scale_y Describes the scale value in the Y axis direction. float scale_z Describes the scale value in the Z axis direction. float differential_scale_x Describes the connection vector for Hermite interpolation concerning the scale value in the X axis direction. float differential_scale_y Describes the connection vector for Hermite interpolation concerning the scale value in the Y axis direction. float differential_scale_z Describes the connection vector for Hermite interpolation concerning the scale value in the Z axis direction. Appendix ... about Unique Scale

u32 interpolation_type Describes the interpolation type from this key to the next key. The following flags have been defined: NIFF2_INTERPOLATION_TYPE_CONST retains the data from this key to the next key. In this case, all acceleration data is ignored.NIFF2_INTERPOLATION_TYPE_FULL expresses full frame animation. Please describe the data for all keys. In this case, all acceleration data is ignored.

NIFF2_INTERPOLATION_TYPE_LINEAR uses the Hermite function to perform 3D interpolation from this key to the next key.

u32 key Describes the Key value. float scale_x Describes the scale value in the X axis direction. float scale_y Describes the scale value in the Y axis direction. float scale_z Describes the scale value in the Z axis direction. float differential_scale_x Describes the connection vector for Hermite interpolation concerning the scale value in the X axis direction. float differential_scale_y Describes the connection vector for Hermite interpolation concerning the scale value in the Y axis direction. float differential_scale_z Describes the connection vector for Hermite interpolation concerning the scale value in the Z axis direction.