用于 MMD 资源的动画助手.
[name] 处理由 [page:MMDLoader]加载的MMD资产,其中MMD 特殊功能为 IK, Grant, and Physics.
它使用在内部使用 [page:CCDIKSolver] 和 [page:MMDPhysics].
// Instantiate a helper
var helper = new THREE.MMDAnimationHelper();
// Load MMD resources and add to helper
new THREE.MMDLoader().loadWithAnimation(
'models/mmd/miku.pmd',
'models/mmd/dance.vmd',
function ( mmd ) {
helper.add( mmd.mesh, {
animation: mmd.animation,
physics: true
} );
scene.add( mmd.mesh );
new THREE.AudioLoader().load(
'audios/mmd/song.mp3',
function ( buffer ) {
var listener = new THREE.AudioListener();
var audio = new THREE.Audio( listener )
.setBuffer( buffer );
listener.position.z = 1;
scene.add( audio );
scene.add( listener );
}
);
}
);
function render() {
helper.update( clock.getDelta() );
renderer.render( scene, camera );
}
[example:webgl_loader_mmd]
[page:Object params] — (可选的)
新建一个 [name].
添加到助手的 [page:Audio]
添加到助手的 [page:Camera]
添加到助手的 [page:SkinnedMesh] 数组
一个[page:WeakMap],它存储添加到助手的对象及其动画内容. 例如, 你可以用 "helper.objects.get( mesh ).mixer"访问 [page:AnimationMixer] 用以添加 [page:SkinnedMesh]
在[page:SkinnedMesh]的物理计算之前立即执行的可选回调。 使用[page:SkinnedMesh]调用此函数
[page:Object3D object] — [page:SkinnedMesh], [page:Camera], or [page:Audio]
[page:Object params] — (可选的)
添加 [page:SkinnedMesh], [page:Camera], 或者 [page:Audio] 到助手并且设置动画. 添加的对象的动画时间是同步的. 如果已经添加了摄像机/音频,它将被替换为新的。
[page:string key] — 允许的字符串是 'animation', 'ik', 'grant', 'physics', and 'cameraAnimation'.
[page:Boolean enabled] — true 启用, false 禁用
启用/禁用某项动画功能
[page:SkinnedMesh mesh] — 会变姿势的[page:SkinnedMesh] . 不必加入助手
[page:Object vpd] — VPD内容由 [page:MMDLoader].loadVPD获取
[page:Object params] — (可选的)
在VPD内容指定时更改[page:SkinnedMesh]的姿势 .
[page:Object3D object] — [page:SkinnedMesh], [page:Camera], 或 [page:Audio]
从助手移除一个[page:SkinnedMesh], [page:Camera], 或 [page:Audio] .
[page:Number delta] — 一秒钟数值
提前调整时间并更新添加到助手的动画