Aframe从世界位置计算本地系统中的位置。

时间:2018-05-14 22:44:33

标签: three.js aframe

我有一个组件可以动画到相机前面的位置,但是当它是另一个物体的孩子时,这就是在错误的方向(远离相机)动画,因为它&#39 ; s使用实体中的世界位置。

我知道这是因为世界坐标..任何人都可以帮助告诉我如何将这个世界位置转换为本地坐标?

    pLocal= new THREE.Vector3(0, 0, -distX)
   this._targetPosition = pLocal.applyMatrix4(this._threeCamera.matrixWorld)

我在这个例子中,这个盒子是球体的一个孩子,并且远离相机动画。 https://jsfiddle.net/jpvsrnq1/2/

如果盒子不是孩子,它会对相机产生动画效果。 https://jsfiddle.net/jpvsrnq1/3/

当它是另一个物体的孩子时,如何让它对相机设置动画?

1 个答案:

答案 0 :(得分:2)

您应该使用worldToLocal()方法:

来自docs

  

.worldToLocal(vector:Vector3):Vector3
   更新从世界空间到本地空间的向量。

通过在父级parentObj.worldToLocal(vec)上使用该方法,您可以将其世界位置应用于本地位置向量。小提琴here

小提琴here

另一种方法是循环访问父实体,并减去它们的位置,但它似乎没有worldToLocal方法的任何优势