three.js AnimationClip 和 AnimationMixer

AnimationClip

动画剪辑(AnimationClip)是一个可重用的关键帧轨道集,它代表动画。

构造器

AnimationClip( name : String, duration : Number, tracks : Array )

name - 此剪辑的名称
duration - 持续时间 (单位秒). 如果传入负数, 持续时间将会从传入的数组中计算得到。
tracks - 一个由关键帧轨道(KeyframeTracks)组成的数组。

说明: 与其直接调用构造函数实例化一个动画剪辑, 不如使用其静态方法中的一个来创建: 用JSON (parse), 用变形目标序列(CreateFromMorphTargetSequence, CreateClipsFromMorphTargetSequences)或者用动画层级 (parseAnimation)来创建 - 如果你的模型中几何体的动画数组中还没有保存动画剪辑的话。

属性

# .duration : Number

剪辑的持续时间 (单位秒). 可以通过resetDuration从轨道数组(tracks)计算出来。

# .name : String

剪辑的名称. 调用findByName根据名称搜索某个剪辑

# .tracks : Array

一个包含该剪辑中有动画的所有属性的关键帧轨道(KeyframeTrack)的数组。

# .uuid : String

剪辑实例的UUID,自动分配且不可编辑。

方法

# .clone () : AnimationClip

# .optimize () : this

通过移除等效的顺序键(在变形目标序列中很常见)来优化每一个轨道

# .resetDuration () : this

将剪辑的持续时间(duration)设为最长的关键帧轨道(KeyframeTrack)的持续时间。 .

# .trim () : this

修剪所有的轨道到该剪辑的持续时间。

# .validate () : Boolean

对剪辑中的每个轨道执行最小验证。如果所有轨道都有效,返回true。

静态方法

# .CreateClipsFromMorphTargetSequences ( name : String, morphTargetSequence : Array, fps : Number, noLoop : Boolean ) : Array

返回从几何体的变形目标序列(morph target sequences)创建的新动画剪辑(AnimationClip)数组,并尝试将变形目标名称分类为基于动画组的模式,如“Walk_001、Walk_002、Run_001、Run_002……”。

# .CreateFromMorphTargetSequence ( name : String, morphTargetSequence : Array, fps : Number, noLoop : Boolean ) : AnimationClip

返回一个由几何体变形目标数组(morph targets array)得到的新动画剪辑,接收名称和帧率参数。

说明: 帧率是必须参数, 但是动画速度可能会在AnimationAction中被animationAction.setDuration方法重写。

# .findByName ( objectOrClipArray : Object, name : String ) : AnimationClip

根据名称搜索动画剪辑(AnimationClip), 接收一个动画剪辑数组或者一个包含名为"animation"的数组的网格(或几何体)作为第一个参数。

# .parse ( json : Object ) : AnimationClip

解析剪辑的JSON表示,并返回一个动画剪辑(AnimationClip)。

# .parseAnimation ( animation : Object, bones : Array ) : AnimationClip

解析动画层级格式并返回动画剪辑。

# .toJSON ( clip : AnimationClip ) : Object

接收一个动画剪辑为参数并返回一个JSON对象.

AnimationMixer

动画混合器是用于场景中特定对象的动画的播放器。当场景中的多个对象独立动画时,每个对象都可以使用同一个动画混合器。

构造器

AnimationMixer( rootObject : Object3D )

rootObject - 混合器播放的动画所属的对象

属性

.time : Number

全局的混合器时间(单位秒; 混合器创建的时刻记作0时刻)

.timeScale : Number

全局时间(mixer time)的比例因子

说明: 将混合器的时间比例设为0, 稍后再设置为1,可以暂停/取消暂停由该混合器控制的所有动作。

.setTime (timeInSeconds : Number) : AnimationMixer

设置全局混合器到一个给定的时间,并相应地更新动画。

当你需要在一个动画里跳转到一个精确的时间,该函数将是十分有用的。输入的参数将会被混合器的timeScale进行缩放。

方法

.clipAction (clip : AnimationClip, optionalRoot : Object3D) : AnimationAction

返回所传入的剪辑参数的AnimationAction, 根对象参数可选,默认值为混合器的默认根对象。第一个参数可以是动画剪辑(AnimationClip)对象或者动画剪辑的名称。

如果不存在符合传入的剪辑和根对象这两个参数的动作, 该方法将会创建一个。传入相同的参数多次调用将会返回同一个剪辑实例。

.existingAction (clip : AnimationClip, optionalRoot : Object3D) : AnimationAction

返回传入剪辑的已有AnimationAction, 根对象参数可选,默认值为混合器的默认根对象。

第一个参数可以是动画剪辑(AnimationClip)对象或者动画剪辑的名称。

.getRoot () : Object3D

返回混合器的根对象

.stopAllAction () : AnimationMixer

停用混合器上所有预定的动作

.update (deltaTimeInSeconds : Number) : AnimationMixer

推进混合器时间并更新动画

通常在渲染循环中完成, 传入按照混合器的时间比例(timeScale)缩放过的clock.getDelta

.uncacheClip (clip : AnimationClip) : null

释放剪辑的所有内存资源

.uncacheRoot (root : Object3D) : null

释放根对象的所有内存资源

.uncacheAction (clip : AnimationClip, optionalRoot : Object3D) : null

释放动作的所有内存资源

你可能感兴趣的:(three,web3,前端,javascript,vue.js)