我正在开发 Three.js 应用程序,其中使用 THREE.Group 来管理场景中选定的多米诺骨牌。但是,我遇到一个问题,尽管添加和删除了对象,但 THREE.Group 的位置始终报告为 (0, 0, 0)。此外,我还实现了一种方法来计算组内选定多米诺骨牌的平均位置,但它似乎错误计算了位置。
重现步骤:
在场景中创建多米诺骨牌对象。 使用选择工具选择一个或多个多米诺骨牌。 检查报告的THREE.Group 位置。 将报告的位置与所选多米诺骨牌的实际位置进行比较。
预期行为:
三组的位置应准确反映其中所选多米诺骨牌的平均位置。
实际行为:
THREE.Group 的位置始终报告为 (0, 0, 0),计算出的所选多米诺骨牌的平均位置似乎不正确。
Github页面:https://ka-hirithik.github.io/DominoForgeStackOverFlow/ Github代码:https://github.com/KA-Hirithik/DominoForgeStackOverFlow
在 ThreeJS 中对元素进行分组时,元素的边界框不涉及计算。
为了计算分组元素的位置/中心,可以将其传递给
Box3
进行边界框计算,并使用Box3.getCenter
计算相对于世界的位置/中心点。
const center = new THREE.Vector3();
new THREE.Box3().setFromObject(selectedDomino).getCenter(center);
console.log(center);