# 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] — （可选）

- [page:Number unitStep] - 默认为 1 / 65
- [page:Integer maxStepNum] - 默认为 3
- [page:Vector3 gravity] - 默认为 ( 0, - 9.8 * 10, 0 )

创建一个新的 [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]