Difference between revisions of "CINF (File Format)"
From Retro Modding Wiki
m |
(→Bone) |
||
(9 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | The '''CINF format''' is for skeletons. | + | The '''CINF format''' is for character layouts (i.e. skeletons/armatures). |
+ | Character layouts are associated with models and skins through [[ANCS (File Format)|ANCS]] files. | ||
− | {{todo| | + | {{todo|MP3/DKCR differences}} |
+ | |||
+ | == Format == | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Type | ||
+ | ! Count | ||
+ | ! Name | ||
+ | ! Notes | ||
+ | |- | ||
+ | | u32 | ||
+ | | 1 | ||
+ | | '''Bone Count''' | ||
+ | | | ||
+ | |- | ||
+ | | [[#Bone|Bone]] | ||
+ | | ''Bone Count'' | ||
+ | | '''Bone Table''' | ||
+ | | | ||
+ | |- | ||
+ | | u32 | ||
+ | | 1 | ||
+ | | '''Build Order ID Count''' | ||
+ | | | ||
+ | |- | ||
+ | | u32 | ||
+ | | ''Build Order ID Count'' | ||
+ | | '''Build Order ID Table''' | ||
+ | | The first element of the ID table is the root bone, followed by the rest of the bone IDs in reverse numerical order. This table is enumerated in-order to construct a singly-linked hierarchy of bones using [[wikipedia:Left-child right-sibling binary tree|child/sibling convention]]. | ||
+ | |- | ||
+ | | u32 | ||
+ | | 1 | ||
+ | | '''Bone Name Count''' | ||
+ | | | ||
+ | |- | ||
+ | | [[#Bone Name|Bone Name]] | ||
+ | | ''Bone Name Count'' | ||
+ | | '''Bone Name Table''' | ||
+ | | | ||
+ | |- | ||
+ | | colspan=4 {{unknown|End of file}} | ||
+ | |} | ||
+ | |||
+ | === Bone === | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Offset | ||
+ | ! Type | ||
+ | ! Count | ||
+ | ! Name | ||
+ | ! Notes | ||
+ | ! MP1 | ||
+ | ! MP2 | ||
+ | |- | ||
+ | | 0x0 | ||
+ | | u32 | ||
+ | | 1 | ||
+ | | '''Bone ID''' | ||
+ | | | ||
+ | | {{check}} | ||
+ | | {{check}} | ||
+ | |- | ||
+ | | 0x4 | ||
+ | | u32 | ||
+ | | 1 | ||
+ | | '''Parent Bone ID''' | ||
+ | | | ||
+ | | {{check}} | ||
+ | | {{check}} | ||
+ | |- | ||
+ | | 0x8 | ||
+ | | {{Vector3f}} | ||
+ | | 1 | ||
+ | | '''Position''' | ||
+ | | The position is in the skeleton's local space, not in the parent's bone space. | ||
+ | | {{check}} | ||
+ | | {{check}} | ||
+ | |- | ||
+ | | 0x14 | ||
+ | | {{Quaternion}} | ||
+ | | 1 | ||
+ | | '''Rotation''' | ||
+ | | Initial rotation of the bone, also in the skeleton's local space. | ||
+ | | {{nocheck}} | ||
+ | | {{check}} | ||
+ | |- | ||
+ | | 0x24 | ||
+ | | {{Quaternion}} | ||
+ | | 1 | ||
+ | | '''Local Rotation''' | ||
+ | | Initial local rotation of the bone in this bone's local space (parent-relative). | ||
+ | | {{nocheck}} | ||
+ | | {{check}} | ||
+ | |- | ||
+ | | 0x34 | ||
+ | | u32 | ||
+ | | 1 | ||
+ | | '''Linked Bone Count''' | ||
+ | | | ||
+ | | {{check}} | ||
+ | | {{check}} | ||
+ | |- | ||
+ | | 0x38 | ||
+ | | u32 | ||
+ | | ''Linked Bone Count'' | ||
+ | | '''Linked Bone ID Array''' | ||
+ | | This array includes both the parent bone ID as well as all children. | ||
+ | | {{check}} | ||
+ | | {{check}} | ||
+ | |- | ||
+ | | colspan=7 {{unknown|End of bone}} | ||
+ | |} | ||
+ | |||
+ | === Bone Name === | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Type | ||
+ | ! Count | ||
+ | ! Name | ||
+ | ! Notes | ||
+ | |- | ||
+ | | string | ||
+ | | 1 | ||
+ | | '''Bone Name''' | ||
+ | | | ||
+ | |- | ||
+ | | u32 | ||
+ | | 1 | ||
+ | | '''Bone ID''' | ||
+ | | | ||
+ | |- | ||
+ | | colspan=4 {{unknown|End of bone name}} | ||
+ | |} | ||
[[Category:File Formats]] | [[Category:File Formats]] |
Latest revision as of 12:52, 22 April 2017
The CINF format is for character layouts (i.e. skeletons/armatures). Character layouts are associated with models and skins through ANCS files.
To do: MP3/DKCR differences |
Format
Type | Count | Name | Notes |
---|---|---|---|
u32 | 1 | Bone Count | |
Bone | Bone Count | Bone Table | |
u32 | 1 | Build Order ID Count | |
u32 | Build Order ID Count | Build Order ID Table | The first element of the ID table is the root bone, followed by the rest of the bone IDs in reverse numerical order. This table is enumerated in-order to construct a singly-linked hierarchy of bones using child/sibling convention. |
u32 | 1 | Bone Name Count | |
Bone Name | Bone Name Count | Bone Name Table | |
End of file |
Bone
Offset | Type | Count | Name | Notes | MP1 | MP2 |
---|---|---|---|---|---|---|
0x0 | u32 | 1 | Bone ID | ✔ | ✔ | |
0x4 | u32 | 1 | Parent Bone ID | ✔ | ✔ | |
0x8 | Vector3f | 1 | Position | The position is in the skeleton's local space, not in the parent's bone space. | ✔ | ✔ |
0x14 | Quaternion | 1 | Rotation | Initial rotation of the bone, also in the skeleton's local space. | ✖ | ✔ |
0x24 | Quaternion | 1 | Local Rotation | Initial local rotation of the bone in this bone's local space (parent-relative). | ✖ | ✔ |
0x34 | u32 | 1 | Linked Bone Count | ✔ | ✔ | |
0x38 | u32 | Linked Bone Count | Linked Bone ID Array | This array includes both the parent bone ID as well as all children. | ✔ | ✔ |
End of bone |
Bone Name
Type | Count | Name | Notes |
---|---|---|---|
string | 1 | Bone Name | |
u32 | 1 | Bone ID | |
End of bone name |