2021年12月6日 星期一

Oblique Matrix 推導的疑惑

為什麼Eric先生 (Thank U
要用(sgn(C'.x),sgn(C'.y),1,1)
而不是F * (sgn(C'.x),sgn(C'.y),1,1)呢?

--------------

在projectin space
right平面和top平面會相交在1條線b
在b上的點,只有(F,F,F,F)是4個值相等的
而(F,F,F,F)/w之後
會得到 (1,1,1,1)

--------------

P是projection matrix (OpenGL Right Hand Fov version 
P的逆矩陣是 P^-1
P^-1 (F,F,F,F)=( Ratio F tan(θ), F tan(θ),-F,1 )=QF
P^-1 (1,1,1,1)=( Ratio tan(θ), tan(θ), -1,1/F )=Q

Matrix (Thank U

calculate

在view space , w =1
Q = Q/Q.w =QF
Q和QF其實是同1個點

用Q和QF算出來的 a 也是同1個東西
(因為上下都有1/F,最後就互相消掉了

--------------

3D平面 vs 4D平面
平面在3D的定義是
(X-P)。N=0
X、P、N都是3維的向量
。是內積;P是位在平面上的1點

X。N-P。N=0
X。N+d=0
展開來就是
(x,y,z,1)。(Nx,Ny,Nz,d)=0

Eric文章裡C指的是(Nx,Ny,Nz,d)
把平面當成了1個4D向量
view space C變換到Projection space的結果是C'

fov=2θ(half fov=θ)
Right裁切平面的情況為(以下為右手座標)
C'  = (-1,0,0,1)
C  = (-1/(R*tan(θ)),0,-1,0)

在view space是
(x,y,z,1)。(-1/(R*tan(θ)),0,-1,0) =0
-x/(R*tan(θ))+z=0

在projection space(4D)是
(x',y',z',w)。(-1,0,0,1) =0
-x'+w =0

沒有留言:

張貼留言