### Nintendo Confidential

## 19. Joint Node

### (1) JointList Description (English)

> u32 joint_list_tag | Specifies the tags of JointList. Please set the tags shown below.
>     TAG_JOINT_LIST          0x00250000
> u32 joint_list_header_size | Specifies the JointListHeader byte size.
> u32 joint_list_size | Specifies the JointList byte size.
> u32 joint_num | Specifies the total number of the Joint.
> u32 joint_num_byte | Specifies the byte size of each Joint.
> Joint | This is the Joint area.

> See Data Chunk

### (2) Joint Description (English)

> u32 joint_tag | Specifies the tags of Joint. Please set the tags shown below.
>     TAG_JOINT               0x00250100
> u32 this_joint_index | Specifies the index number for this Joint.
> u32 joint_size | Specifies the Joint byte size.
> u32 joint_name_index | Specifies the index number of the Joint name in NameList.
> u32 joint_type | Specifies the Joint type. In NIFF 2.0, IK-Chain only handles a 2-joint-chain. The following flags are defined:
>     NIFF2_1ST_JOINT             0x00000000
>     NIFF2_2ND_JOINT             0x00000001
>     NIFF2_JOINT_UP              0x00000000
>     NIFF2_JOINT_DOWN            0x00010000
> Set NIFF2_1ST_JOINT for the 1st Joint. Set NIFF2_2ND_JOINT for the 2nd Joint. With NIFF2_JOINT_UP, IK-Chain moves in a forward direction in response to the movement of an Effector. A forward direction means IK-Chain bends when the Effector moves in the positive direction along the Y axis of the 1st Joint.

> With NIFF2_JOINT_DOWN, IK-Chain moves in the reverse direction in response to the movement of an Effector. A reverse direction means IK-Chain bends when the Effector moves in the negative direction along the Y axis of the 1st Joint.

> NIFF2_1ST_JOINT, NIFF2_2ND_JOINT, NIFF2_JOINT_UP, and NIFF2_JOINT_DOWN are specified with bitOR.

> float joint_length | Specifies the Joint length.
> float resplane_axis_x float resplane_axis_y float resplane_axis_z | This vector indicates divergence from the direction of the Z axis. It indicates the normal vector of the IK resolution plane. Please set toward the Z axis (x,y,z)=(0,0,1).
> u32 obj_num | Specifies the total number of the Obj linked to Joint.
> u32 external_obj_num | Specifies the total number of the Obj linked to Joint that reference an external file.
> u32 joint_index | Specifies the index number of a Joint linked by this Joint. When linking this Joint to an Effector, please specify the following flag:
>     NIFF2_NO_LINK_TO_JOINT		0xffffffff
> u32 effector_index | Specifies the index number of the Effector linked to this Joint. When linking this Joint to a Joint, please specify the following flag:
>     NIFF2_NO_LINK_TO_EFFECTOR	0xffffffff
> u32 anim_index | Specifies the index number of the AnimGroup linked to this Joint. For the 1st Joint, the resolution plane can be determined using the PreferredAxisConstraint channel or the UpVectorConstraint channel. If these constraints are not used, then the resolution plane will be determined as parallel to the Z axis of ChainRoot. For Joint rotation, highest priority goes to rotation around the X axis. The actual resolution plane becomes the plane that faces the Z axis without conflicting with rotation around the X axis. When there is a link to PreferredAxisConstraint, the Joint's Z axis is adjusted in the direction of the object which has that constraint. Of course, rotation around the X axis has the highest priority. When there is a link to UpVectorConstraint, the origin point of the 1st Joint and the origin points of Effector and Constraint objects are calculated so they lay on the resolution plane. The 2nd Joint is ignored, even when it is linked to animation. If there are no links to animation, please specify anim_index = 0xffffffff.
> u32 obj_index | Specifies the index number for the Obj linked from the Joint When obj_num = 0, this field is not specified.
> u32 external_obj_file_name_index | When the Obj that is linked from the Joint references an external file, this file name is specified with an ExternalNameList index number. Please do not include the directory name etc. when specifying the file name. When external_obj_num = 0, this field is not specified.
> u32 external_obj_name_index | When the Obj that is linked from the Joint references an external file, that Obj name is specified with an ExternalNameList index number. When external_obj_num = 0, this field is not specified.

> See Data Chunk

> See Appendix 5: IK System

> Back to Index

Copyright 1998, 1999 NINTENDO Co., Ltd. All rights reserved.
Copyright 1998, 1999 MONEGI CORPORATION All rights reserved.