Difference between revisions of "Template:NW4FCurve"
m (Express it a bit better, fix table header) |
m |
||
Line 19: | Line 19: | ||
* '''CCC''' determines what kind of curve data is stored. | * '''CCC''' determines what kind of curve data is stored. | ||
{| class="wikitable" | {| class="wikitable" | ||
− | ! Value !! Description | + | ! Value !! Description !! Meaning |
|- | |- | ||
− | | 0 || Cubic Single | + | | 0 || Cubic Single || 4 values of the corresponding data type. |
|- | |- | ||
− | | 1 || Linear Single | + | | 1 || Linear Single || 2 values of the corresponding data type. |
|- | |- | ||
− | | 2 || Baked Single | + | | 2 || Baked Single || 1 values of the corresponding data type. |
|- | |- | ||
− | | 4 || Step Integer | + | | 4 || Step Integer || ''Unknown''. |
|- | |- | ||
− | | 5 || Baked Integer | + | | 5 || Baked Integer || ''Unknown''. |
|- | |- | ||
− | | 6 || Step Boolean | + | | 6 || Step Boolean || Each value is 1 bit. |
|- | |- | ||
− | | 7 || Baked Boolean | + | | 7 || Baked Boolean || ''Unknown''. |
|} | |} | ||
|- | |- |
Revision as of 15:37, 30 May 2017
Curve
Curves store how animations are performed over time and store the required keys and values for this. They appear in multiple animation subfiles, and their header is of 0x20 bytes size (for BFRES versions earlier than 3.4.0.0, they are of 0x1C bytes size).
Offset | Size | Type | Description | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x00 | 2 | UInt16 | Flags. Sets of bits packed as xxxxxxxx xCCCKKFF.
| ||||||||||||||||||||||||||||||||
0x02 | 2 | UInt16 | Key count. | ||||||||||||||||||||||||||||||||
0x04 | 4 | UInt32 | Target type. Controls what exactly is manipulated by the curve. Differs in each subfile. | ||||||||||||||||||||||||||||||||
0x08 | 4 | Single | Start frame. | ||||||||||||||||||||||||||||||||
0x0C | 4 | Single | End frame. | ||||||||||||||||||||||||||||||||
0x10 | 4 | Int32 / Single | Data scale. | ||||||||||||||||||||||||||||||||
if BFRES version >= 3.4.0.0 | |||||||||||||||||||||||||||||||||||
0x14 | 4 | Single | Data delta. | ||||||||||||||||||||||||||||||||
0x18 | 4 | Int32 | Frame array offset. | ||||||||||||||||||||||||||||||||
0x1C | 4 | Int32 | Key array offset. | ||||||||||||||||||||||||||||||||
0x20 | End of Curve | ||||||||||||||||||||||||||||||||||
else | |||||||||||||||||||||||||||||||||||
0x14 | 4 | Int32 | Frame array offset. | ||||||||||||||||||||||||||||||||
0x18 | 4 | Int32 | Key array offset. | ||||||||||||||||||||||||||||||||
0x1C | End of Curve |
Frames
The Curve header points to a Frame array which stores values controlling at which frame a Key from the Key array is placed. Thus, the array has as many elements as specified in Key count. The data type of the frames is given in the Curve's Flags.
The end of the array is aligned to 4 bytes.
Keys
The Curve header points to a Key array which stores the values to apply on transformations or parameters which form the animation. Thus, the array has as many elements as specified in Key count. Each element is actually a vector of a different size, the size dependent upon the CCC Curve Type bits in the Curve Flags.
Curve Type | Vector Elements |
---|---|
Cubic Single | 4 |
Linear Single | 2 |
other | 1 |
The type of a vector element is given by the KK Key Type bits in the Curve Flags.