javascript - 三个js : computing the bounding box of rotated text

标签 javascript rotation three.js

在我的场景中,我有一段文字。创建它之后,我旋转它以适合正确的区域。然而,边界框完全忽略了旋转。

我在这里做了一个 fiddle :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.rotateZ( Math.PI / 2 );

现在您可以调用 geometry.computeBoundingBox(),您应该会看到预期的结果。

第二个选项是使用 Box3.setFromObject( object ) 来计算网格的边界框:

var box = new THREE.Box3().setFromObject( object );

此函数计算对象(包括其子项)的世界轴对齐边界框,同时考虑对象和子项的世界变换。

编辑:更新到 three.js r.95

关于javascript - 三个js : computing the bounding box of rotated text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17646945/

相关文章:

javascript - 从对象内部的函数获取对象的属性

javascript - javascript中按位运算符的性能

javascript - javascript search() 方法中不允许使用某些特殊字符

javascript - Three.js 获取可见区域中心的粒子

javascript - 如何围绕组内的某个点旋转 Three.js 组?

javascript - 为什么我的场景没有渲染?

javascript - 内部函数是外部函数的属性吗?

java - 如何让 root 和命名记录器的文件处理程序记录到同一个文件?

ios - 使用GLKit旋转OpenGL ES对象

android - Camera X 捕捉不同旋转状态下的图像