Anim File Format

From Second Life Wiki
Revision as of 09:43, 8 August 2018 by Nat Linden (talk | contribs) (Created page with "LLKeyframeMotion::onLoadComplete line 2250 call to unpacker. LLDataPackerBinaryBuffer dp(buffer, size); <br/> if (motionp->deserialize(dp)) BOOL LLKeyframeMotion::deseri...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

LLKeyframeMotion::onLoadComplete line 2250 call to unpacker.

LLDataPackerBinaryBuffer dp(buffer, size);
if (motionp->deserialize(dp))


BOOL LLKeyframeMotion::deserialize(LLDataPacker& dp) //Where we unpack anim format.

Strings from binary unpacker are: S32 for length of string, string data (no null terminator) EX: cat=3cat

Type Name Values possible Notes
U16 Version 1 //Required to be 1.
U16 Sub Version 0 //Required as 0.
S32 Base Priority USE_MOTION_PRIORITY = -1,
LOW_PRIORITY = 0,
MEDIUM_PRIORITY,
HIGH_PRIORITY,
HIGHER_PRIORITY,
HIGHEST_PRIORITY,
ADDITIVE_PRIORITY = LL_CHARACTER_MAX_PRIORITY
//Needs to be UI element in anim exporter.
F32 Duration Number secs for anim to run
String Emote_Name String to identify animation. //Verify
F32 Loop In Point Sec where loop starts
F32 Loop Out Point Sec where loop ends
S32 Loop True/False //Converts to bool
F32 Ease-in duration Secs
F32 Ease-out duration Secs
U32 Num Hand Poses //I think this can be 0 for my purposes. ;)
U32 Num Joint Motions <= max joints of skeleton //Number of joints that move in this anim.

For each joint with motion

String Joint name joint to move
S32 Joint priority See above
S32 Num Rot Keys Number of rotation keys for this joint //Must be > 0.
  • For each rotation in this JointMotion
    • S32num_rot_keys Foreach:
      • u16 time //Converted to F32 for secs
      • 3 U16 X,Y,Z
    • S32 num_pos_keys Foreach:
      • u16 time //converted to F32 as secs.
      • 3 U16 X,Y,Z


 
 S32 num_constraints //It looks like constraints are used for some kind of IK system? O_O For Each:

  • U8 chain_length (number of joints in chain.
  • U8 constraint_type //Types: CONSTRAINT_TYPE_POINT, CONSTRAINT_TYPE_PLANE
  • 16bytes source_volume //Collision volume ID string.
  • 12bytes source_offset (A Vector3; 3 F32s)
  • 16bytes target_volume //GROUND or collision_volume_id
  • 12bytes target_offset (A vector3; F32s)
  • 12bytes target_dir (A vector3 of F32s)
  • F32 constraint ease_in_start
  • F32 constraint ease_in_stop
  • F32 constraint ease_out_start
  • F32 constraint ease_out_stop