u32 joint_list_tag JointListを示すタグを記述します。下記のタグを指定してください。 TAG_JOINT_LIST 0x00250000u32 joint_list_header_size JointListHeaderのバイト数を記述します。 u32 joint_list_size JointListのバイト数を記述します。 u32 joint_num Joint数を記述します。 u32 joint_num_byte それぞれのJointのバイト数を記述します。 Joint Jointエリアです。
u32 joint_tag Jointを示すタグを記述します。下記のタグを指定してください。 TAG_JOINT 0x00250100u32 this_joint_index このJointのインデックス番号を記述します。 u32 joint_size Jointのバイト数を記述します。 u32 joint_name_index Joint名をNameList内のインデックス番号で記述します。 u32 joint_type Jointのタイプを記述します。 NIFF2.0ではIK-Chainは2joint-chainのみを扱います。下記のフラグが定義されています。
NIFF2_1ST_JOINT 0x00000000 NIFF2_2ND_JOINT 0x00000001 NIFF2_JOINT_UP 0x00000000 NIFF2_JOINT_DOWN 0x00010000NIFF2_1ST_JOINTは第1Jointの場合に設定します。NIFF2_2ND_JOINTは第2Jointの場合に設定します。
NIFF2_JOINT_UPはEffectorの移動に応じて正方向にIK-Chainが動作します。正方向とは、第1JointのY軸の正の方向にEffectorを移動した時にIK-Chainが曲がることを意味します。
NIFF2_JOINT_DOWNはEffectorの移動に応じて逆方向にIK-Chainが動作します。逆方向とは、第1JointのY軸の負の方向にEffectorを移動したときにIK-Chainが曲がることを意味します。
NIFF2_1ST_JOINT, NIFF2_2ND_JOINTとNIFF2_JOINT_UP, NIFF2_JOINT_DOWNはそれぞれbitORして記述します。
float joint_length Jointの長さを記述します。 float resplane_axis_x
float resplane_axis_y
float respalne_axis_z本来のZ軸の向きからのずれを示すベクトルです。IKのレゾリューションプレーンの法線ベクトルを示します。通常はZ軸の向き(x, y, z)=(0, 0, 1)に設定してください。 u32 obj_num JointからリンクするObj数を記述します。 u32 external_obj_num 外部ファイル参照するJointからリンクするObj数を記述します。 u32 joint_index このJointがリンクするJointのインデックス番号を記述します。このJointがEffectorにリンクする場合、下記のフラグを記述してください。 NIFF2_NO_LINK_TO_JOINT 0xffffffffu32 effector_index このJointがリンクするEffectorのインデックス番号を記述します。このJointがJointにリンクする場合、下記のフラグを記述してください。 NIFF2_NO_LINK_TO_EFFECTOR 0xffffffffu32 anim_index このJointがリンクするAnimGroupのインデックス番号を記述します。 第1Jointの場合、PreferredAxisConstraintまたはUpVectorConstraintチャンネルを使用することでレゾリューション・プレーンを決定することができます。
これらのconstraintがされていない場合は、ChainRootのZ軸に沿ってレゾリューションプレーンが決定されます。
Jointの回転はX軸周りの回転がもっとも優先されます。実際のレゾリューションプレーンはX軸の回転に矛盾しない形にZ軸を向けた時に決定します。
PreferredAxisConstraintをリンクした場合はJointのZ軸をそのconstraintされたオブジェクトに向くように調整されます。勿論、最優先回転軸はX軸です。
UpVectorConstraintをリンクした場合は、第2Jointの原点と、Effector、Constraintされているオブジェクトの原点がレゾリューションプレーン上になるように計算されます。
第2Jointにはアニメーションがリンクされていても無視されます。
また、何もアニメーションをリンクしない場合はanim_index = 0xffffffffを記述してください。
u32 obj_index JointからリンクするObjのインデックス番号を記述します。 obj_num = 0の場合、このフィールドは記述されません。
u32 external_obj_file_name_index JointからリンクするObjを外部ファイル参照する場合、そのファイル名をExternalNameListのインデックス番号で記述します。 ファイル名はディレクトリ名などを含まない形で記述してください。
external_obj_num = 0の場合、このフィールドは記述されません。
u32 external_obj_name_index JointからリンクするObjを外部ファイル参照する場合、そのObj名をExternalNameList内のインデックス番号で記述します。 external_obj_num = 0の場合、このフィールドは記述されません。