2013-05-30 95 views
0

我正在开发一个OpenGL 2.0项目。我从文件加载对象,该文件包含有关对象名称,位置,缩放和旋转的信息。边界检测

我在代码中得到了所有这些信息,现在我想计算所有加载对象的边界,以便我可以开始处理碰撞。

项目的比例值就是0.1,即它乘以一个维度向量以获得实际的边界维度。

例如对象1:缩放X:-0.1,Y:0.05,Z:0.1 对象2:缩放X:0.1,Y:0.1,Z:0.1

对象1:位置X:5,Y :21.7269,Z:0 对象2:位置X -58.0646 Y:-6.68359,Z:0

对象1:腐X:0,Y:0,Z:0 对象2:腐X:0, y:90,z:0

我的问题是,我想计算每个对象的尺寸即边界,怎样才能实现这个目标?

+0

什么是对象本身?如果您不知道对象的大小,则缩放无意义。另外,旋转在哪里? – riv

+0

我在我的问题中添加了旋转,对象大小是我不知道的,因为一旦从文件中读取对象名称,该对象从另一个目录中加载,对象大小就会加载 –

+0

那么,边界框显然取决于形状的对象,所以你需要首先找到它。 – riv

回答

1

取决于“边界”的含义。如果你的意思是一个AABB(轴对齐包围盒),对每个单独的对象,它只是的

  1. 找到你所有的顶点
  2. 由规模
  3. 使用旋转变换分量乘以(或事用旋转矩阵或通过标准三角)
  4. 由位置找到极端上的轴
  5. 翻译矢量

其中许多可以按不同的顺序完成。

你可能最好从一些好的理论开始。 Real Time Collision Detection非常自我解释,并一直是我最喜欢的主题之一,并为任何有兴趣的人开始一个美好的地方。

从低维物理开始,直到概念更牢固扎根(也就是不使用z维度)才是一个好主意。

+0

感谢分享信息,但我想获得边界,即顶点,但因为我需要形状大小为riv指出,我正在调查它,谢谢再次帮助 –