Javascript 执行旋转后未更新三个JS-边界框
在对几何体应用旋转后,我需要找出它的边界框 要旋转的代码-取自三个JS的示例编辑器Javascript 执行旋转后未更新三个JS-边界框,javascript,rotation,three.js,bounding-box,Javascript,Rotation,Three.js,Bounding Box,在对几何体应用旋转后,我需要找出它的边界框 要旋转的代码-取自三个JS的示例编辑器 object.rotation.x = xRadians; object.rotation.y = yRdians; object.rotation.z = zRadians 这会很好地旋转对象 现在我需要得到更新的边界框 获取边界框的代码 var minX = parseFloat(object.boundingBox.min.x); var minY = parseFloat(object.bounding
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);
此方法执行相对旋转并正确更新边界框,但我不希望进行相对旋转。第一种方法是我正在寻找的,但它不会更新对象的边界框
有什么想法吗?
谢谢 Box3.setFromObject(object)
计算对象(包括其子对象)的世界轴对齐边界框,同时考虑对象和子对象的世界变换
var box = new THREE.Box3().setFromObject( object );
3.js r.66
var box = new THREE.Box3().setFromObject( object );
将返回世界坐标,因此您需要从中减去它们:
var bbox = new THREE.Box3().setFromObject(object);
bbox.min.sub(object.position);
bbox.max.sub(object.position);
这将为您提供相对于对象的正确边界框。我不确定是否返回与对象“相同”的边界框。使用时边界框的作用:var matrix=new THREE.Matrix4().makeRotationAxis(axisX,弧度);它似乎返回了完全不同的值。我不是在找人来帮我调试代码,但我附上了一张图片,显示var box=new THREE.Box3().setFromObject(object);似乎没有给出正确的值:还有为什么plain object.boundingBox不起作用?谢谢你的意思是
几何体.boundingBox
<代码>几何体。边界框不考虑变换。查看源代码以了解它在做什么。您能告诉我应该查看代码的哪一部分以查看转换在哪里执行吗?好的,下面的代码不返回“右”边界:var box=new THREE.Box3().setFromObject(mesh)代码>但无论如何我都会记下答案。