three.js 包围盒简单应用
程序员文章站
2024-03-16 18:07:22
...
一、包围盒
二、包围盒简单应用:
(一)移动模型到合适的位置
计算多个模型组合的group的包围盒
var bbox = new THREE.Box3().setFromObject(group)
将导入的外部模型移动到世界坐标中心。(比较粗糙的,实际上是包围盒的中心移动到世界坐标中心,而非实际模型)
注意点:从代码中看,group.position.set(-x1,-y1,-z1); 应该是长方体的左下里那个顶点为基准来移动位置的。但又感觉应该不是才对。应该就是几何体的中心才合理于方便。
var bbox = new THREE.Box3().setFromObject(group)
var mdlen=bbox.max.x-bbox.min.x;
var mdwid=bbox.max.z-bbox.min.z;
var mdhei=bbox.max.y-bbox.min.y;
var centerpoint=new THREE.Vector3();
var x1=bbox.min.x+mdlen/2;
var y1=bbox.min.y+mdhei/2;
var z1=bbox.min.z+mdwid/2;
group.position.set(-x1,-y1,-z1); //从代码来看,应该是长方体的左下里那个顶点为基准来移动位置的。但又感觉应该不是才对。应该就是几何体的中心才合理于方便。
其实还有两种方式,一种是通过var BaxH = new THREE.BoundingBoxHelper(Load_Model,hex);
还有Geometry的方式computeboundingBox(),然后取Geometry.center()此时,
几何体就会来到场景的中心位置,但是,这样做对于组是不行的,哪怕对组里面每个几何体都取center,
那么模型也乱了,也没达到效果。
(二)、