openGL 透视校正插值
来源:互联网 发布:杀破狼 js原版 编辑:程序博客网 时间:2024/05/14 04:59
http://www.cnblogs.com/mikewolf2002/archive/2012/11/25/2787480.html
透视校正插值
在3D渲染中,输入数据是一些primitive信息,包括顶点位置、颜色、纹理坐标等等。在光栅化阶段,primitive(一般为三角形)被转化成一系列的fragment(或者称为像素),这些fragment接下来要做ps操作,此时每个fragment都有位置、颜色、纹理坐标这些属性信息,这些属性信息通过顶点属性用插值方法得到的。比如下面的primtive,输入数据中只有a,b,c三个顶点的信息,则三角形内部经过扫描转化得到的像素f的颜色则是通过插值得到,d是a、b的差值,e是a、c的差值,然后f又是d、e的插值。
下图是clip裁剪锥体的xz平面,从图中可以看出,在投影平面的均匀插值(一系列蓝色的标记),它们实际位置距离并不是均匀的,距离投影平面越远,实际位置距离越长,所以这是我们采用线性插值的话,可能最终的结果并不是我们所想要的。
那么如何得到均匀的顶点属性插值呢?稍等一下,我们先看看深度插值:
点O是视点位置,从视点观察物体的投射线和投影平面相交的点即为物体在投影平面上的投射点,比如(x1,z1)在投影平面上的投射点为(p1,-e),投射线的方程为ax+bz =c , 其中c不能等于0,假设点(x,z)和O在投影平面的交点为(p,-e)(注意z坐标总是-e),则有
解出x,并把它带入到ax+bz=c中,得到转化为
已知线段<x1,z1>-<x2,z2>的投影坐标线段为<p1,-e>-<p2,-e>,假定p3=(1-t)p1+tp2 (0<=t<=1),则p3是点<p1,-e>和<p2,-e>在投影平面上的线性差值点的x分量,则有下面的推导公式:
可见,z的倒数是线性插值,所以我们可以用顶点的z值来插值求得primitive内部fragment的属性值,比如颜色等等。
假定<x1,z1>的颜色为b1, <x2,z2>的颜色为把b2,则<x,z>的颜色为b3为:
根据
可解得
可见用深度倒数来插值顶点属性是合适的。
- openGL 透视校正插值
- 透视校正插值
- 透视校正插值
- 透视校正插值
- 透视校正
- 关于透视矫正插值
- OpenCVForUnity 透视校正,透视变换
- 图像校正-透视变换
- openGL 顶点属性插值
- 透视纹理校正公式推导
- 图像校正—透视变换
- 透视矫正插值公式的几何证明
- opengl 教程(9) 顶点属性插值
- OpenGL 实现Interpolation插值算法
- 两点插值---【计算机图形学OpenGL版】
- OpenGL教程翻译 第九课 插值
- 【一步步学OpenGL 9】 -《插值》
- d3d/opengl光栅化解 插值
- POJ
- 如何配置reportNG
- 8种药水有且仅有一种有毒,药水1小时见效,现在要求在1小时内找出有毒药水,至少需要几只小白鼠?
- 多版本(>30)并行控制的解决方案
- Perplexity(困惑度)
- openGL 透视校正插值
- AppScale3.01
- jQuery——eq()选择器
- pyton 爬虫-图片
- 欢迎使用CSDN-markdown编辑器
- Vue.js2.0 入门实例(三)(数据对接)
- rhcs+gfs2+corosync + pacemaker +postgres_streaming_replication
- /proc/meminfo分析(一)
- JAVA反射机制示例,读取excel数据映射到JAVA对象中