MORE::Animation
MORE::Animation structure
Track structure
| Name |
Type |
Condition |
Description |
| type |
uint32 |
|
Never observed to be type >= 0x0D. |
| name |
BasicString |
|
|
| data |
TrackSimple<uint16, uint16, TimeF16> |
type == 0x00 |
|
| data |
TrackSimple<float32, float32, float32> |
type == 0x01 |
|
| data |
TrackSimple<Vector3, Vector3, float32> |
type == 0x02 |
|
| data |
TrackSimple<Quaternion, Quaternion, float32> |
type == 0x03 |
|
| data |
TrackLinear<float32, float32, float32> |
type == 0x04 |
|
| data |
TrackLinear<Vector3, Vector3, float32> |
type == 0x05 |
|
| data |
TrackLinear<Quaternion, Quaternion, float32> |
type == 0x06 |
|
| data |
TrackBezier<float32, float32, float32> |
type == 0x07 |
|
| data |
TrackBezier<Vector3, Vector3, float32> |
type == 0x08 |
|
| data |
TrackBezier<Quaternion, Quaternion, float32> |
type == 0x09 |
|
| data |
TrackTCB<float32> |
type == 0x0A |
|
| data |
TrackTCB<Vector3> |
type == 0x0B |
|
| data |
TrackTCB<Quaternion> |
type == 0x0C |
|
| data |
TrackDisplacement |
type == 0x0D |
|
| data |
TrackEvent |
type == 0x0E |
|
| data |
TrackUser<uint16> |
type == 0x0F |
|
| data |
TrackUser<float32> |
type == 0x10 |
|
| data |
TrackUser<Vector3> |
type == 0x11 |
|
| data |
TrackUser<Quaternion> |
type == 0x12 |
|
| data |
TrackSimple<Quaternion, CompressedQuaternionU32, float32> |
type == 0x13 |
|
| data |
TrackLinear<Quaternion, CompressedQuaternionU32, float32> |
type == 0x14 |
|
| data |
TrackBezier<Quaternion, CompressedQuaternionU32, float32> |
type == 0x15 |
|
| data |
TrackSimple<Quaternion, CompressedQuaternion3U16, TimeF16> |
type == 0x18 |
|
| data |
TrackLinear<Quaternion, CompressedQuaternion3U16, TimeF16> |
type == 0x19 |
|
| data |
TrackBezier<Quaternion, CompressedQuaternion3U16, TimeF16> |
type == 0x1A |
|
| data |
TrackSimple<Vector3, EulerAngleRad, TimeF16> |
type == 0x1D |
|
| data |
TrackLinear<Vector3, EulerAngleRad, TimeF16> |
type == 0x1E |
|
| data |
TrackBezier<Vector3, EulerAngleRad, TimeF16> |
type == 0x1F |
|
Note
If type is not any of the values listed above, Revelation will crash.
TimeF16 type
Compression/decompression:
uint16 TimeF16::Compress(float32 src) {
return (uint16)((*src + 300.0) * (1.0/600.0) * 65534.0);
}
float32 TimeF16::Decompress(uint16 src) {
return (float32)src * (1.0/65534.0) * 600.0 - 300.0;
}
EulerAngleRad type
Compression/decompression:
uint16 EulerAngleRad::Compress(float32 src) {
return (uint16)((src + M_PI*10) * (M_PI*20) * 65534.0);
}
float32 EulerAngleRad::Decompress(uint16 src) {
return (float32)src * (1.0/65534.0) * (1.0/(M_PI*20) - M_PI*10);
}
TrackSimple<Value, ValueComp, Time> structure
| Name |
Type |
Description |
| terminate |
bool |
Revelation's code appears to ignore this field. Never observed to be anything other than true. |
| keys |
Array<KeySimple<Value, ValueComp, Time>> |
|
KeySimple<Value, ValueComp, Time> structure
| Name |
Type |
Condition |
| time |
float32 |
version < 0x10 |
| time |
Time |
version >= 0x10 |
| value |
ValueComp |
|
TrackLinear<Value, ValueComp, Time> structure
| Name |
Type |
Description |
| terminate |
bool |
Revelation's code appears to ignore this field. Never observed to be anything other than true. |
| keys |
Array<KeyLinear<Value, ValueComp, Time>> |
|
KeyLinear<Value, ValueComp, Time> structure
| Name |
Type |
| time |
Time |
| value |
ValueComp |
TrackBezier<Value, ValueComp, Time> structure
| Name |
Type |
Description |
| terminate |
bool |
Revelation's code appears to ignore this field. Never observed to be anything other than true. |
| keys |
Array<KeyBezier<Value, ValueComp, Time>> |
|
KeyBezier<Value, ValueComp, Time> structure
| Name |
Type |
Condition |
Description |
| time |
Time |
|
|
| value |
ValueComp |
|
|
| derSrc |
Value |
version < 0x11 |
|
| derDst |
Value |
version < 0x11 |
Ignored if Value == Quaternion. |
| derSrc |
ValueComp |
version >= 0x11 |
|
| derDst |
ValueComp |
version >= 0x11 && Value != Quaternion |
|
| flatOut |
bool |
|
|
TrackTCB<Value> structure
| Name |
Type |
Description |
| terminate |
bool |
Revelation's code appears to ignore this field. Never observed to be anything other than true. |
| keys |
Array<KeyTCB<Value>> |
|
KeyTCB<Value> structure
| Name |
Type |
Condition |
| time |
float32 |
|
| value |
Value |
|
| tens |
float32 |
|
| cont |
float32 |
|
| bias |
float32 |
|
| easeTo |
float32 |
|
| easeFrom |
float32 |
|
| derSrc |
Value |
|
| derDst |
Value |
|
| angle |
float32 |
Value == Quaternion |
| axis |
Vector3 |
Value == Quaternion |
TrackDisplacement structure
TrackEvent structure
KeyEvent structure
| Name |
Type |
Condition |
| time |
float32 |
|
| value |
uint32 |
|
| userData |
BasicString |
version >= 0x2 |
TrackUser<Value> structure
| Name |
Type |
Description |
| terminate |
bool |
Revelation's code appears to ignore this field. |
Instant structure
| Name |
Type |
| time |
float32 |
| id |
uint16 |