我需要在对其进行旋转后找出几何体的边界框。
旋转代码 - 取自 Three JS
的样本编辑器object.rotation.x = xRadians;
object.rotation.y = yRdians;
object.rotation.z = zRadians
这可以很好地旋转对象。
现在我需要获取更新的边界框
获取边界框的代码
var minX = parseFloat(object.boundingBox.min.x);
var minY = parseFloat(object.boundingBox.min.y);
var minZ = parseFloat(object.boundingBox.min.z);
无论旋转是什么,我都会在minX-Z中获得相同的值。获取更新的边界框的正确方法是什么?
我正在使用r-66。
我也尝试过使用:
var radians = x * Math.PI / 180;
var axisX = new THREE.Vector3(1, 0, 0);
var matrix = new THREE.Matrix4().makeRotationAxis(axisX, radians);
geometry.applyMatrix(matrix);
此方法执行相对旋转并正确更新边界框,但我不希望相对旋转。第一种方法是我正在寻找但不会更新对象的边界框。
有什么想法吗? 谢谢!
答案 0 :(得分:5)
Box3.setFromObject( object )
计算对象(包括其子对象)的世界轴对齐边界框,同时考虑对象和儿童世界变换。
var box = new THREE.Box3().setFromObject( object );
three.js r.66
答案 1 :(得分:3)
var box = new THREE.Box3().setFromObject( object );
将返回世界坐标,因此您需要从中减去它们:
var bbox = new THREE.Box3().setFromObject(object);
bbox.min.sub(object.position);
bbox.max.sub(object.position);
这将为您提供相对于对象的正确边界框。