快速区分清楚图形渲染中的AABB,KD树和BVH这些概念
主要想形象去区分好这些术语,目的是扫盲,先开好坑,内容持续填充。
0.先摆出这些词的全称
- AABB: 原名:axis aligned bounding box;中文直译名:轴对齐包围盒。一般常见也会叫它aabb盒。
- KD Tree: 原名:K-dimension tree, dimension是维度的意思。中文直译:KD树。
- BVH: 原名Bounding Volume Hierarchies,Hierarchies是层次、结构的意思;中文直译名:层次包围盒。常见也会叫它BVH树(搞得人家对BVH是树还是盒傻傻分不清)
强烈建议无视中文直译名,因为无法帮助理解还看得人糊里糊涂,想记住理解这几个名词,最好以图为准,脑海中知道它们长什么样的(正如你对链表、二叉树这个数据结构的印象一样去理解)。
1.AABB(axis aligned bounding box)
AABB长的是白色线框这样,包围住兔子,兔子完全在AABB内:
你的一个三维模型,读入三维场景中,便坐落在了世界坐标系上(图中红绿蓝轴线分布对应xyz轴线),你的模型实际上是网格模型,许多个三维顶点组成模型的表面,那每个三维顶点都可以被xyz表示。
那么最简单最快速地去评估这个模型在场景中占了多少空间,就是去看模型分布在X、Y和Z轴的最小值和最大值是多少,只需要遍历每个顶点坐标,找出X、Y和Z的最小值和最大值。一