code: function (clip, mapRule) {
          // Clip have been exists in
          for (var i = 0; i < this._clips.length; i++) {
              if (this._clips[i].clip === clip) {
                  return;
              }
          }
          // Map the joint index in skeleton to joint pose index in clip
          var maps = [];
          for (var i = 0; i < this.joints.length; i++) {
              maps[i] = -1;
          }
          // Create avatar
          for (var i = 0; i < clip.tracks.length; i++) {
              for (var j = 0; j < this.joints.length; j++) {
                  var joint = this.joints[j];
                  var track = clip.tracks[i];
                  var jointName = joint.name;
                  if (mapRule) {
                      jointName = mapRule[jointName];
                  }
                  if (track.name === jointName) {
                      maps[j] = i;
                      break;
                  }
              }
          }
  
          this._clips.push({
              maps: maps,
              clip: clip
          });
  
          return this._clips.length - 1;
      }
docs: Add a skinning clip and create a map between clip and skeleton
  @param {clay.animation.SkinningClip} clip
  @param {Object} [mapRule] Map between joint name in skeleton and joint name in clip