gpt4 book ai didi

Three.js 子网格位置总是返回 (0,0,0)

转载 作者:行者123 更新时间:2023-12-01 10:02:18 24 4
gpt4 key购买 nike

我通过 OBJLoader 加载了一些对象,加载的对象包含一个父级和多个子级;然后我应用 Raycaster 并找到点击的 child 。

然后我想更新子对象的位置,但是所有子对象的初始位置都为零。

var intersect = intersects[0].object;
intersect.position.y = intersect.position.y + 5; // 0 + 5

但在我的场景中,一切看起来都很好。另外,如果我删除点击的对象,实际上它是从场景中删除的。我想我错过了一些点,他们的位置不能是(0,0,0)。我怎样才能到达他们的相对位置?

最佳答案

这里是设置Transform Control到对象中心的代码:

let objLoader = new THREE.OBJLoader();
let mtlLoader = new THREE.MTLLoader();
mtlLoader.load("path/to/mtlFile.mtl", (materials) => {
materials.preload();
objLoader.setMaterials(materials).load("path/to/objFile.obj", (object3d) => {
object3d.traverse((child) => {
if (child instanceof THREE.Mesh) {
child.geometry.computeBoundingBox();
let matrix = new THREE.Vector3();
let offset = child.geometry.boundingBox.getCenter(matrix);
child.geometry.applyMatrix(new THREE.Matrix4().makeTranslation(-offset.x, -offset.y, -offset.z));
child.position.copy(offset);
objects.push(child);
}
});
scene.add(object3d);
});
});

关于Three.js 子网格位置总是返回 (0,0,0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14493019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com