BufferGeometry
Object3D
Raycaster
Camera
CubeCamera
PerspectiveCamera
OrthographicCamera
StereoCamera
Clock
Curve
CurvePath
Path
Shape
ShapePath
ArrowHelper
AxesHelper
BoxHelper
Box3Helper
CameraHelper
DirectionalLightHelper
GridHelper
PolarGridHelper
HemisphereLightHelper
PlaneHelper
PointLightHelper
SkeletonHelper
SpotLightHelper
Light
PointLight
RectAreaLight
SpotLight
DirectionalLight
HemisphereLight
LightShadow
PointLightShadow
AnimationLoader
AudioLoader
BufferGeometryLoader
CompressedTextureLoader
CubeTextureLoader
DataTextureLoader
FileLoader
ImageBitmapLoader
ImageLoader
Loader
LoaderUtils
MaterialLoader
ObjectLoader
TextureLoader
LoadingManager
Material
Box2
Box3
Color
Cylindrical
Euler
Frustum
Interpolant
Line3
MathUtils
Matrix3
Matrix4
Plane
Quaternion
AnimationAction
AnimationClip
AnimationMixer
AnimationObjectGroup
AnimationUtils
keyframeTrack
PropertyBinding
PropertyMixer
BooleanKeyframeTrack
QuaternionKeyframeTrack
StringKeyframeTrack
Audio
AudioAnalyser
AudioContext
AudioListener
PositionalAudio

keyframeTrack.InterpolantFactoryMethodSmooth()

keyframeTrack.InterpolantFactoryMethodSmooth()Three.js 中的一个工厂方法,用于在 keyframeTrack 中创建平滑插值器。

描述

在动画中,对于某些物体或场景元素的不同状态,我们需要使用不同的关键帧来描述。keyframeTrack 存储了这些关键帧的值和时间信息,但是在关键帧之间进行插值时,直接使用线性或步进插值方法可能会导致动画产生不平滑的效果。这时候我们可以使用 keyframeTrack.InterpolantFactoryMethodSmooth() 方法创建平滑插值器,使得物体或场景元素在关键帧之间的过渡更加自然平滑。

语法

const interpolantFactoryMethod = THREE.InterpolationFactoryMethodSmooth();

返回值

返回的是一个函数,可以被用于创建 keyframeTrack 对象的插值器。

使用

使用 keyframeTrack.InterpolantFactoryMethodSmooth() 方法实例化平滑插值器的示例代码如下:

const trackName = ".position";
const track = new THREE.KeyframeTrack( trackName, [ 0, 1, 2 ], [ 1, 2, 3, 2, 1, 0, 0, 0, 0 ] );
track.createInterpolant = THREE.InterpolationFactoryMethodSmooth();

在上述代码中,我们使用 THREE.KeyframeTrack() 构造函数创建了一个名为 trackName 的关键帧轨迹对象 track。关键帧的时间信息为 [ 0, 1, 2 ],值信息为 [ 1, 2, 3, 2, 1, 0, 0, 0, 0 ],表示在时间为 0 时,位置为 (1, 2, 3);在时间为 1 时,位置为 (2, 1, 0);在时间为 2 时,位置为 (0, 0, 0)。之后,我们通过设置 createInterpolant 属性为 THREE.InterpolationFactoryMethodSmooth() 的结果返回值,来创建一个平滑插值器,并将其赋值给 trackcreateInterpolant 属性,从而实现了对关键帧轨迹的平滑插值运算。

注意事项

  1. keyframeTrack.InterpolantFactoryMethodSmooth() 方法是一个静态方法,可以被 THREE 对象直接调用。
  2. keyframeTrack.InterpolantFactoryMethodSmooth() 方法返回的是一个函数,需要再次调用才能使用。
  3. keyframeTrack.InterpolantFactoryMethodSmooth() 方法创建的平滑插值器是基于 Catmull-Rom 样条插值方法实现的。
  4. 仅在使用 THREE.KeyframeTrack() 构造函数手动创建关键帧轨迹时才需要调用 keyframeTrack.InterpolantFactoryMethodSmooth() 方法,如果是使用 THREE.AnimationClip() 构造函数创建 AnimationClip,则 THREE 会自动选择合适的插值方法。
  5. keyframeTrack.InterpolantFactoryMethodSmooth() 方法创建的插值器可以与 THREE.AnimationMixer 类的实例一起使用。

参考链接

THREE.js Documentation