三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

游戏引擎中的BoundingBox

游戏引擎中的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); }
← 返回列表