有没有办法知道 a-frame 元素的 "real" 位置?

Is there a way to know the "real" position of an a-frame element?

我想找到 a-frame 元素的 "real" 位置。不是 position 属性中显示的那个。但是那个是所有 parents 和相对于 world/scene 位置的总和?

您可以在three.js中查询世界坐标:https://threejs.org/docs/#api/en/core/Object3D.getWorldPosition

它看起来像:

var worldPos = new THREE.Vector3();
worldPos.setFromMatrixPosition(el.object3D.matrixWorld);

为了从 2021 年/A-Frame 1.1.0 的角度给出更完整/更新的答案,

如前所述here,

var parent = new THREE.Object3D();
parent.position.set(100, 100, 100);

var child = new THREE.Object3D();
child.position.set(100, 100, 100);
parent.add(child);

scene.add(parent);

var target = new THREE.Vector3(); // create once an reuse it

child.getWorldPosition( target );

目标将包含结果。

用A-Frame来说,应该是,

AFRAME.registerComponent('some-component', {
  init() {
    const realWorldPosition = this.el.object3D.getWorldPosition(new THREE.Vector3())
  },
};