19. JointList

(1) JointList

u32 joint_list_tag Describes the tags of JointList. Please set the tags shown below.

TAG_JOINT_LIST          0x00250000

u32 joint_list_header_size Describes the JointListHeader byte size.
u32 joint_list_size Describes the JointList byte size.
u32 joint_num Describes the Joint number.
u32 joint_num_byte Describes the byte size of each Joint.
Joint This is the Joint area.

Appendix ... about IK System

Go to the data chunk

(2) Joint
u32 joint_tag Describes the tags of Joint. Please set the tags shown below.

TAG_JOINT               0x00250100

u32 this_joint_index Describes the index number for this Joint.
u32 joint_size Describes the Joint byte size.
u32 joint_name_index Describes the Joint name with the index number in NameList.
u32 joint_type Describes the Joint type.

In NIFF2.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 forward in response to the movement of an Effector. Thus, 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. Thus, 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 and NIFF2_JOINT_UP, NIFF2_JOINT_DOWN are described with bitOR.

float joint_length Describes the Joint length.
float resplane_axis_x
float resplane_axis_y
float respalne_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 Describes the Obj number linked to Joint.
u32 external_obj_num Describes the Obj number linked to Joint referencing an external file.
u32 joint_index Describes the index number of a Joint linked by this Joint. When linking this Joint to an Effector, please describe the following flag:

NIFF2_NO_LINK_TO_JOINT		0xffffffff

u32 effector_index Describes the index number of the Effector linked to this Joint. When linking this Joint to a Joint, please describe the following flag:

NIFF2_NO_LINK_TO_EFFECTOR	0xffffffff

u32 anim_index Describes 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 run 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 linked to animation. If there are no links to animation, please describe anim_index = 0xffffffff.
u32 obj_index Describes the index number for the Obj linked from the Joint

When obj_num = 0, this field is not described.

u32 external_obj_file_name_index When the Obj that is linked from the Joint references an external file, this file name is described with an ExternalNameList index number.

Please do not include the directory name etc. when describing the file name.

When external_obj_num = 0, this field is not described.

u32 external_obj_name_index When the Obj that is linked from the Joint references an external file, that Obj name is described with an ExternalNameList index number.

When external_obj_num = 0, this field is not described.

Appendix ... about IK System

Go to the data chunk