1. 骨骼动画配置类
位于:BOS3D.Plugins.Animation.SkeletalAnimationConfig
1.1. 实例化
var config = new BOS3D.Plugins.Animation.SkeletalAnimationConfig();
1.2. 属性
1.2.1. modelKey
/**
* 模型key
* @property {string}
*/
1.2.2. viewer
/**
* Viewer对象
* @property {BOS3D.Viewer}
*/
1.2.3. rightDir
/**
* 模型人物正方向
* @property {Array}
*/
2. 骨骼动画操作类
位于:BOS3D.Plugins.Animation.SkeletalAnimation
2.1. 实例化
实例化需要在对应动画模型加载完成之后。 当前类中移动距离的单位和场景保持一致,例如场景单位是“米”,那么一个单位代表一米。场景单位和第一个加载的模型单位保持一致,可以通过实例化 BOS3D.Viewer 的 getSceneUnit()接口获取。
let config = new BOS3D.Plugins.Animation.SkeletalAnimationConfig();
config.viewer = viewer3D;
config.modelKey = "modelKey";
let skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
2.2. 动画操作方法
2.2.1. getAnimationMixer
获取动画混合器
返回值说明 | 类型 | 示例 |
---|---|---|
混合器 | THREE.AnimationMixer | null |
调用方式:
/**
* 获取动画混合器
* @method getAnimationMixer
* @return {THREE.AnimationMixer} 混合器
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.getAnimationMixer();
2.2.2. getTimeScale
获取时间尺度
返回值说明 | 类型 | 示例 |
---|---|---|
时间尺度 | number | 0.5} |
调用方式:
/**
* 获取时间尺度
* @method getTimeScale
* @return {number} 时间尺度
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.getTimeScale();
2.2.3. setTimeScale
设置时间尺度
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
speed | 时间尺度 | number | 是 | 0.5 |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 设置时间尺度
* @method setTimeScale
* @param {number} speed 时间尺度。倍速播放动作,例:0会完全停止,0.5是动作变慢一半。2是两倍速度
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.setTimeScale(1);
2.2.4. setWeight
设置动作的权重
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
name | 动画名称 | string | 是 | "run" |
weight | 权重 | number | 是 | 0.5 |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 设置动作的权重
* @method setWeight
* @param {string} name 动画名称
* @param {number} weight 权重,值域0-1
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.setWeight("run", 1);
2.2.5. play
播放动作,同时取消暂停。
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
name | 动画名称 | string | 是 | "run" |
weight | 权重,默认为 1.为 1 时,停止其他动作,播放当前动作。否则直接播放 | number | 否 | 0.5 |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 播放动作,会停止其他动作。
* @method play
* @param {string} name 动作名称
* @param {number} weight 权重,默认为1.为1时,停止其他动作,播放当前动作。否则直接播放。
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.play("run");
2.2.6. stop
停止当前动作
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
name | 动作名称,默认停止所有 | string | 否 | "run" |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 停止当前动作。
* @method stop
* @param {string} name 动作名称,默认停止所有
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.stop();
2.2.7. paused
暂停当前动作
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
name | 动作名称,默认暂停所有或恢复所有。动作状态不一样时,按第一个获取到的动作 | string | 否 | "run" |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 暂停当前动作。
* @method paused
* @param {string} name 动作名称,默认暂停所有或恢复所有。动作状态不一样时,按第一个获取到的动作。
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.paused();
2.2.8. deactivateAllActions
停止所有动作
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
无 | null | null | null | null |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 停止所有动作。
* @method deactivateAllActions
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.deactivateAllActions();
2.2.9. activateAllActions
激活所有动作,同时取消暂停。
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
无 | null | null | null | null |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 激活所有动作。播放第一个动作。
* @method activateAllActions
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.activateAllActions();
2.2.10. pauseAllActions
暂停所有动作
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
无 | null | null | null | null |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 暂停所有动作。
* @method pauseAllActions
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.pauseAllActions();
2.2.11. getActiveActions
获取当前激活的动作列表
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
无 | null | null | null | null |
返回值说明 | 类型 | 示例 |
---|---|---|
激活的动作 | [THREE.AnimationAction] | 无 |
调用方式:
/**
* 获取当前激活的动作列表。
* @method getActiveActions
* @return {[THREE.AnimationAction]} 激活的动作列表
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.getActiveActions();
2.2.12. getActionByName
获取动作
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
name | 动画名称 | string | 是 | "run" |
返回值说明 | 类型 | 示例 |
---|---|---|
激活的动作 | THREE.AnimationAction | null |
调用方式:
/**
* 获取动作。
* @method getActionByName
* @param {string} name 动画名称
* @return {THREE.AnimationAction} 动作
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.getActionByName();
2.2.13. getActionNames
获取所有动作的名字
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
无 | null | null | null | null |
返回值说明 | 类型 | 示例 |
---|---|---|
动作的名称数组 | Array | ["run","walk"] |
调用方式:
/**
* 获取所有动作的名字。
* @method getActionNames
* @return {Array} 动作的名称数组
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.getActionNames();
2.2.14. transitionTo
从当前动作过渡到指定动作
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
name | 动画名称 | string | 是 | "run" |
duration | 过渡持续时间 ,单位毫秒 | number | 是 | 2 |
immediately | 是否立即执行 | string | 否 | true |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 过渡到指定动画
* @method transitionTo
* @param {string} name 动画名称
* @param {number} duration 过渡持续时间,单位毫秒
* @param {boolean} immediately 是否立即执行,false时会等当前动作完成一次循环之后执行过渡。
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.transitionTo("run", 5);
2.2.15. transitionTo
从当前动作过渡到指定动作
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
now | 起始动作名称 | string | 是 | "run" |
to | 目标动作名称 | string | 是 | "run" |
duration | 过渡持续时间 | number ,单位毫秒 | 是 | 2 |
immediately | 是否立即执行 | string | 否 | true |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 动作之间过渡
* @method transition
* @param {string} now 起始动作名称
* @param {string} to 目标动作名称
* @param {number} duration 过渡持续时间,单位毫秒
* @param {boolean} immediately 是否立即执行,false时会等当前动作完成一次循环之后执行过渡。
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.transition("run", "walk", 5);
2.3. 模型人物操作方法
2.3.1. getRightDir
获取正方向
返回值说明 | 类型 | 示例 |
---|---|---|
动画模型的正方向 | THREE.Vector3 | {x:1,y:0,z:0} |
调用方式:
/**
* 获取正方向
* @method getRightDir
* @return {THREE.Vector3} 动画模型的正方向(人物的面向方向)。
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.getRightDir();
2.3.2. setRightDir
设置正方向
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
v3 | 动画模型的正方向 | THREE.Vector3 或 Array | 是 | {x:1,y:0,z:0} 或[0,1,0] |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 设置正方向
* @method setRightDir
* @param {THREE.Vector3} v3 动画模型的正方向(人物的面向方向)。
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.setRightDir([0, 1, 0]);
2.3.3. goTurn
模型人物旋转
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
angle | 左右旋转的角度(弧度制) | number | 是 | 0.5 |
time | 过渡时间(单位毫秒) | number | 否 | 1000 |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 模型人物旋转
* @method goTurn
* @param {number} angle 左右旋转的角度(弧度制),大于0时逆时针转动,小于0时顺时针转动。
* @param {number} time 过渡时间,移到angle角度所需的时间。默认为0,这时需要手动调用moveUpdate方法更新角度。大于0时会自动更新人物角度实现过渡动画。旋转过程中再次调用会立即实行新的过渡。
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.goTurn(0.5);
2.3.4. goFrontBack
模型人物前后移动 移动距离的单位和场景保持一致,例如场景单位是“米”,那么一个单位代表一米。场景单位和第一个加载的模型单位保持一致,可以通过实例化 BOS3D.Viewer 的 getSceneUnit()接口获取。
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
step | 前后移动的距离 | number | 是 | 0.5 |
time | 过渡时间(单位毫秒) | number | 否 | 1000 |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 模型人物前后移动
* @method goFrontBack
* @param {number} step 前后移动的距离,大于0时向前移动,小于0时向后移动。
* @param {number} time 过渡时间(单位毫秒),移到step距离所需的时间。默认为0,这时需要手动调用moveUpdate方法更新位置。大于0时会自动更新人物位置实现过渡动画。移动过程中再次调用会立即实行新的过渡。
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.goFrontBack(0.5);
2.3.5. goRightLeft
模型人物左右移动 移动距离的单位和场景保持一致,例如场景单位是“米”,那么一个单位代表一米。场景单位和第一个加载的模型单位保持一致,可以通过实例化 BOS3D.Viewer 的 getSceneUnit()接口获取。
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
step | 前后移动的距离 | number | 是 | 0.5 |
time | 过渡时间(单位毫秒) | number | 否 | 1000 |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 模型人物左右移动
* @method goRightLeft
* @param {number} step 左右移动的距离,大于0时向右移动,小于0时向左移动。
* @param {number} time 过渡时间(单位毫秒),移到step距离所需的时间。默认为0,这时需要手动调用moveUpdate方法更新位置。大于0时会自动更新人物位置实现过渡动画。移动过程中再次调用会立即实行新的过渡。
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.goRightLeft(0.5);
2.3.6. goUpDown
模型人物上下移动。移动距离的单位和场景保持一致,例如场景单位是“米”,那么一个单位代表一米。场景单位和第一个加载的模型单位保持一致,可以通过实例化 BOS3D.Viewer 的 getSceneUnit()接口获取。
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
step | 上下移动的距离 | number | 是 | 0.5 |
time | 过渡时间(单位毫秒) | number | 否 | 1000 |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 模型人物上下移动
* @method goUpDown
* @param {number} step 上下移动的距离,大于0时向上移动,小于0时向下移动。
* @param {number} time 过渡时间(单位毫秒),移到step距离所需的时间。默认为0,这时需要手动调用moveUpdate方法更新位置。大于0时会自动更新人物位置实现过渡动画。移动过程中再次调用会立即实行新的过渡。
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.goUpDown(0.5);
2.3.7. goto
模型人物上下左右前后移动和旋转。移动距离的单位和场景保持一致,例如场景单位是“米”,那么一个单位代表一米。场景单位和第一个加载的模型单位保持一致,可以通过实例化 BOS3D.Viewer 的 getSceneUnit()接口获取。
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
steps | 每个方向上的移动距离 | object | 是 | { x:1,y:1,z:0,w:0 } |
steps.x | 上下移动的距离,默认 0 | number | 否 | 0.5 |
steps.y | 上下移动的距离,默认 0 | number | 否 | 0.5 |
steps.z | 上下移动的距离,默认 0 | number | 否 | 0.5 |
steps.w | 左右旋转的角度,默认 0 | number | 否 | 0.5 |
time | 过渡时间(单位毫秒) | number | 否 | 1000 |
返回值说明 | 类型 | 示例 |
---|---|---|
无 |
调用方式:
/**
* 模型人物上下左右前后移动和旋转
* @method goto
* @param {object} steps 每个方向上的移动距离
* @param {number} steps.x 前后移动的距离,大于0时向前移动,小于0时向后移动。
* @param {number} steps.y 左右移动的距离,大于0时向右移动,小于0时向左移动。
* @param {number} steps.z 上下移动的距离,大于0时向上移动,小于0时向下移动。
* @param {number} steps.w 左右旋转的角度(弧度制),大于0时逆时针转动,小于0时顺时针转动。
* @param {number} time 过渡时间(单位毫秒),移到step距离所需的时间。默认为0,这时需要手动调用moveUpdate方法更新位置。大于0时会自动更新人物位置实现过渡动画。移动过程中再次调用会立即实行新的过渡。
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.goto({
x: 1,
y: 1,
z: 0,
w: 0,
});
2.3.8. moveUpdate
更新模型人物位置
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
无 | null | null | null | null |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 更新模型人物位置(每次调用移动、旋转接口之后需要调用)
* @method moveUpdate
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.moveUpdate();
2.4. 其他方法
2.4.1. destroy
销毁
名称 | 说明 | 类型 | 是否必须 | 示例 |
---|---|---|---|---|
无 | null | null | null | null |
返回值说明 | 类型 | 示例 |
---|---|---|
无 | null | null |
调用方式:
/**
* 销毁
* @method destroy
* @return {void}
* */
var skeletal = new BOS3D.Plugins.Animation.SkeletalAnimation(config);
skeletal.destroy();