专题:Bounding Volume in Visibility Determination

从今天开始不定时写一些3D专题,主要是关于Scene Management的数学和应用。

Visibilty Determination在一般的引擎都是多个Level进行判断的,最高层一般是BSP或者OC Tree进行空间划分,而在最底层一般都会有Bounding Volume和View Frustum的intersetion的判断。

一般来说,bounding volume分为4种:bounding box, bounding sphere, bounding ellisold 和 bouding cylinder.

Bounding Box又主要分两种:AABB( Axis-aligned Bounding Box)和OBB(Oriented Bounding Box)。AABB的构造很简单,就是遍历物体的所有Vertex找到xyz的Min和Max,以这两点为对顶点作一个长方体即可。

OBB的构造相对复杂:可以利用统计学的方法构造一堆点的Nature Aligned Axises,又叫principal component analysis.
1, 遍历所有点,计算中心点的坐标,记N个点为,P1, P2, ..., PN, 有 m = 1/N (P1 + P2 +... + PN)
2, 按照这个公式,构造 Convariance Matrix。

3, 令C的eignvalue vector满足,det( C -   λI) = 0
4, 求出 三个自然对齐的轴向,R, S, 和T.

MS很复杂,但如果你选择在导出模型的时候一同导出Bounding Box,那一般的建模软件像3Ds Max都会帮你计算好。

至于AABB和OBB的选取,主要由用途决定,如果是用来进行Visibilty Determination,AABB就够了,但如果是Collition Detection就应该选择更准确和灵活的OBB,尽管后者计算稍微麻烦。

转载于:https://www.cnblogs.com/eric720/archive/2007/05/13/743481.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值