Anim File Format

From Second Life Wiki
Revision as of 09:50, 8 August 2018 by Aura Linden (talk | contribs)
Jump to navigation Jump to search

Strings from binary unpacker take the form of a signed 32-bit integer for the length of the string followed by the string data. There is 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 For each constraint:

  • 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