Box3无法包裹模型问题

📅 2026/8/27 13:26:40
Box3无法包裹模型问题
在 Three.js 中,当你通过 FBXLoader 或 GLTFLoader 加载模型时,为了追求极致的加载性能,几何体(Geometry)的包围盒(boundingBox)默认是不计算的(即 geometry.boundingBox === null)。Three.js 内部在获取或处理几何体数据时,会触发惰性计算(Lazy Evaluation)。如果此时 geometry.boundingBox 为空,Three.js 会在后台自动调用 geometry.computeBoundingBox() 来生成这个包围盒。// 确保矩阵是最新的model.updateMatrixWorld(true);// 直接获取,Three.js 会自动处理内部的 boundingBox 计算constbox=newTHREE.Box3().setFromObject(model);##!#在这里插入图片描述遇到了 Box3 包裹不全的问题,大概率是因为在调用 setFromObject 之前,没有调用 model.updateMatrixWorld(true),导致子物体的世界坐标变换没有生效,包围盒计算时使用的是错误的局部坐标。!#在这里插入图片描述adjustModelPositionAndCamera(model){model.updateMatrixWorld(true);constbeforeHelper=newTHREE.BoxHelper(model,0xff0000);// 红色// this.scene.add(beforeHelper);constinitialBox=newTHREE.Box3().setFromObject(model);constinitialSize=newTHREE.Vector3();constinitialCenter=newTHREE.Vector3()