Difference between revisions of "Sims 3:0x8EAF13DE"
ChaosMageX (Talk | contribs) (→Unencrypted Rig Data: Changed DWORDs to FLOATs based on research) |
ChaosMageX (Talk | contribs) (→Unencrypted Rig Data: Updated field IDs based on research) |
||
Line 153: | Line 153: | ||
DWORD Bone Count | DWORD Bone Count | ||
--repeat(Bone Count) | --repeat(Bone Count) | ||
− | FLOAT[3] Position | + | FLOAT[3] Position |
− | + | FLOAT[4] Quaternion Orientation | |
− | + | FLOAT[3] Scaling? | |
− | FLOAT | + | |
− | FLOAT[ | + | |
DWORD Bone Name Length | DWORD Bone Name Length | ||
STRING (Bone Name Length ASCII characters) | STRING (Bone Name Length ASCII characters) | ||
− | DWORD | + | DWORD ??? |
− | DWORD | + | DWORD Parent Index |
− | DWORD | + | DWORD Bone Name Hash (FNV 32) |
− | DWORD | + | DWORD Flags? Usually 0x23 |
DWORD Skeleton Name Length | DWORD Skeleton Name Length | ||
STRING (Skeleton Name Length ASCII characters) | STRING (Skeleton Name Length ASCII characters) |
Revision as of 21:29, 27 September 2011
Modding Reference by Category | |
---|---|
Sims 3 :DBPF | File Types | RCOL(Scene) | Catalog Resource | String Table | Key Table | TS3 Programmer's Reference |
Rig Resource - _RIG | ||
---|---|---|
TypeID: | 0x8EAF13DE | |
Game Version: | The Sims 3 |
Contents |
Overview
There are two formats of the RIG file. The basic file content is a Granny 2 data file. Apart from the official tools, there are some user-contributed tools for manipulating the data on altervista. In addition, a second format exists, where the Granny data is wrapped with some additional fields.
Get "Granny Viewer" from the altervista downloads page and you can load the data (export it as 'somefile.gr2').
Also related is this thread on Xentax.
Format
Optional wrapper
There is an optional wrapper to the Granny data. This can be identified by the first DWORD in the file being 0x8EAF13DE (i.e. the resource type). The format is:
DWORD 0x8EAF13DE DWORD 0 DWORD offset1 // To "Int2" block from start of Granny data DWORD offset2 // To start of Granny data (from start of this DWORD) DWORD IKChainsOffset // To start first of "Int2" Chunk (from start of this DWORD) DWORD IKTargetSlotsOffset //(from start of this DWORD) DWORD IKInfoNodeOffset //(from start of this DWORD) DWORD CompressNodeOffset //(from start of this DWORD) DWORD FullBoneListOffset //(from start of this DWORD) DWORD // unused offset? DWORD // unused offset? DWORD // unused offset? DWORD // unused offset? --insert Granny2 data --Padding 00's to next even DWORD DWORD Count1 --repetition Count1: DWORD offset to IK Chain entry (from start of this DWORD) --repetition Count1: //IK Chain entry DWORD DWORD ChainLength BYTE[32] //00 DWORD IK pole //Bone index from granny2 data DWORD Chain start //Bone index from granny2 data DWORD SlotInfoNode //Bone index from granny2 data DWORD SlotInfoRootNode //Bone index from granny2 data DWORD SlotOffsetNode //Bone index from granny2 data DWORD SlotOffsetRootNode //Bone index from granny2 data DWORD InfoNodeFlags //(bits 0-10 means that node is enabled) DWORD InfoNode0 //Bone index from granny2 data DWORD InfoNode1 //Bone index from granny2 data DWORD InfoNode2 //Bone index from granny2 data DWORD InfoNode3 //Bone index from granny2 data DWORD InfoNode4 //Bone index from granny2 data DWORD InfoNode5 //Bone index from granny2 data DWORD InfoNode6 //Bone index from granny2 data DWORD InfoNode7 //Bone index from granny2 data DWORD InfoNode8 //Bone index from granny2 data DWORD InfoNode9 //Bone index from granny2 data DWORD InfoNode10 //Bone index from granny2 data --repetition(ChainLength) DWORD DWORD //0 //Chain links --repetition(ChainLength) DWORD EndBone //Bone index from granny2 data DWORD StartBone //Bone index from granny2 data //IK Target Slots DWORD count --repetition count DWORD //Bone index from granny2 data BYTE[56] //00 //Info Nodes DWORD count --repetition count DWORD //Bone index from granny2 data //Compress Nodes(i.e. "b__R_Calf__Compress__") DWORD count --repetition count DWORD //Bone index from granny2 data //Full bone list(contains every bone from granny2 data) DWORD count --repetition count DWORD //Bone index from granny2 data
Granny2 Data
All offsets in this section start from the start of the Granny2 Data.
BYTE[16] // See Rick's note below DWORD Header Size // ? DWORD Header Format DWORD Reserved DWORD Reserved DWORD Version // 6 DWORD DataSize DWORD CRC DWORD SectionOffset DWORD SectionCount // 1 DWORD RootObjectTypeIndex DWORD RootObjectTypeOffset DWORD RootObjectIndex DWORD RootObjectOffset DWORD Tag // 0x8000001C DWORD StringDb CRC DWORD[3] Unused //Sections --repeat(SectionCount) DWORD CompressionFormat // 2 DWORD DataOffset DWORD DataSize DWORD DecompressedSize DWORD Alignment DWORD DWORD DWORD Int1Offset DWORD Int1Count // ? DWORD Int1EndOffset // to start of byte after Int1 section DWORD //Int1 Section // does this repeat or what? DWORD DWORD DWORD // Data BYTE[DataSize]
Rick adds:
The blobs that start with the following sequences are Granny2 data blocks:
B867B0CAF86DB10F84728C7E5E19001E 29DE6CC0BAA4532B25F5B7A5F666E2EE 0E1195B56AA5B54BEB2828502578B304 E59B495E6F631F141E13EBA990BEEDC4 3195D4E320DC4F62CC36D03AB182FF89
Unencrypted Rig Data
Starting with the Create A Pet Demo, there is a new third format of RIG files that is unencrypted:
DWORD Major Version? 4 DWORD Minor Version? 2 DWORD Bone Count --repeat(Bone Count) FLOAT[3] Position FLOAT[4] Quaternion Orientation FLOAT[3] Scaling? DWORD Bone Name Length STRING (Bone Name Length ASCII characters) DWORD ??? DWORD Parent Index DWORD Bone Name Hash (FNV 32) DWORD Flags? Usually 0x23 DWORD Skeleton Name Length STRING (Skeleton Name Length ASCII characters) // The following data varies between rigs // Object RIGs: DWORD ??? Always 0 // Animal Sim RIGs: DWORD[18] Aligned Compressed Data? // Human Sim RIGs: DWORD[94] Aligned Compressed Data?
Modding Reference by Category | |
---|---|
Sims 3 :DBPF | File Types | RCOL(Scene) | Catalog Resource | String Table | Key Table | TS3 Programmer's Reference |