Bone Animation

In Staxel, \*.boneanimation files are used specify animations. These are used alongside a bvh files, which supply the actual animation data.

# Config Options

## "code"

**Valid options (String): `A unique string which specifies what this Bone Animation is.`**
**Default Value:** Must be specified.

A string containing the code of the Bone Animation the blob will be referring to.

## "axismode"

**Valid options (String): `Either "XPYPZP" or "XPZPYN"`**
**Default Value:** Must be specified.

This specifies what axis system the animation was using. This can very per software, so may require some searching to see which of the two available types should be used.

## "animation"

**Valid options (String): `The timeline code of the specific animation, in the **Bone Animation** being used by the Body Type.`**
**Default Value:** Must be specified.

This is the animation that will get played by the emote.

## "offset"

**Valid options (Vector 3 - Float): `{ "x": 0.0, "y": 0.0, "z": 0.0 }`**
**Default Value:** Must be specified.

This is the position of the origin of the animation. This is used to line up the positions of bones so that they rotate and scale correctly.

## "scale"

**Valid options (Float): `A positive decimal number.`**
**Default Value:** Must be specified.

This is the scale that gets applied to the animations. This makes sure that it is the correct size to deal with models.

## "timelines"

This is a required Blob which is to be added to the Bone Animation file. This blob contains information to seperate the different animations that is contained in the animation file. It will commonly look like;

```
"timelines": {
  "tpose": {
    "start": 0,
    "end": 0
  },
  "walk": {
    "start": 20,
    "end": 40
  },
  "femalewalk": {
    "start": 50,
    "end": 70
  },
  "run": {
    "start": 80,
    "end": 105
  }
}

```

Each property here, is actually a different animation. The property name, is the code you want for the animation, while the values contained within are the frames of the animation. The explanation of these properties are as follows;

### "base"

**Valid options (Integer): `A positive integer value.`**
**Default Value:** If not specified, will default to the starting frame.

This is the frame that specifies what position this animation will start from.

### "start"

**Valid options (Integer): `A positive integer value.`**
**Default Value:** Must be specified.

This is the frame number, starting from 1, that this animation starts at.

### "end"

**Valid options (Integer): `A positive integer value.`**
**Default Value:** Must be specified.

This is the frame number, starting from 1, that this animation ends at. (This should be the final frame, and not the frame after.)

## "translation"

**Valid options (Vector 3 - Float): `{ "x": 0.0, "y": 0.0, "z": 0.0 }`**
**Default Value:** Must be specified.

This is the offset that will be applied to the model. This is used to line up models in game to the animations used here.

## "zbias"

This is an optional Blob which can be added to the Bone Animation file. This blob contains information on how to handle which part is rendered above others. For example the player model animations has the following as its bias;

```
"zbias": {
  "": 0,
  "__0": 0,
  "Torso": 3,
  "Head": 4,
  "Shoulder_Right": 4,
  "UpperArm_Right": 5,
  "LowerArm_Right": 6,
  "Hand_Right": 7,
  "Item_Right": 8,
  "Shoulder_Left": 4,
  "UpperArm_Left": 5,
  "LowerArm_Left": 6,
  "Hand_Left": 7,
  "Item_Left": 8,
  "Thigh_Right": 0,
  "UpperLeg_Right": 1,
  "LowerLeg_Right": 2,
  "Thigh_Left": 0,
  "UpperLeg_Left": 1,
  "LowerLeg_Left": 2
}

```