code: function (opts) {
      opts = opts || {};
  
      this.name = opts.name || '';
      /**
       * @param {clay.Node}
       */
      this.target = opts.target || null;
      /**
       * @type {Array}
       */
      this.position = vec3.create();
      /**
       * Rotation is represented by a quaternion
       * @type {Array}
       */
      this.rotation = quat.create();
      /**
       * @type {Array}
       */
      this.scale = vec3.fromValues(1, 1, 1);
  
      this.channels = {
          time: null,
          position: null,
          rotation: null,
          scale: null
      };
  
      this._cacheKey = 0;
      this._cacheTime = 0;
  }
docs: SamplerTrack manages `position`, `rotation`, `scale` tracks in animation of single scene node.
  @constructor
  @alias clay.animation.SamplerTrack
  @param {Object} [opts]
  @param {string} [opts.name] Track name
  @param {clay.Node} [opts.target] Target node's transform will updated automatically