有没有办法知道 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())
},
};
我想找到 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())
},
};