AABB 包围盒可视化工具

轴对齐包围盒(AABB)构建与碰撞检测的交互式 3D 可视化教学工具

Loading 3D Visualizer...

几何体

变换

位置

0.00
0.00
0.00

旋转

0.00
0.00
0.00

缩放

1.00
1.00
1.00

显示选项

碰撞测试区域

位置

2.00
0.00
0.00

大小

1.00
1.00
1.00

碰撞状态

未碰撞

代码生成器

// AABB 计算
function computeAABB(vertices, transform) {
  const min = { x: Infinity, y: Infinity, z: Infinity };
  const max = { x: -Infinity, y: -Infinity, z: -Infinity };

  for (const vertex of vertices) {
    const transformed = applyTransform(vertex, transform);
    min.x = Math.min(min.x, transformed.x);
    min.y = Math.min(min.y, transformed.y);
    min.z = Math.min(min.z, transformed.z);
    max.x = Math.max(max.x, transformed.x);
    max.y = Math.max(max.y, transformed.y);
    max.z = Math.max(max.z, transformed.z);
  }

  return { min, max };
}

// AABB 碰撞检测
function testAABBCollision(aabb1, aabb2) {
  return (
    aabb1.min.x <= aabb2.max.x && aabb1.max.x >= aabb2.min.x &&
    aabb1.min.y <= aabb2.max.y && aabb1.max.y >= aabb2.min.y &&
    aabb1.min.z <= aabb2.max.z && aabb1.max.z >= aabb2.min.z
  );
}

功能特性

实时 AABB 计算
交互式碰撞检测
6 种不同几何体
代码生成(JS/TS/GLSL/C++)
可调节变换参数
动画系统

关于 AABB 可视化工具

轴对齐包围盒(AABB)是 3D 图形学和游戏开发中的基础概念。它是最简单的包围体形式,由沿每个轴的最小点和最大点定义,使得碰撞检测极其快速。

这个交互式工具帮助你理解 AABB 如何从 3D 几何体构建,以及它们如何响应变换。你可以尝试不同的形状,调整它们的位置/旋转/缩放,并实时观察 AABB 的更新。

碰撞测试区域演示了 AABB-AABB 相交测试,这是游戏引擎中用于宽相位碰撞检测、空间分割(八叉树)和视锥体剔除的核心技术。

使用场景

1

游戏开发

使用 AABB 作为第一阶段宽相位测试,实现高效的碰撞检测系统

2

物理引擎

使用 AABB 树进行空间分割和动态物体管理

3

视锥体剔除

通过测试物体 AABB 是否在相机视锥体内来优化渲染

4

光线投射

使用 AABB 作为初步检查,加速射线与物体的相交测试

算法解释

AABB 构建

要构建 AABB,遍历几何体的所有顶点,应用变换矩阵(位置、旋转、缩放),然后计算沿每个轴的最小点和最大点。

碰撞检测

如果两个 AABB 在所有三个轴上都有重叠,则它们发生碰撞。对于每个轴,检查是否满足 AABB1.min <= AABB2.max 且 AABB1.max >= AABB2.min。

时间复杂度

构建:O(n),其中 n 是顶点数量。碰撞测试:O(1) 常数时间。

AABB 包围盒可视化工具 - 3D 碰撞检测教学演示 | BeSmile | BetterTools