Здесь я собрал почти всю информацию,что была в сети + собственные раскопки:
0x00 0x52534205 RSC. //заголовок
0x04 0x700000 //тип ресурса 0x70 ModelFrag (.wft) (112)
0x08 FLAG //флаги
0x10 HeaderLength (предположительно)
0x1С центр X,Y,Z
0x28 радиус объекта?
0x2C центр масс Х,Y,Z
0x3C центр масс Х,Y,Z
0x4C unbrokenCGOffset //X Y Z
0x5C 16b dampingLinearC //X Y Z
0x6C 16b dampingLinearV //X Y Z
0x7C 16b dampingLinearV2 //X Y Z
0x8C 16b dampingAngularC //X Y Z
0x9C 16b dampingAngularV //X Y Z
0xAC 16b dampingAngularV2 //X Y Z
0xBC 4b офсет на имя объекта (например pack:/.blista)
0xC0 4b офсет на структуру Drawable 0xDC326A00.
0xD8 4b офсет на коллекцию указателей фреймов с высоким уровнем детализации (High), указатели повторяются n раз. Местоположение числа n неизвестно. //возможно ошибочное предположение
0xDC 4b офсет на коллекцию указателей фреймов с средним уровнем детализации (Medium), указатели повторяются n раз. Местоположение числа n неизвестно. //возможно ошибочное предположение
0xE0 4b childListOffset //офсет на коллекцию офсетов к структурам Children 0xF43566A00
0x1F0 офсет на общее число фреймов?
0x1FF число офсетов childList
0x22C общее число фреймов?
0x23C офсет на фреймы иерархии, количество фреймов указано в 0x22C
В структуре Drawable как правило находятся офсеты на почти все структуры Model 0x34026B00.
Их может быть как 1, так и 3 офсета. Предположительно размер структуры Drawable 0xF0 (240 байт)
0x00 4b заголовок структуры 0xDC326A00 (VTable)
0x08 4b офсет на структуру ShaderGroupData 0x44166B00 //не всегда, могут быть нули
0x0C 4b SkeletonOffset
0x10 Center X,Y,Z,W
0x20 Bounding Box min X,Y,Z,W
0x30 Bounding Box max X,Y,Z,W
0x40 4b офсет на структуру Model 0x34026B00 //не всегда так, могут быть нули
0x44 4b офсет на структуру Model 0x34026B00 //не всегда так, могут быть нули
0x48 4b офсет на структуру Model 0x34026B00 //не всегда так, могут быть нули
0x4C 4b float 9999.0 //AbsoluteMax
0x50 4b float 9999.0 //AbsoluteMax
0x54 4b float 9999.0 //AbsoluteMax
0x70 радиус?
0x80 неизвестная матрица
0x90 неизвестная матрица
0xA0 неизвестная матрица
0xB0 неизвестная матрица
Остальные офсеты на Model нужно находить через Children, в которых лежат офсеты на структуру Drawable.
0xE0 4b childListOffset //офсет на коллекцию офсетов к структурам Children 0xF43566A00
0x1FF 1 байт число офсетов childList
ChildListOffset - офсеты к Children 0xF43566A00
размер: 4*число офсетов, указанное по адресу 0x1FF
Структура Children 0xF43566A00
0x0 0xF43566A00 VTable Children
0x90 офсет на вышеописанную структуру Drawable
Смещение к ZModeler2LockID 0x486F803F: размер SystemMemorySegment - 0x100
Размер SystemMemorySegment рассчитывается так: bit.shift (bit.and flags 2047) ((bit.and (bit.shift flags -11) 15)+8)
Паззл наконец-то сложился.
Ниже информация про .wdr а также про секции, что есть и в .wdr и в .wft. Информация взята с gtamods.com.
WDR Header (BlockSize 0x2A0)
-------------------------------------------------------------------
Offset Size Type Data Description
-------------------------------------------------------------------
0x00 4b LONG VTable (Usually 0x00695254)
0x04 4b Offset HeaderLength (Usually 0x90)
0x08 4b Offset ShaderGroup (0 = no Shaders)
0x0C 4b Offset SkeletonData (0 = no Skeleton)
0x10 4b FLOAT Center x
0x14 4b FLOAT Center y
0x18 4b FLOAT Center z
0x1C 4b FLOAT Center w
0x20 4b FLOAT BoundsMin x
0x24 4b FLOAT BoundsMin y
0x28 4b FLOAT BoundsMin z
0x2C 4b FLOAT BoundsMin w
0x30 4b FLOAT BoundsMax x
0x34 4b FLOAT BoundsMax y
0x38 4b FLOAT BoundsMax z
0x3C 4b FLOAT BoundsMax w
0x40 4b Offset Pointer ModelCollection (0=Non existing)
0x44 4b Offset Pointer LOD models (0=Non existing)
0x48 4b Offset Pointer LOD models (0=Non existing)
0x4C 4b Offset Pointer LOD models (0=Non existing)
0x50 4b FLOAT Max Vectorx (Usually 9999.0)
0x54 4b FLOAT Max Vectory (Usually 9999.0)
0x58 4b FLOAT Max Vectorz (Usually 9999.0)
0x5C 4b FLOAT Max Vectorw (Usually 9999.0)
0x60 4b LONG ObjectCount
0x64 4b LONG Unknown (Usually 0xFFFFFFFF)
0x68 4b LONG Unknown (Usually 0xFFFFFFFF)
0x6C 4b LONG Unknown (Usually 0xFFFFFFFF)
0x70 4b FLOAT Unknown
0x74 12b LONG Unknown (Usually all zeros)
0x80 4b Offset 2DFX Array offset (Zero if no 2dfx section)
0x84 2b Short 2DFX Count
0x86 2b Short 2DFX Size
0x88 8b LONG Unassigned data (0xCDCDCDCDCDCDCDCD)
0x90 4b LONG End of Header (Usually 0x00000000)
Model Collection
ModelCollection (BlockSize 0x08)
--------------------------------------------------------------------
0x00 4b Offset Pointer to Model Pointer
0x04 2b Short Number of Pointers
0x06 2b Short Number of Pointers
0x08 4b LONG Padding (0xCDCDCDCD)
0x0C 4b LONG Padding (0xCDCDCDCD)
Model
Model (BlockSize 0x20)
--------------------------------------------------------------------
0x00 4b LONG VTable (0x34026B00)
0x04 8b Offset PointerCollection<Geometrys>
0x0C 4b Offset SimpleArray<Vector4> (Unknown Vectors)
0x10 4b Offset SimpleArray<Integer> (Material Mappings)
0x14 2b Short Unknown1 (Usually 0)
0x16 2b Short Unknown2
0x18 2b Short Unknown3
0x1A 2b Short GeometryCount
0x1C 4b LONG Padding (0xCDCDCDCD)
Geometry
Geometry (BlockSize 0x50)
--------------------------------------------------------------------
0x00 4b LONG VTable (0xF4486B00)
0x04 4b LONG Unknown 1 (Usually 0)
0x08 4b LONG Unknown 2 (Usually 0)
0x0C 4b Offset VertexBuffer
0x10 4b LONG Unknown 3 (Usually 0)
0x14 4b LONG Unknown 4 (Usually 0)
0x18 4b LONG Unknown 5 (Usually 0)
0x1C 4b Offset IndexBuffer
0x20 4b LONG Unknown 6 (Usually 0)
0x24 4b LONG Unknown 7 (Usually 0)
0x28 4b LONG Unknown 8 (Usually 0)
0x2C 4b LONG IndexCount
0x30 4b LONG FaceCount
0x34 2b Short VertexCount
0x36 2b Short PrimitiveType
0x38 4b LONG Unknown 9 (Usually 0)
0x3C 2b Short VertexStride (36 without normal map, 52 with normal map)
0x3E 2b Short Unknown 10 (Usually 0)
0x40 4b LONG Unknown 11 (Usually 0)
0x44 4b LONG Unknown 12 (Usually 0)
0x48 4b LONG Unknown 13 (Usually 0)
0x4C 4b LONG Padding (0xCDCDCDCD)
VertexBuffer
VertexBuffer (BlockSize 0x64)
--------------------------------------------------------------------
0x00 4b LONG VTable (0xD8BA6B00)
0x04 2b Short VertexCount
0x06 2b Short Unknown 1 (Usually 0)
0x08 4b Offset DataOffset to VertexData
0x1C 4b LONG VertexStride (36 without normal map, 52 with normal map)
0x20 4b Offset VertexDeclarationOffset
0x24 4b LONG Unknown 2 (Usually 0)
0x28 4b Offset DataOffset to VertexData (Again)
0x2C 4b LONG Unknown 3 (Usually 0)
0x30 32b LONG Padding (0xCD)
IndexBuffer
IndexBuffer (BlockSize 0x40)
--------------------------------------------------------------------
0x00 4b LONG VTable (0x70B86B00)
0x04 4b LONG IndexCount
0x08 4b Offset DataOffset to IndexData
0x0C 4b LONG Unknown 1 (Usually 0)
0x10 32b LONG Padding (0xCD)
ShaderGroupData
ShaderGroupData (offset remarked in Header at 0x08) (BlockSize 0x50)
--------------------------------------------------------------------
0x00 4b LONG VTable (0x44166B00)
0x04 4b Offset TextureDictionary (0 = no Embedded textures)
0x08 4b Offset Pointer to a Pointer for ShaderFX PointerCollection
0x0C 2b Short Number of Pointers at Pointer for ShaderFX PointerCollection
0x0E 2b Short Number of Pointers at Pointer for ShaderFX PointerCollection
0x10 48b Zeros
0x40 4b Offset Pointer to SimpleCollection VertexDeclarationUsageFlags
0x44 2b Short Number of SimpleCollection VertexDeclarationUsageFlag entries
0x46 2b Short Number of SimpleCollection VertexDeclarationUsageFlag entries
0x48 4b Offset Pointer to SimpleCollection UnknownInts
0x4C 2b Short Number of SimpleCollection UnknownInt entries
0x4E 2b Short Number of SimpleCollection UnknownInt entries
ShaderFX
ShaderFX (offset remarked in ShaderGroupData in the Pointer to ShaderFX PointerCollection 0x08) (BlockSize 0x50)
-----------------------------------------------------------------------------------------------------
0x00 4b LONG VTable (0x3C226B00)
0x04 4b LONG BlockMapAdress
0x08 2b Short Unknown 1
0x0A 1b Byte Unknown 2
0x0B 1b Byte Unknown 3
0x0C 2b Short Unknown 4
0x0E 2b Short Unknown 4_1
0x10 4b LONG Unknown 5
0x14 4b Offset ShaderParamsOffsetsOffset
0x18 4b LONG Unknown 6
0x1C 4b LONG ShaderParamCount
0x20 4b LONG Unknown 8
0x24 4b Offset ShaderParamTypesOffset
0x28 4b Hash Unknown Hash
0x2C 4b LONG Unknown 9
0x30 4b LONG Unknown 10
0x34 4b Offset ShaderParamNameOffset
0x38 4b LONG Unknown 11
0x3C 4b LONG Unknown 12
0x40 4b LONG Unknown 13
0x44 4b Offset ShaderName Pointer (Pointer to null terminated String)
0x48 4b Offset ShaderSPS Pointer (Pointer to null terminated String)
0x4C 4b LONG Unknown 14
0x50 4b LONG Unknown 15
0x54 4b LONG Unknown 16
0x58 4b LONG Unknown 17
0x5C 4b LONG Padding (0xCDCDCDCD)
PointerCollection
PointerCollection (BlockSize 0x08)
Contains pointers to the data of the given type
--------------------------------------------------------------------
0x00 4b Offset Offset to the Pointers
0x04 2b Short Number of Pointers
0x06 2b Short
SimpleCollection
SimpleCollection (BlockSize 0x08)
Contains data of the given type
--------------------------------------------------------------------
0x00 4b Offset Offset to the Data
0x04 2b Short Data Count
0x06 2b Short Data Size
GRAPHICS section (Size found from the flags @ 0x08 of RSC file header)
VertexData
VertexData (BlockSize VertexCount*0x24 or 0x34 when the Geometry is using a normal map)
---------------------------------------------------------------------------------------
0x00 4b FLOAT Position x
0x04 4b FLOAT Position y
0x08 4b FLOAT Position z
0x0C 4b FLOAT Normal x
0x10 4b FLOAT Normal y
0x14 4b FLOAT Normal z
0x18 4b DWORD Color (RGBA)
0x1C 4b FLOAT Texcoord u
0x20 4b FLOAT Texcoord v
0x24 4b FLOAT Tangent/Bi-Normal x // Only when there is a normal map applied to the Geometry
0x28 4b FLOAT Tangent/Bi-Normal y // Only when there is a normal map applied to the Geometry
0x2C 4b FLOAT Tangent/Bi-Normal z // Only when there is a normal map applied to the Geometry
0x30 4b FLOAT Tangent/Bi-Normal w // Only when there is a normal map applied to the Geometry
IndexData
IndexData (BlockSize IndexCount*0x06)
---------------------------------------------------------------------------------
0x00 2b Short Vertex A
0x02 2b Short Vertex B
0x04 2b Short Vertex C
SkeletonData
SkeletonData (BlockSize 64 bytes)
-------------------------------------------------------------------
0x00 4b Offset Pointer to a Pointer for Model Name
0x04 4b Offset Pointer to a Pointer for VertexData
0x08 4b Offset Pointer to unknown 64b data block (not always used, 0 if not used)
0x0C 4b Offset Pointer to unknown 64b data block (not always used, 0 if not used)
0x10 4b Offset Pointer to unknown 64b data block (not always used, 0 if not used)
0x14 4b Long Geometry Count ?
0x18 4b Long (Usually 0)
0x1C 4b Long Unknown Integer
0x20 4b Long (Usually 0)
0x24 4b Long (Usually 0)
0x28 4b Long Geometry Count ?
0x2C 4b Long Uint32 (Usually 2305907972)
0x30 4b Long (Usually 0)
0x34 4b Long (0x6B2778) VTable ?
0x38 4b Long (Usually 0)
0x3C 4b Long (Usually 0)
Texture Definition
Texture definition (for externally defined textures)(BlockSize 0x1C)
--------------------------------------------------------------------
0x00 4b LONG VTable (0x5C676B)
0x04 4b LONG Unknown1
0x08 4b LONG Unknown2
0x0C 4b LONG Unknown3
0x10 4b LONG Unknown4
0x14 4b Offset Offset Pointer to Texture name
0x18 4b LONG Unknown5
0x1C 4b LONG Padding (0xCDCDCDCD)
В заключение информация про .WDD - а-ля контейнер для .WDR.
WDD Header
-------------------------------------------------------------------
Offset Size Type Data Description
-------------------------------------------------------------------
0x00 4b LONG VTable 0xA4536900
0x04 4b Offset BlockMapAdress Marks end of Header
0x08 4b LONG ParentDictionary (Usually 0)
0x0C 4b LONG UsageCount (Usually 1)
0x10 8b SimpleCollection<Hashes> Contains hashes of the models
0x18 8b PointerCollection<WDR> Contains Pointers to WDR files
0x1C 4b LONG Unknown
0x20 12b 0xCD Padding till 0x0F
--------------------------------------------------------------------
PointerCollection (BlockSize 0x08)
Contains pointers to the data of the given type
--------------------------------------------------------------------
0x00 4b Offset Offset to the Pointers
0x04 2b Short Number of Pointers
0x06 2b Short
--------------------------------------------------------------------
SimpleCollection (BlockSize 0x08)
Contains data of the given type
--------------------------------------------------------------------
0x00 4b Offset Offset to the Data
0x04 2b Short Data Count
0x06 2b Short Data Size