视椎体平面方程

ref
Fast Extraction of Viewing Frustum Planes from the World View-Projection Matrix

视椎体平面方程

V = ( x , y , z , w = 1 ) V = (x,y,z,w=1) V=(x,y,z,w=1)

matrix M,
M = [ m 11 m 21 m 31 m 41 m 12 m 22 m 32 m 42 m 13 m 23 m 33 m 43 m 14 m 24 m 34 m 44 ] M = \left[ \begin{matrix} m_{11} & m_{21} & m_{31} & m_{41} \\ m_{12} & m_{22} & m_{32} & m_{42} \\ m_{13} & m_{23} & m_{33} & m_{43} \\ m_{14} & m_{24} & m_{34} & m_{44} \\ \end{matrix} \right] M=m11m12m13m14m21m22m23m24m31m32m33m34m41m42m43m44

M ∗ V = [ m 11 m 21 m 31 m 41 m 12 m 22 m 32 m 42 m 13 m 23 m 33 m 43 m 14 m 24 m 34 m 44 ] ∗ [ x y z w ] \begin{aligned} M * V &= \left[ \begin{matrix} m_{11} & m_{21} & m_{31} & m_{41} \\ m_{12} & m_{22} & m_{32} & m_{42} \\ m_{13} & m_{23} & m_{33} & m_{43} \\ m_{14} & m_{24} & m_{34} & m_{44} \\ \end{matrix} \right] * \left[ \begin{matrix} x \\ y \\ z \\ w \\ \end{matrix} \right] \\ \end{aligned} MV=m11m12m13m14m21m22m23m24m31m32m33m34m41m42m43m44xyzw

M ∗ V = [ m 11 x m 21 y m 31 z m 41 w m 12 x m 22 y m 32 z m 42 w m 13 x m 23 y m 33 z m 43 w m 14 x m 24 y m 34 z m 44 w ] M*V = \left[ \begin{matrix} m_{11}x & m_{21}y & m_{31}z & m_{41}w \\ m_{12}x & m_{22}y & m_{32}z & m_{42}w \\ m_{13}x & m_{23}y & m_{33}z & m_{43}w \\ m_{14}x & m_{24}y & m_{34}z & m_{44}w \\ \end{matrix} \right] MV=m11xm12xm13xm14xm21ym22ym23ym24ym31zm32zm33zm34zm41wm42wm43wm44w

M ∗ V = [ V r o w 1 V r o w 2 V r o w 3 V r o w 4 ] = [ x ′ y ′ z ′ w ′ ] M*V = \left[ \begin{matrix} V row_1 \\ V row_2 \\ V row_3 \\ V row_4 \\ \end{matrix} \right] = \left[ \begin{matrix} x' \\ y' \\ z' \\ w' \\ \end{matrix} \right] MV=Vrow1Vrow2Vrow3Vrow4=xyzw

满足这个关系,则说明转换后的顶点位于视椎体内:
− w ′ < x ′ < w ′ − w ′ < y ′ < w ′ − w ′ < z ′ < w ′ -w' < x' < w' \\ -w' < y' < w' \\ -w' < z' < w' \\ w<x<ww<y<ww<z<w

如果顶点位于剪裁空间的左侧:
− w ′ < x ′ -w' < x' w<x

那么:
− V r o w 4 < V r o w 1 -V row_4 < V row_1 Vrow4<Vrow1

等价于:
V r o w 1 + V r o w 4 > 0 V ( r o w 1 + r o w 4 ) > 0 V row_1 + V row_4 > 0 \\ V (row_1 + row_4) > 0 Vrow1+Vrow4>0V(row1+row4)>0

因此该平面方程:
x ( m 11 + m 14 ) + y ( m 21 + m 24 ) + z ( m 31 + m 34 ) + w ( m 41 + m 44 ) = 0 x(m_{11}+m_{14}) + y(m_{21}+m_{24}) + z(m_{31}+m_{34}) + w(m_{41}+m_{44}) = 0 x(m11+m14)+y(m21+m24)+z(m31+m34)+w(m41+m44)=0

其他方法

https://www.zhihu.com/question/46377273

视锥的6个平面在world space里的表达?那其实就是project space里的(-1, 0, 0, 1), (+1, 0, 0, 1), (0, -1, 0, 1), (0, +1, 0, 1), (0, 0, -1, 1), (0, 0, +1, 1)这六个平面,乘上(view * project)的逆矩阵(下面简称inv(vp)),就得到了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值