在我的场景中,我有一段文字。创建它之后,我将其旋转以适合正确的区域。但是,边界框完全忽略了旋转。
我在这里做了一个小提琴:http : //jsfiddle.net/paulocoelho/qMqH7/5/
如果检查输出,则会得到:
// before rotation
THREE.Vector3 {x: 28.365000000000006, y: 6.2806, z: 0.5, constructor: function, set: function…}
THREE.Vector3 {x: 0.2542, y: 0, z: 0, constructor: function, set: function…}
// after rotation
THREE.Vector3 {x: 28.365000000000006, y: 6.2806, z: 0.5, constructor: function, set: function…}
THREE.Vector3 {x: 0.2542, y: 0, z: 0, constructor: function, set: function…}
因为我正在Z上旋转90度,所以我希望看到“旋转后边界”为:
{x: 2.2806, y: 28.365000000000006, z: 0.5}
有没有一种方法可以轻松实现这一目标?
在geometry
不知道什么旋转。您有两个选择。
第一种选择是通过对几何体应用旋转矩阵来旋转几何体,而不是旋转网格。例如,
geometry.rotateZ( Math.PI / 2 );
现在您可以拨打电话geometry.computeBoundingBox()
,您应该会看到期望的结果。
第二个选项是用于Box3.setFromObject( object )
计算网格的边界框:
var box = new THREE.Box3().setFromObject( object );
此函数计算对象(包括其子对象)的与世界轴对齐的边界框,同时考虑对象和子对象的世界变换。
编辑:更新为three.js r.95
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句