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

構(gòu)造函數(shù)

MMDPhysics( mesh : SkinnedMesh, rigidBodyParams : Array, constraintParams : Array, params : Object )

mesh — MMDPhysics 為其計算物理的 SkinnedMesh。

rigidBodyParams — 指定剛體參數(shù)的對象數(shù)組。

constraintParams — (可選) 指定約束參數(shù)的對象數(shù)組。

params — (可選)

  • unitStep - 默認值為 1 / 65。
  • maxStepNum - 默認值為 3。
  • gravity - 默認為 ( 0, - 9.8 * 10, 0 )

創(chuàng)建一個新的 MMDPhysics。

屬性

.mesh : Array

SkinnedMesh 傳遞給構(gòu)造函數(shù)。

方法

.createHelper () : MMDPhysicsHelper

返回 MMDPhysicsHelper。您可以通過將助手添加到場景來可視化剛體。

.reset () : this

重置剛體轉(zhuǎn)換為當前骨骼的剛體。

.setGravity ( gravity : Vector3 ) : this

gravity — 重力的方向和體積。

設(shè)置重力。

.update ( delta : Number ) : this

delta — 時間以秒為單位。

推進物理計算和更新骨骼。

.warmup ( cycles : Integer ) : this

delta — 時間以秒為單位。

預(yù)熱剛體。計算循環(huán)步驟。

源碼

examples/jsm/animation/MMDPhysics.js


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號