1.前言
众所周知,包围盒的种类有很多种,OBB包围盒应该是算是比较复杂的一种,因此最近研究了一下OBB包围盒,这里来做一简单分享记录。
2.示例
以下是一个OBB包围盒示例:
"boundingVolume": {
"box": [
0, 0, 10,
100, 0, 0,
0, 100, 0,
0, 0, 10
]
}
上面的示例可以抽象为:
"boundingVolume": {
"box": [
TranslationX, TranslationY, TranslationZ,
RotationX, RotationY, RotationZ,
ScaleX, ScaleY, ScaleZ,
HalfExtentX, HalfExtentY, HalfExtentZ
]
}
3.解释说明
OBB包围盒通常用一个包含12个元素的数组来表示,这些元素描述了包围盒的位置、尺寸和旋转。这个数组通常按照特定的顺序排列,例如位置(translation)、旋转(rotation),然后尺寸(scale)。这个数组中的12个元素的含义如下:
3.1 中心点
Translation X:包围盒的中心点在X轴上的坐标。
Translation Y:包围盒的中心点在Y轴上的坐标。
Translation Z:包围盒的中心点在Z轴上的坐标。
第一行这三个元素表示包围盒的中心点在3D空间中的位置。
3.2 旋转信息
Rotation X:旋转矩阵的第一行,通常是X轴的旋转分量。
Rotation Y:旋转矩阵的第二行,通常是Y轴的旋转分量。
Rotation Z:旋转矩阵的第三行,通常是Z轴的旋转分量。
第二行这三个元素表示包围盒的旋转信息,通常以旋转矩阵的形式给出。
3.3 缩放信息
Scale X:包围盒的X轴缩放分量。
Scale Y:包围盒的Y轴缩放分量。
Scale Z:包围盒的Z轴缩放分量。
第三行这三个元素表示包围盒的尺寸信息,可以用于缩放包围盒。
3.4 轴长信息
Half Extent X:包围盒在X轴上的半边长。
Half Extent Y:包围盒在Y轴上的半边长。
Half Extent Z:包围盒在Z轴上的半边长。
第四行这三个元素表示包围盒每个轴上的半边长,通常是尺寸的一半。
3.5 归纳
总之,这个包含12个元素的数组描述了OBB包围盒的位置、旋转和尺寸信息。这些元素的值可以用于构建变换矩阵,将包围盒从局部坐标系变换到世界坐标系,并用于碰撞检测、渲染和物体变换等应用中。在具体应用中,这些元素的值会根据需要而变化。
4.总结
本文主要介绍了OBB包围盒的相关信息,根据示例参数对旋转、平移、缩放进行了介绍,由于本人水平有限,不足之处还请读者指正。