问题:与gltf-part一起使用的对象的原点为0,0,0
codesandbox示例:https://codesandbox.io/s/xenodochial-moore-4383f?file=/index.html
[显示为场景时显示具有正确位置的日志,并且我使用gltf-part来显示其中所有立方体位置均为0,0,0的立方体
导出的场景来自混合器,在其中将原点设置为每个多维数据集的中心,请参见右上角的多维数据集。
[在Aframe中导入gltf文件并显示带有gltf-part的多维数据集之后,每个多维数据集的原点都为0,0,0。
GLTF是正确的,当我在搅拌机中再次导入它时,原点仍然在立方体的中心。
如果它们都在0,0,0位置,如何获得Aframe中每个立方体的正确坐标?
这对我有用:
window.addEventListener("model-loaded", (e) => {
const sceneObj = document.querySelector("a-scene").object3D;
let object;
object = sceneObj.getObjectByProperty("name", "cube1");
console.log(object.position);
object = sceneObj.getObjectByProperty("name", "cube2");
console.log(object.position);
});
该组件的行为符合预期,已选择了这些部件,但您仍将它们作为子级加载到场景中,因此它们的相对位置对于父元素保持在0,0,0。
这里是如何更改此行为以满足您的需要的粗略概述:
gltf-part
组件,以“重置”加载时提取的“零件”的位置。在此行中克隆网格之后:mesh = part.getObjectByProperty('type', 'Mesh').clone(true);
那么您需要将该网格的位置复制到一个变量,然后在本地重新设置网格:mesh.position.set ( 0, 0, 0 );