游戏引擎中的BoundingBox
一.AABB包围盒
<1.包围盒定义
以长方体盒子形状,长方体顶点为描述的包围盒,在模型,碰撞体创建时同时创建,以实现物理碰撞,特殊shader渲染等常用功能.
center = (min + max) / 2
radius = min到max距离/2
public class AABBBoundingBox { public Vector4 min = Vector4.Zero; public Vector4 max = Vector4.Zero; public Vector4 center = Vector4.Zero; public float radius = 0f; }<2.包围盒相交物理检测
public bool PointInsideBox(Vec3 point, float epsilon) { return point.x + epsilon <= this.max.x && point.x - epsilon >= this.min.x && point.y + epsilon <= this.max.y && point.y - epsilon >= this.min.y && point.z + epsilon <= this.max.z && point.z - epsilon >= this.min.z; }二.OBB包围盒
<1.包围盒定义
以长方体盒子形状,局部坐标系三个坐标轴向量进行描述的包围盒.
public class OBBBoundingBox { public Vector4 s = new Vector4(1f, 0f, 0f, 0f); public Vector4 f = new Vector4(0f, 1f, 0f, 0f); public Vector4 u = new Vector4(0f, 0f, 1f, 0f); }