Javascript 如何抵消模型与three/js和oimo.js的冲突
我正在尝试使用three.js导入一个模型,然后在Oimo中创建一个实体来表示它,从而创建一个具有对象的collsion 我的问题来自模型的中心,与对象的中心不相关。因此,当我使边界框变大时,脚处的碰撞是不正确的。有没有一种简单的方法可以通过代码甚至编辑模型来实现这一点(建模不是我的专业领域)Javascript 如何抵消模型与three/js和oimo.js的冲突,javascript,typescript,three.js,physics-engine,Javascript,Typescript,Three.js,Physics Engine,我正在尝试使用three.js导入一个模型,然后在Oimo中创建一个实体来表示它,从而创建一个具有对象的collsion 我的问题来自模型的中心,与对象的中心不相关。因此,当我使边界框变大时,脚处的碰撞是不正确的。有没有一种简单的方法可以通过代码甚至编辑模型来实现这一点(建模不是我的专业领域) 好吧,我设法弄明白了。所以它只是半高,这个值嵌套在成员形状的深处 protected render(): void { requestAnimationFrame( this.re
好吧,我设法弄明白了。所以它只是半高,这个值嵌套在成员形状的深处
protected render(): void {
requestAnimationFrame( this.render.bind( this ) );
let deltaTime = this.clock.getDelta();
this.world.step();
this.physicsBodies.forEach( ( data: { body: RigidBody, object: GameModel, cube?: Mesh }, index ) => {
data.object.update( deltaTime );
if ( data.object.isDirty ) {
data.body.position.copy( data.object.getDisplayObject().position );
data.object.isDirty = false;
}
data.object.getDisplayObject().position.copy( data.body.getPosition() );
data.object.getDisplayObject().position.y -= data.body.shapes.halfHeight;
let bodyQuaternion = data.body.getQuaternion();
data.object.getDisplayObject().quaternion.set(
bodyQuaternion.x,
bodyQuaternion.y,
bodyQuaternion.z,
bodyQuaternion.w
);
data.object.updateMixer( deltaTime );
} );
this.nonPhysicsBodies.forEach( ( model: GameModel ) => {
model.updateMixer( deltaTime );
} );
this.renderer.render( this.scene, this.camera );
}
所以每次渲染我都需要从主体位置减去半高
data.object.getDisplayObject().position.y-=data.body.shapes.halfHeight代码>
var animate = function () {
requestAnimationFrame( animate );
let deltaTime = clock.getDelta();
if ( mixer2 ) {
mixer2.forEach( mix => {
mix.update( deltaTime );
} );
}
if ( world ) {
world.step();
bodies.forEach( ( body, index ) => {
models[ index ].position.copy( body.getPosition() );
models[ index ].quaternion.copy( body.getQuaternion() );
cubes[ index ].position.copy( body.getPosition() );
cubes[ index ].quaternion.copy( body.getQuaternion() );
} )
}
renderer.render( scene, camera );
};
animate();
protected render(): void {
requestAnimationFrame( this.render.bind( this ) );
let deltaTime = this.clock.getDelta();
this.world.step();
this.physicsBodies.forEach( ( data: { body: RigidBody, object: GameModel, cube?: Mesh }, index ) => {
data.object.update( deltaTime );
if ( data.object.isDirty ) {
data.body.position.copy( data.object.getDisplayObject().position );
data.object.isDirty = false;
}
data.object.getDisplayObject().position.copy( data.body.getPosition() );
data.object.getDisplayObject().position.y -= data.body.shapes.halfHeight;
let bodyQuaternion = data.body.getQuaternion();
data.object.getDisplayObject().quaternion.set(
bodyQuaternion.x,
bodyQuaternion.y,
bodyQuaternion.z,
bodyQuaternion.w
);
data.object.updateMixer( deltaTime );
} );
this.nonPhysicsBodies.forEach( ( model: GameModel ) => {
model.updateMixer( deltaTime );
} );
this.renderer.render( this.scene, this.camera );
}