【问题标题】:Oriented Bounding Box rotation issue?定向边界框旋转问题?
【发布时间】:2016-03-10 08:51:43
【问题描述】:

我正在为一个项目的 stanford bunny 制作 OBB。我计算了协方差矩阵并找到了它的特征向量。特征向量矩阵的列是我的旋转矩阵的组成部分,例如第一个特征向量列是我的旋转矩阵的第一列。

为了找到将 OBB 移回中心的点平移量,我将包含我的中心点 (xc, yc, zc,1) 的向量乘以旋转矩阵(我认为这会给我新的中心点值)。然后我将这些值的负值添加为我的转换矩阵的平移元素。

然后,我使用与 x、y、z 轴相关的最大/最小点来渲染边界框。然后我进行逆变换。结果不是我所期望的。如您所见,盒子与新轴对齐,但方式不正确,并且它不适合螺丝刀......

我的理论有问题吗?还是矩阵没有正确相乘。如果我不使用任何平移,它似乎离中心很远,但是 AOBB 计算得很好。我很困惑。

【问题讨论】:

    标签: c++ opengl matrix transformation bounding-box


    【解决方案1】:

    正如您在其他答案中所评论的:局部坐标轴的中心(特征向量轴原点)不是模型的中心 ((max-min)/2) !!中心是点的平均值! {Sum(X), Sum(Y), sum(Z)}/Npoints。它们是不同的点。

    作为一个简单的例子,考虑点集x=[0 0 0 0 0 0 0 0 10]。它的中心(在统计/数学中称为中位数)是5,但平均值是1.11111111111111。不要混淆他们! OBB 始终以均值为中心,无论您是绘制对象居中还是仅将其绘制在随机位置。

    如果您在使用 OBB 时遇到问题,建议您阅读:Oriented Bounding Box is Misshapen and the Wrong Size in OpenGL

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      • 2014-01-24
      • 2021-08-25
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多