Difference between revisions of "Breakable (RW Section)"
m |
|||
(16 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | {{RW Section| | + | {{RW Section |
+ | | NAME = Breakable | ||
+ | | VENDORNAME = Rockstar Games | ||
+ | | MODULENAME = Plug-In | ||
+ | | MODULEID = 0253F2 | ||
+ | | IDENTIFIER = FD | ||
+ | | VERSION = 3.6.0.3 (and higher) | ||
+ | | PARENTS = [[Geometry (RW Section)|Geometry]] ''([[Extension (RW Section)|Extension]])'' | ||
+ | }} | ||
− | ''' | + | '''Breakable''', formerly '''Breakable Model''', is one of Rockstar's [[List of RW section IDs|custom sections]] used in [[GTA San Andreas]]. It contains information on how to split breakable objects when they are hit. An object including this section has to be defined in [[object.dat]]. |
− | The | + | ==Magic number== |
+ | |||
+ | The initial ''4 bytes'' sequence signals the usage of the extension: | ||
+ | |||
+ | UINT32 magicNumber | ||
+ | |||
+ | If zero, the section ends here. A non-zero value has no particular meaning and can be any (see [[Talk:Breakable_(RW_Section)#Meaningless values|Meaningless values]]). | ||
==Header== | ==Header== | ||
− | There is a '' | + | There is a ''52 byte'' header which holds information about the amount of data arrays that follow: |
+ | |||
+ | UINT32 posnRule (0 = OBJECT_ORIGIN, 1 = COLLISION_ORIGIN) | ||
+ | // Vertex data | ||
+ | UINT16 numVertices | ||
+ | UINT16 | ||
+ | UINT32 (assumed offset to verts, unused) | ||
+ | UINT32 (assumed offset to texCoords, unused) | ||
+ | UINT32 (assumed offset to preLitLum, unused) | ||
+ | // Triangle data | ||
+ | UINT16 numTriangles | ||
+ | UINT16 | ||
+ | UINT32 (assumed offset to vertIndices, unused) | ||
+ | UINT32 (assumed offset to matIndices, unused) | ||
+ | // Material data | ||
+ | UINT16 numMaterials | ||
+ | UINT16 | ||
+ | UINT32 (assumed offset to textures, unused) | ||
+ | UINT32 (assumed offset to textureNames, unused) | ||
+ | UINT32 (assumed offset to textureMasks, unused) | ||
+ | UINT32 (assumed offset to ambientColors, unused) | ||
+ | |||
+ | The position rule imposes whether to calculate the position relatively to the collision model or to the clump/atomic ''RwFrame''. See [[Talk:Breakable_(RW_Section)#Meaningless values|Meaningless values]] for clarifications about the unused fields. | ||
+ | |||
+ | ==Vertex data== | ||
− | + | FLOAT[3] verts[numVertices] | |
− | + | FLOAT[2] texCoords[numVertices] | |
− | + | BYTE[4] preLitLum[numVertices] (RGBA) | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == | + | ==Triangle data== |
− | + | UINT16[3] vertIndices[numTriangles] | |
− | + | UINT16 matIndices[numTriangles] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ==Material | + | ==Material data== |
− | Each polygon group sharing the same material is treated as a separate fragment when the object is split up | + | Each polygon group sharing the same material is treated as a separate fragment when the object is split up: |
− | + | CHAR[32] textureNames[numMaterials] | |
− | + | CHAR[32] textureMasks[numMaterials] | |
− | + | FLOAT[3] ambientColors[numMaterials] (RGB normalized in range [0,1]) | |
− | |||
− | |||
− | |||
− | |||
− | |||
==Tools and Scripts== | ==Tools and Scripts== | ||
− | * | + | |
+ | * {{GTAF|269717|Breakable Objects Export Script}} by {{U|Deniska}}. A script for 3dsMax which allows to export Breakable model information to separate files. | ||
+ | |||
+ | {{N|SA}} |
Latest revision as of 13:02, 11 September 2020
Breakable | |
---|---|
RenderWare Stream Section | |
Vendor | Rockstar Games |
Module | Plug-In |
Module ID | 0x0253F2
|
Identifier | 0xFD
|
Chunk ID | 0x0253F2FD
|
Versions | 3.6.0.3 (and higher) |
Hierarchy | |
Parents: Geometry (Extension) | |
Children: None | |
Extensions: None | |
File Format |
Breakable, formerly Breakable Model, is one of Rockstar's custom sections used in GTA San Andreas. It contains information on how to split breakable objects when they are hit. An object including this section has to be defined in object.dat.
Magic number
The initial 4 bytes sequence signals the usage of the extension:
UINT32 magicNumber
If zero, the section ends here. A non-zero value has no particular meaning and can be any (see Meaningless values).
Header
There is a 52 byte header which holds information about the amount of data arrays that follow:
UINT32 posnRule (0 = OBJECT_ORIGIN, 1 = COLLISION_ORIGIN) // Vertex data UINT16 numVertices UINT16 UINT32 (assumed offset to verts, unused) UINT32 (assumed offset to texCoords, unused) UINT32 (assumed offset to preLitLum, unused) // Triangle data UINT16 numTriangles UINT16 UINT32 (assumed offset to vertIndices, unused) UINT32 (assumed offset to matIndices, unused) // Material data UINT16 numMaterials UINT16 UINT32 (assumed offset to textures, unused) UINT32 (assumed offset to textureNames, unused) UINT32 (assumed offset to textureMasks, unused) UINT32 (assumed offset to ambientColors, unused)
The position rule imposes whether to calculate the position relatively to the collision model or to the clump/atomic RwFrame. See Meaningless values for clarifications about the unused fields.
Vertex data
FLOAT[3] verts[numVertices] FLOAT[2] texCoords[numVertices] BYTE[4] preLitLum[numVertices] (RGBA)
Triangle data
UINT16[3] vertIndices[numTriangles] UINT16 matIndices[numTriangles]
Material data
Each polygon group sharing the same material is treated as a separate fragment when the object is split up:
CHAR[32] textureNames[numMaterials] CHAR[32] textureMasks[numMaterials] FLOAT[3] ambientColors[numMaterials] (RGB normalized in range [0,1])
Tools and Scripts
- GTAForums: Breakable Objects Export Script by Deniska. A script for 3dsMax which allows to export Breakable model information to separate files.