我正在为斯坦福兔子做项目的OBB。我已经计算了协变矩阵并找到了它的特征向量。特征向量矩阵的列是我的旋转矩阵的分量,例如,第一个特征向量列是我的旋转矩阵的第一列。
为了找到转换点数以将OBB移回中心的数量,我将包含我的中心点(xc,yc,zc,1)的向量乘以旋转矩阵(我认为它会给我新的中心点值)。然后我将这些值的负数添加为我的转换矩阵的转换元素。
然后我使用相对于x,y,z轴的最大/最小点来渲染边界框。然后我进行逆变换。结果不是我的预期。正如你所看到的那样,盒子与新轴对齐,但不是以正确的方式对齐,并且它适合于螺丝刀。
我的理论有问题吗?或者矩阵没有正确倍增..如果我不使用任何翻译,它似乎离中心很远,但AOBB计算得很完美..我很困惑。
答案 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