three.js如何将一个对象放置在另一个对象旁边(全球世界位置)[关闭]

问题描述 投票:3回答:3

我在场景中使用objloader加载了一个对象,稍后,在场景中加载了第二个对象,但是我想将其绝对位置更改为第一个对象的另一侧。

两个对象的所有位置都相对于本地(0,0,0)。

如何更改其全球位置?

three.js position global relative
3个回答
6
投票

davincy发布的答案现在已过时。在我的threejs版本中,它发出了以下警告:

THREE.Matrix4:.getPosition()已被删除。采用改为使用Vector3.setFromMatrixPosition(matrix)。

因此,您需要将其替换为以下内容:

objectA.position.setFromMatrixPosition( objectB.matrixWorld );

其中objectB是场景中的对象,也是您希望objectA从其复制位置的对象。


1
投票

我找到了答案:

object1.position.copy(object2.matrixWorld.getPosition());

0
投票

您可以放入场景中的每个对象都具有“ 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场景上的对象的其他属性和方法:

https://threejs.org/docs/#api/en/core/Object3D

© www.soinside.com 2019 - 2024. All rights reserved.