定向边界框旋转问题?

时间:2015-12-05 12:39:11

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

我正在为斯坦福兔子做项目的OBB。我已经计算了协变矩阵并找到了它的特征向量。特征向量矩阵的列是我的旋转矩阵的分量,例如,第一个特征向量列是我的旋转矩阵的第一列。

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

然后我使用相对于x,y,z轴的最大/最小点来渲染边界框。然后我进行逆变换。结果不是我的预期。正如你所看到的那样,盒子与新轴对齐,但不是以正确的方式对齐,并且它适合于螺丝刀。

enter image description here

我的理论有问题吗?或者矩阵没有正确倍增..如果我不使用任何翻译,它似乎离中心很远,但AOBB计算得很完美..我很困惑。

1 个答案:

答案 0 :(得分:0)

如您的其他答案中所述:本地坐标轴(特征向量轴原点)的中心模型的中心((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