教育局网站群建设方案,云服务器可以用来做网站么,网站前期准备工作,网站源模板文章目录 前言一、简单看一下 观察空间—裁剪空间—屏幕空间 的转化1、观察空间#xff08;右手坐标系、透视相机#xff09;2、裁剪空间#xff08;左手坐标系、且转化为了齐次坐标#xff09;3、屏幕空间#xff08;把裁剪坐标归一化设置#xff09;4、从观察空… 文章目录 前言一、简单看一下 观察空间—裁剪空间—屏幕空间 的转化1、观察空间右手坐标系、透视相机2、裁剪空间左手坐标系、且转化为了齐次坐标3、屏幕空间把裁剪坐标归一化设置4、从观察空间到裁剪空间5、从裁剪空间到屏幕空间后 二、透视相机的参数推导1、从XoY平面求出X~v~从观察空间到裁剪空间的坐标投影 X~p~2、从YoZ平面求出Y~v~从观察空间到裁剪空间的坐标投影 Y~p~ 三、把投影到近裁剪面的坐标 归一化设置1、求归一化设置后的 x~n~2、求归一化设置后的 y~n~3、得到最后化简的公式 四、构建转化矩阵1、在OpenGL[-1,1]下2、在DirectX[1,0]下3、把A、B代入矩阵得 前言
我们把顶点坐标信息转化为裁剪空间。有可能使用到正交相机信息 或 透视相机。我们在这篇文章中推导一下透视相机视图空间下的坐标转化到裁剪空间的矩阵。 一、简单看一下 观察空间—裁剪空间—屏幕空间 的转化 1、观察空间右手坐标系、透视相机 2、裁剪空间左手坐标系、且转化为了齐次坐标 3、屏幕空间把裁剪坐标归一化设置 4、从观察空间到裁剪空间
用透视投影矩阵先转化到裁剪空间 然后在转化为齐次坐标
5、从裁剪空间到屏幕空间后 − 1 ≤ x c w ≤ 1 -1 \leq \frac{x_c}{w}\leq1 −1≤wxc≤1 − w ≤ x c ≤ w -w \leq x_c\leq w −w≤xc≤w 二、透视相机的参数推导 我们对于远裁剪面只是已知 f其他参数都是未知
1、从XoY平面求出Xv从观察空间到裁剪空间的坐标投影 Xp 点 V 是观察空间下的模型顶点xyz是已知的 已知 ( x v , y v , z v ) 、 − n (x_v,y_v,z_v) 、 -n (xv,yv,zv)、−n点P是该点在近裁剪面上的投影点xyz是未知的 未知 ( x p , y p , z p ) (x_p,y_p,z_p) (xp,yp,zp)我们在 XoZ平面上能求的就是 xp 求: x p x_p xp z p − n z_p -n zp−n y p 在 X o Z 平面下无法计算 y_p 在XoZ平面下无法计算 yp在XoZ平面下无法计算
v点向Z轴做垂线原点连接v点围成的两个三角形相似可得 x p x v − n z v \frac{x_p}{x_v} \frac{-n}{z_v} xvxpzv−n x p − n z v x v x_p \frac{-n}{z_v} x_v xpzv−nxv P ( − n z v x v , 未知 , − n ) P (\frac{-n}{z_v}x_v,未知,-n) P(zv−nxv,未知,−n)
2、从YoZ平面求出Yv从观察空间到裁剪空间的坐标投影 Yp 点 V 是观察空间下的模型顶点xyz是已知的 已知 ( x v , y v , z v ) 、 − n (x_v,y_v,z_v) 、 -n (xv,yv,zv)、−n点P是该点在近裁剪面上的投影点xyz是未知的 未知 ( x p , y p , z p ) (x_p,y_p,z_p) (xp,yp,zp)我们在 YoZ平面上能求的就是 yp 求: y p y_p yp z p − n z_p -n zp−n x p 在 X o Z 平面下无法计算 x_p 在XoZ平面下无法计算 xp在XoZ平面下无法计算
v点向Z轴做垂线原点连接v点围成的两个三角形相似可得 y p y v − n z v \frac{y_p}{y_v} \frac{-n}{z_v} yvypzv−n y p − n z v y v y_p \frac{-n}{z_v} y_v ypzv−nyv P ( − n z v x v , − n z v y v , − n ) P (\frac{-n}{z_v}x_v,\frac{-n}{z_v} y_v,-n) P(zv−nxv,zv−nyv,−n) 三、把投影到近裁剪面的坐标 归一化设置 P ( − n z v x v , − n z v y v , − n ) P (\frac{-n}{z_v}x_v,\frac{-n}{z_v} y_v,-n) P(zv−nxv,zv−nyv,−n)
化到[-1,1]之间 具体参考Unity中Shader裁剪空间推导正交相机到裁剪空间的转化矩阵
1、求归一化设置后的 xn l ≤ x ≤ r l \leq x \leq r l≤x≤r 化为 − 1 ≤ 2 x w ≤ 1 -1 \leq \frac{2x}{w} \leq 1 −1≤w2x≤1 − 1 ≤ − 2 n x v z v w ≤ 1 -1\leq \frac{-2nx_v}{z_vw}\leq 1 −1≤zvw−2nxv≤1 − 1 ≤ − 2 n w ⋅ x v z v ≤ 1 -1\leq \frac{-2n}{w}·\frac{x_v}{z_v}\leq 1 −1≤w−2n⋅zvxv≤1
2、求归一化设置后的 yn l ≤ y ≤ r l \leq y \leq r l≤y≤r 化为 − 1 ≤ 2 y h ≤ 1 -1 \leq \frac{2y}{h} \leq 1 −1≤h2y≤1 − 1 ≤ − 2 n y v z v h ≤ 1 -1\leq\frac{-2ny_v}{z_vh}\leq1 −1≤zvh−2nyv≤1 − 1 ≤ − 2 n h ⋅ y v z v ≤ 1 -1\leq\frac{-2n}{h}·\frac{y_v}{z_v}\leq1 −1≤h−2n⋅zvyv≤1
3、得到最后化简的公式
由于NDC下的坐标由透视除法而得 我们假设透视除法中的 w 为 -zv 还原到裁剪空间还需要乘以 -zv
X: − 1 ≤ − 2 n w ⋅ x v z v ≤ 1 -1\leq \frac{-2n}{w}·\frac{x_v}{z_v}\leq 1 −1≤w−2n⋅zvxv≤1 x n − 2 n w x v z v x_n \frac{-2n}{w}\frac{x_v}{z_v} xnw−2nzvxv − x n z v 2 n w x v -x_nz_v \frac{2n}{w}x_v −xnzvw2nxv
Y: − 1 ≤ − 2 n h ⋅ y v z v ≤ 1 -1\leq\frac{-2n}{h}·\frac{y_v}{z_v}\leq1 −1≤h−2n⋅zvyv≤1 y n − 2 n h y v z v y_n \frac{-2n}{h}\frac{y_v}{z_v} ynh−2nzvyv − y n z v 2 n h y v -y_n z_v \frac{2n}{h}y_v −ynzvh2nyv
Z: z n ? z_n ? zn? − z n z v − z v ? -z_nz_v -z_v? −znzv−zv?
W: w 1 w 1 w1 − w n z v − z v -w_nz_v -z_v −wnzv−zv 四、构建转化矩阵
裁剪空间下的点 观察空间下的基向量 在 裁剪空间下的矩阵 * 点在观察空间下的坐标 P c [ V c ] ⋅ P v P_c [V_c]·P_v Pc[Vc]⋅Pv P c [ C v ] − 1 ⋅ P v P_c [C_v]^{-1}·P_v Pc[Cv]−1⋅Pv P c [ C v ] T ⋅ P v P_c [C_v]^{T}·P_v Pc[Cv]T⋅Pv − x n z v 2 n w x v -x_nz_v \frac{2n}{w}x_v −xnzvw2nxv − y n z v 2 n h y v -y_n z_v \frac{2n}{h}y_v −ynzvh2nyv − z n z v − z v ? -z_nz_v -z_v? −znzv−zv? − w n z v − z v -w_nz_v -z_v −wnzv−zv [ 2 v w 0 ? ? 0 2 n h ? ? 0 0 ? ? 0 0 ? ? ] T [ 2 v w 0 0 0 0 2 n h 0 0 ? ? ? ? ? ? ? ? ] \begin{bmatrix} \frac{2v}{w} 0 ? ?\\ 0 \frac{2n}{h} ? ?\\ 0 0 ? ?\\ 0 0 ? ?\\ \end{bmatrix}^T \begin{bmatrix} \frac{2v}{w} 0 0 0 \\ 0 \frac{2n}{h} 0 0\\ ? ? ? ?\\ ? ? ? ?\\ \end{bmatrix} w2v0000h2n00???????? T w2v0??0h2n??00??00?? [ 2 v w 0 0 0 0 2 n h 0 0 ? ? ? ? ? ? ? ? ] ⋅ [ x v y v z v 1 ] ( − x n z v , − y n z v , − z n z v , − w n z v ) \begin{bmatrix} \frac{2v}{w} 0 0 0 \\ 0 \frac{2n}{h} 0 0\\ ? ? ? ?\\ ? ? ? ?\\ \end{bmatrix} · \begin{bmatrix} x_v\\ y_v\\ z_v\\ 1\\ \end{bmatrix} (-x_nz_v,-y_nz_v,-z_nz_v,-w_nz_v) w2v0??0h2n??00??00?? ⋅ xvyvzv1 (−xnzv,−ynzv,−znzv,−wnzv)
最后一行由于相乘结果为1可以得出把最后未知部分设为AB [ 2 v w 0 0 0 0 2 n h 0 0 0 0 A B 0 0 − 1 0 ] ⋅ [ x v y v z v 1 ] \begin{bmatrix} \frac{2v}{w} 0 0 0 \\ 0 \frac{2n}{h} 0 0\\ 0 0 A B\\ 0 0 -1 0\\ \end{bmatrix} · \begin{bmatrix} x_v\\ y_v\\ z_v\\ 1\\ \end{bmatrix} w2v0000h2n0000A−100B0 ⋅ xvyvzv1 z c A z v B z_c Az_vB zcAzvB − z n z v − z v -z_nz_v -z_v −znzv−zv z c − z v A z v B − z v \frac{z_c}{-z_v} \frac{Az_vB}{-z_v} −zvzc−zvAzvB z n A z v B − z v z_n \frac{Az_vB}{-z_v} zn−zvAzvB
1、在OpenGL[-1,1]下 z n A z v B − z v z_n \frac{Az_vB}{-z_v} zn−zvAzvB { z v − n , z n − 1 z v − f , z n 1 \begin{cases} z_v -n,z_n-1 \\ z_v -f,z_n 1 \end{cases} {zv−n,zn−1zv−f,zn1 { − 1 − A n B n 1 − A f B f \begin{cases} -1 \frac{-AnB}{n}\\ 1 \frac{-Af B}{f} \end{cases} {−1n−AnB1f−AfB { − n − A n B f − A f B \begin{cases} -n -AnB\\ f -Af B \end{cases} {−n−AnBf−AfB B A n − n B An - n BAn−n f − A f A n − n f -Af An-n f−AfAn−n f n A ( n − f ) f n A(n-f) fnA(n−f) A n f n − f A \frac{nf}{n-f} An−fnf B n f n − f n − n B \frac{nf}{n-f}n-n Bn−fnfn−n B n 2 f n n − f n 2 − n f n − f B \frac{n^2 fn}{n-f}\frac{n^2-nf}{n-f} Bn−fn2fnn−fn2−nf B 2 n f n − f B \frac{2nf}{n-f} Bn−f2nf
2、在DirectX[1,0]下 z n A z v B − z v z_n \frac{Az_vB}{-z_v} zn−zvAzvB { z v − n , z n 1 z v − f , z n 0 \begin{cases} z_v -n,z_n1 \\ z_v -f,z_n 0 \end{cases} {zv−n,zn1zv−f,zn0 { 1 − A n B n 0 − A f B f \begin{cases} 1 \frac{-AnB}{n}\\ 0 \frac{-AfB}{f} \end{cases} {1n−AnB0f−AfB { n − A n B 0 − A f B \begin{cases} n -AnB\\ 0 -AfB \end{cases} {n−AnB0−AfB B A f B Af BAf n − A n A f n -AnAf n−AnAf n A ( f − n ) n A(f-n) nA(f−n) A n f − n A \frac{n}{f-n} Af−nn B n f f − n B \frac{nf}{f-n} Bf−nnf
3、把A、B代入矩阵得
OpenGL [ 2 n w 0 0 0 0 2 n h 0 0 0 0 n f n − f 2 n f n − f 0 0 − 1 0 ] \begin{bmatrix} \frac{2n}{w} 0 0 0 \\ 0 \frac{2n}{h} 0 0\\ 0 0 \frac{nf}{n-f} \frac{2nf}{n-f}\\ 0 0 -1 0\\ \end{bmatrix} w2n0000h2n0000n−fnf−100n−f2nf0 DirectX [ 2 n w 0 0 0 0 2 n h 0 0 0 0 n f − n n f f − n 0 0 − 1 0 ] \begin{bmatrix} \frac{2n}{w} 0 0 0 \\ 0 \frac{2n}{h} 0 0\\ 0 0 \frac{n}{f-n} \frac{nf}{f-n}\\ 0 0 -1 0\\ \end{bmatrix} w2n0000h2n0000f−nn−100f−nnf0 文章转载自: http://www.morning.rmxwm.cn.gov.cn.rmxwm.cn http://www.morning.jqsyp.cn.gov.cn.jqsyp.cn http://www.morning.gcqkb.cn.gov.cn.gcqkb.cn http://www.morning.nstml.cn.gov.cn.nstml.cn http://www.morning.nkjxn.cn.gov.cn.nkjxn.cn http://www.morning.iterlog.com.gov.cn.iterlog.com http://www.morning.rmtmk.cn.gov.cn.rmtmk.cn http://www.morning.qyfqx.cn.gov.cn.qyfqx.cn http://www.morning.qwhbk.cn.gov.cn.qwhbk.cn http://www.morning.dpwcl.cn.gov.cn.dpwcl.cn http://www.morning.yrxcn.cn.gov.cn.yrxcn.cn http://www.morning.ymjrg.cn.gov.cn.ymjrg.cn http://www.morning.rbnnq.cn.gov.cn.rbnnq.cn http://www.morning.xrmwc.cn.gov.cn.xrmwc.cn http://www.morning.bsgfl.cn.gov.cn.bsgfl.cn http://www.morning.yyzgl.cn.gov.cn.yyzgl.cn http://www.morning.cpqwb.cn.gov.cn.cpqwb.cn http://www.morning.zdzgf.cn.gov.cn.zdzgf.cn http://www.morning.thbqp.cn.gov.cn.thbqp.cn http://www.morning.tqjwx.cn.gov.cn.tqjwx.cn http://www.morning.gpsr.cn.gov.cn.gpsr.cn http://www.morning.lfbzg.cn.gov.cn.lfbzg.cn http://www.morning.hhpkb.cn.gov.cn.hhpkb.cn http://www.morning.hxcrd.cn.gov.cn.hxcrd.cn http://www.morning.hxrg.cn.gov.cn.hxrg.cn http://www.morning.lxhny.cn.gov.cn.lxhny.cn http://www.morning.skwwj.cn.gov.cn.skwwj.cn http://www.morning.fpczq.cn.gov.cn.fpczq.cn http://www.morning.ztcwp.cn.gov.cn.ztcwp.cn http://www.morning.mnsmb.cn.gov.cn.mnsmb.cn http://www.morning.xqkcs.cn.gov.cn.xqkcs.cn http://www.morning.tzjqm.cn.gov.cn.tzjqm.cn http://www.morning.jtqxs.cn.gov.cn.jtqxs.cn http://www.morning.cnkrd.cn.gov.cn.cnkrd.cn http://www.morning.rfgc.cn.gov.cn.rfgc.cn http://www.morning.rmqlf.cn.gov.cn.rmqlf.cn http://www.morning.gqjqf.cn.gov.cn.gqjqf.cn http://www.morning.bnbzd.cn.gov.cn.bnbzd.cn http://www.morning.rrms.cn.gov.cn.rrms.cn http://www.morning.wkhfg.cn.gov.cn.wkhfg.cn http://www.morning.jqsyp.cn.gov.cn.jqsyp.cn http://www.morning.qnhcx.cn.gov.cn.qnhcx.cn http://www.morning.wfspn.cn.gov.cn.wfspn.cn http://www.morning.fqtdz.cn.gov.cn.fqtdz.cn http://www.morning.gwmny.cn.gov.cn.gwmny.cn http://www.morning.hqgxz.cn.gov.cn.hqgxz.cn http://www.morning.mnsts.cn.gov.cn.mnsts.cn http://www.morning.qnbgh.cn.gov.cn.qnbgh.cn http://www.morning.fthcn.cn.gov.cn.fthcn.cn http://www.morning.ghcfx.cn.gov.cn.ghcfx.cn http://www.morning.zzgkk.cn.gov.cn.zzgkk.cn http://www.morning.pkwwq.cn.gov.cn.pkwwq.cn http://www.morning.bpmdg.cn.gov.cn.bpmdg.cn http://www.morning.tnmmp.cn.gov.cn.tnmmp.cn http://www.morning.wpxfk.cn.gov.cn.wpxfk.cn http://www.morning.nchlk.cn.gov.cn.nchlk.cn http://www.morning.zqbrw.cn.gov.cn.zqbrw.cn http://www.morning.lbhck.cn.gov.cn.lbhck.cn http://www.morning.jtdrz.cn.gov.cn.jtdrz.cn http://www.morning.ltywr.cn.gov.cn.ltywr.cn http://www.morning.pwdgy.cn.gov.cn.pwdgy.cn http://www.morning.qytyt.cn.gov.cn.qytyt.cn http://www.morning.npmcf.cn.gov.cn.npmcf.cn http://www.morning.lwrks.cn.gov.cn.lwrks.cn http://www.morning.tsflw.cn.gov.cn.tsflw.cn http://www.morning.rbcw.cn.gov.cn.rbcw.cn http://www.morning.tgdys.cn.gov.cn.tgdys.cn http://www.morning.mftzm.cn.gov.cn.mftzm.cn http://www.morning.mxxsq.cn.gov.cn.mxxsq.cn http://www.morning.sxygc.cn.gov.cn.sxygc.cn http://www.morning.ysbrz.cn.gov.cn.ysbrz.cn http://www.morning.dshkp.cn.gov.cn.dshkp.cn http://www.morning.wbrf.cn.gov.cn.wbrf.cn http://www.morning.dmchips.com.gov.cn.dmchips.com http://www.morning.gywfp.cn.gov.cn.gywfp.cn http://www.morning.rtsx.cn.gov.cn.rtsx.cn http://www.morning.kcrw.cn.gov.cn.kcrw.cn http://www.morning.mnwmj.cn.gov.cn.mnwmj.cn http://www.morning.zyslyq.cn.gov.cn.zyslyq.cn http://www.morning.tbzcl.cn.gov.cn.tbzcl.cn