【问题标题】:Threejs: computing the bounding box of rotated textThreejs:计算旋转文本的边界框
【发布时间】:2018-08-22 02:41:09
【问题描述】:

在我的场景中,我有一个文本。创建它后,我将其旋转以适合正确的区域。但是,边界框完全忽略了旋转。

我在这里做了一个小提琴: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}

有没有办法轻松实现这一点?

【问题讨论】:

    标签: javascript rotation three.js


    【解决方案1】:

    geometry 对旋转一无所知。你有两个选择。

    第一个选项是通过对几何体应用旋转矩阵来旋转几何体,而不是旋转网格。例如,

    geometry.rotateZ( Math.PI / 2 );
    

    现在您可以致电geometry.computeBoundingBox(),您应该会看到您的期望。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 2010-10-11
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      相关资源
      最近更新 更多