codecamp

three.js MMDPhysics

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


three.js MMDAnimationHelper
three.js DragControls
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

参考

核心 / BufferAttributes

渲染器 / WebXR

开发者参考

WebGL渲染器

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }