three.js在另一个对象的局部坐标系中设置对象

时间:2019-01-07 15:37:30

标签: three.js augmented-reality expo

我想知道是否可以将3d对象放置在three.js中另一个对象的局部坐标系内。因此放置的对象应该相对于“原始”对象。

例如:我用设备相机(带有曝光AR)扫描图像,并希望放置与图像具有固定距离的物体。我认为这些位置是相对于相机的,不是吗?

             this.scene.add(chair)
            chair.position.set(  1, 0,  -5);

            this.scene.add(chair2)
            chair2.position.set( 1, 0 ,  -3);

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是THREE.Group对象。它使您可以将元素嵌套在组中,因此,如果更改组的坐标,则其子级也会随之移动。例如:

// Create parent, set its pos to 0, 5, 0
var parent = new THREE.Group();
scene.add(parent);
parent.position.set(0, 5, 0);

// create child, and add to parent
var chair1 = new THREE.Mesh(geom, mat);
parent.add(chair1);
chair1.position.set(1, 0, 0);

// create child, and add to parent
var chair2 = new THREE.Mesh(geom, mat);
parent.add(chair2);
chair2.position.set(0, 1, 0);
  • chair1在全局坐标中将位于[1, 5, 0],但在局部空间中将位于[1, 0, 0]
  • chair2在全局坐标中将位于[0, 6, 0],但在局部空间中将位于[0, 1, 0]