我在场景中使用objloader加载了一个对象,稍后,在场景中加载了第二个对象,但是我想将其绝对位置更改为第一个对象的另一侧。
两个对象的所有位置都相对于本地(0,0,0)。
如何更改其全球位置?
davincy发布的答案现在已过时。在我的threejs版本中,它发出了以下警告:
THREE.Matrix4:.getPosition()已被删除。采用改为使用Vector3.setFromMatrixPosition(matrix)。
因此,您需要将其替换为以下内容:
objectA.position.setFromMatrixPosition( objectB.matrixWorld );
其中objectB是场景中的对象,也是您希望objectA从其复制位置的对象。
我找到了答案:
object1.position.copy(object2.matrixWorld.getPosition());
您可以放入场景中的每个对象都具有“ position”属性,这是三维向量。您可以简单地更改其x / y / z值。
例如,给定您的对象称为“网格”:
mesh.position.x += 1; //you need re-render if you change something in the object after adding to the scene
yourScene.add(mesh);
这会将对象在场景中移动一个“单位”。这意味着您可以这样做:
mesh2.position.x = mesh1.position.x + 1;
yourScene.add(mesh1);
yourScene.add(mesh2);
这里您可以检查可用于放置在THREE.js场景上的对象的其他属性和方法: