THREE.JS,忽略父母的轮换

时间:2015-04-12 05:50:35

标签: javascript matrix three.js position

我试图让儿童对象跟随父母的位置并且表现得像一个普通的孩子,但是我希望它保持它的旋转不变。

在不影响性能的情况下,最好的方法是什么?(我已经在运行2名工作人员并拥有大量对象的cpu预算紧张)? 是否有允许只有孩子的位置受到影响的设置?

同样重要的是,当父母被轮换时,孩子的位置应该跟随轮换。

2 个答案:

答案 0 :(得分:2)

您希望在子女的父级轮换时阻止子对象旋转。

这两种模式中的一种应该做你想要的。他们的行为略有不同。

第一种模式:

var gyro = new THREE.Gyroscope();

scene.add( parent );
parent.add( gyro );
gyro.add( child ); // add child to gyroscope

child.position.set( x, y, z );

第二种模式:

object = new THREE.Object3D();
object.position.set( x, y, z ); // child's desired position relative to parent

scene.add( parent );
parent.add( object ); // add object to parent
scene.add( child ); // add child to scene

在第二种情况下,您必须在渲染循环中手动更新子位置,如下所示:

child.position.setFromMatrixPosition( object.matrixWorld );

three.js r.71

答案 1 :(得分:1)

我建议

child.position.copy(object.position);

而不是WestLangley答案中的建议:

child.position.setFromMatrixPosition( object.matrixWorld );

我遇到了一个问题,后者不准确,导致孩子的位置发抖。

请注意,这仅回答您问题的第一部分,即如何遵循父母的位置,使孩子的轮换保持不变。

也许我需要澄清问题的第二部分,因为对我来说这还不是很清楚。