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


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号