three.js MMDPhysics
2023-02-16 17:49 更新
MMD 资源的物理处理器。
MMDPhysics 使用 ammo.js(基于 Bullet 的 JavaScript 物理引擎)为 MMDLoader 加载的模型计算物理。
代码示例
const 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 );
}
例子
webgl_loader_mmd
webgl_loader_mmd_audio
构造函数
MMDPhysics( mesh : SkinnedMesh, rigidBodyParams : Array, constraintParams : Array, params : Object )
mesh — MMDPhysics 为其计算物理的 SkinnedMesh。
rigidBodyParams — 指定刚体参数的对象数组。
constraintParams — (可选) 指定约束参数的对象数组。
params — (可选)
- unitStep - 默认值为 1 / 65。
- maxStepNum - 默认值为 3。
- gravity - 默认为 ( 0, - 9.8 * 10, 0 )
创建一个新的 MMDPhysics。
属性
.mesh : Array
SkinnedMesh 传递给构造函数。
方法
.createHelper () : MMDPhysicsHelper
返回 MMDPhysicsHelper。您可以通过将助手添加到场景来可视化刚体。
.reset () : this
重置刚体转换为当前骨骼的刚体。
.setGravity ( gravity : Vector3 ) : this
gravity — 重力的方向和体积。
设置重力。
.update ( delta : Number ) : this
delta — 时间以秒为单位。
推进物理计算和更新骨骼。
.warmup ( cycles : Integer ) : this
delta — 时间以秒为单位。
预热刚体。计算循环步骤。
源码
examples/jsm/animation/MMDPhysics.js
以上内容是否对您有帮助:
更多建议: