视椎体提取

参考:fast extraction viewing frustum planes from world view projection matrix

本文主要是记录下视椎体提取的主要方法

首先假设我们有一个顶点 v=(x,y,z,w=1) 和4x4矩阵 M=(mij) , M 是视图投影矩阵,则
变换后的顶点
v =(x ,y ,z ,w )=vM=xm11+ym21+zm31+wm41xm12+ym22+zm32+wm42xm13+ym23+zm33+wm43xm14+ym24+zm34+wm44T=vcol1vcol2vcol3vcol4T

变换后的顶点 v  是位于齐次坐标系中,在齐次坐标系中视椎体为一个正交盒子,若点 v  是位于视椎体内,则未变换前的顶点 v 也是位于视椎体内,则当以下不等式成立时,说明点位于视椎体内:
w <x <w 
w <y <w 
0<z <w 

ViewProject矩阵会将视椎体变换为一个正交盒,上面的不等式描述的就是这个正交盒,盒子的左边的面是由视椎体的左平面变换而来,上平面是由视椎体的上平面变换而来

盒子的各个平面将空间分为两个部分,一个是盒子内部空间(盒子所在的半空间),一个是盒子外部空间。正如前面说的,若点在盒子内,则变换前的点位于视椎体内,则看下面的不等式
w <x 
该不等式说明该点位于左平面分割出的内空间,则
vcol4<vcol1
0<vcol4+vcol1
0<x(m14+m11)+y(m24+m21)+z(m34+m31)+w(m44+m41)
由于 w=1 ,则:
0<x(m14+m11)+y(m24+m21)+z(m34+m31)+m44+m41

平面的标准形式为: ax+by+cz+d=0
a=m14+m11
b=m24+m21
c=m34+m31
d=m44+m41

意味着 0<ax+by+cz+d 时,点位于左剪裁面的内空间
所以左剪裁面就是该平面

其它剪裁平面推导类似

剪裁平面推导过程平面参数
left w <x 
0<vcol4+vcol1
0<v(col4+col1)
a=m14+m11
b=m24+m21
c=m34+m31
d=m44+m41
right x <w 
0<vcol4vcol1
0<v(col4col1)
a=m14m11
b=m24m21
c=m34m31
d=m44m41
bottom w <y 
0<vcol4+vcol2
0<v(col4+col2)
a=m14+m12
b=m24+m22
c=m34+m32
d=m44+m42
top y <w 
0<vcol4vcol2
0<v(col4col2)
a=m14m12
b=m24m22
c=m34m32
d=m44m42
near 0<z 
0<vcol3
a=m13
b=m23
c=m33
d=m43
far z <w 
vcol3<vcol4
0<v(col4col3)
a=m14m13
b=m24m23
c=m34m33
d=m44m43
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值