Schemas / Animation / modulators

rig.anim.skin

v1.0.0 · stable maturity: draft 5 fields 5 required

Fields

FieldTypeMeaning
skeleton entity required rig.anim.skeleton
joints array<entity>min 1 items required Bone entities, index order for the arrays below
inverseBind array<number> required Column-major 4×4 per joint, 16 floats each, mesh space to joint space. Length = joints.length * 16
jointIndices array<uint32> required Four joint indices per mesh vertex, into joints
jointWeights array<number> required Four weights per mesh vertex, parallel to jointIndices. Each vertex sums to 1

Skin binding on a mesh entity. Format when present. The drawable is rig.geometry.mesh on the same entity.

Vertex count is positions.length / 3 on the mesh. Unused influences are index 0 and weight 0.

The posed result is a host cache. Do not serialize a baked posed mesh beside the bind pose.

JSON Schema

Resolves at https://rig.works/schemas/rig.anim.skin.schema.json — raw file.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://rig.works/schemas/rig.anim.skin.schema.json",
  "title": "rig.anim.skin",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "skeleton": {
      "$ref": "./_defs.schema.json#/$defs/entity"
    },
    "joints": {
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "./_defs.schema.json#/$defs/entity"
      }
    },
    "inverseBind": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "jointIndices": {
      "type": "array",
      "items": {
        "$ref": "./_defs.schema.json#/$defs/uint32"
      }
    },
    "jointWeights": {
      "type": "array",
      "items": {
        "type": "number"
      }
    }
  },
  "required": [
    "skeleton",
    "joints",
    "inverseBind",
    "jointIndices",
    "jointWeights"
  ],
  "x-rig-maturity": "draft"
}

Seen in

play-scene.json