MMD物理([name])

资源的物理处理程序 `MMD`

[name] 使用 [link:https://github.com/kripken/ammo.js/ ammo.js] (基于 Bullet 的 JavaScript 物理引擎)为 [page:MMDLoader] 计算加载模型的物理量。

导入

[name] 是一个附加组件,必须显式导入。请参阅 [link:#manual/introduction/Installation Installation / Addons]。

import { MMDPhysics } from 'three/addons/animation/MMDPhysics.js';

代码示例

let physics; // Load MMD resources and instantiate MMDPhysics new MMDLoader().load( 'models/mmd/miku.pmd', function ( mesh ) { physics = new MMDPhysics( mesh ) scene.add( mesh ); } ); function render() { const delta = clock.getDelta(); animate( delta ); // update bones if ( physics !== undefined ) physics.update( delta ); renderer.render( scene, camera ); }

例子

[example:webgl_loader_mmd]
[example:webgl_loader_mmd_audio]

构造函数

[name]( [param:SkinnedMesh mesh], [param:Array rigidBodyParams], [param:Array constraintParams], [param:Object params] )

[page:SkinnedMesh mesh] — [page:SkinnedMesh], [name] 为其计算物理。
[page:Array rigidBodyParams] — 指定刚体参数的 [page:Object] 数组。
[page:Array constraintParams] — 可选)指定约束参数的 [page:Object] 数组。
[page:Object params] — (可选)

创建一个新的 [name]。

属性

[property:Array mesh]

[page:SkinnedMesh] 传递给构造函数。

方法

[method:MMDPhysicsHelper createHelper]()

返回 [page:MMDPhysicsHelper]。您可以通过将辅助对象添加到场景来可视化刚体。

[method:this reset]()

重置刚体变换为当前骨骼的刚体。

[method:this setGravity]( [param:Vector3 gravity] )

[page:Vector3 gravity] — 重力的方向和体积。

设置重力。

[method:this update]( [param:Number delta] )

[page:Number delta] — 时间(以秒为单位)

高级物理计算和更新骨骼。

[method:this warmup]( [param:Integer cycles] )

[page:Number delta] — 时间(以秒为单位)

热身刚体。计算循环步数。

源代码

[link:https://github.com/mrdoob/three.js/blob/master/examples/jsm/animation/MMDPhysics.js examples/jsm/animation/MMDPhysics.js]