从OpenGL 矩阵中提取裁剪平面

来自 flyfish|已发表 2020-09-29

我们假设 顶点 列向量 v =(x y z w=1) 和 M 是 4X4 的是变换到裁剪空间的矩阵矩阵(column major projection matrix), 将v 变换到 clip space v’ = Mv , 如下

OpenGL 在测试顶点可见性时,是根据:

一般视锥体分别由 左、右、底、顶、远、近、六个裁剪平面包围而成:

-w’ < x’x’在左裁剪平面正半空间内
x’ < w’x’在右裁剪平面正半空间内
-w’ < y’y’在底裁剪平面正半空间内
y’ < -w’y’在定裁剪平面正半空间内
-w’ < z’z’在近裁剪平面正半空间内
z’ < w’z’在远裁剪平面正半空间内

注意: OpenGL 裁剪空间 的手向性(左手系)

我们以左裁剪平面为例,将变换后的v’ 的 x’ 部分代入到 测试公式中:

(1) -w’ < x’

(2)-v*row4 < v* row1

(3) 0< v*row4 + v* row1

(4) 0 < v*(row4 + row1)

(5) 平面方程 : x(m41 + m11) + y(m42+ m12) + z(m43 + m13) + w(m44 + m14) =0 , 因为 w =1 , 可以简化为:

(6) x(m41 + m11) + y(m42+ m12) + z(m43 + m13) + m44 + m14 = 0 , 平面方程的系数:

a= m41 + m11 , b= m42 + m12, c = m43 + m13, d = m44 + m14

同理可推导出其它平面方程, 用列表列出:

当 M 是 透视矩阵 P 时, 裁剪平面定义在观察坐标系空间;

当M = MVP 时 , 裁剪平面定义在模型坐标系空间;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值