GAMES101-现代计算机图形学学习笔记(09)
Shading 3 Texture Mapping cont.
原课程视频链接以及官网
b站视频链接: link.
课程官网链接: link.
着色(shading)
重心坐标
上一篇文章说到纹理映射,实质上纹理映射就是把uv坐标下的纹素映射到图像像素的过程。而我们在画三角形的过程中通常只是定义了三个顶点的属性,其内部属性往往需要通过三个顶点插值得来,像法向量,颜色值,深度值,还有纹理坐标等。所以我们需要一个插值的方式来解决这个问题,常用的有利用重心坐标进行插值
那么重心坐标是什么?简单来说就是找到三角形 A B C ABC ABC内部的一个点 P ( x , y ) P(x,y) P(x,y),有 ( x , y ) = α A + β B + γ C (x, y)=\alpha A+\beta B+\gamma C (x,y)=αA+βB+γC , 且 α + β + γ = 1 \alpha +\beta +\gamma = 1 α+β+γ=1,那么 ( α , β , γ ) (\alpha ,\beta ,\gamma) (α,β,γ) 就是点 P P P的重心坐标,如下图:
它有什么用处?看到坐标A,B,C 其实可以想到,如果把A,B,C换成 法向量(nx,ny,nz),纹理坐标(ux,uy)都是成立的
如何求解?把 α \alpha α 看做 W v 1 W_{v 1} Wv1 , β \beta β 看做 W v 2 W_{v 2} Wv2 , γ \gamma γ 看做 W v 3 W_{v 3} Wv3 ,可得如下方程:
P x = W v 1 X v 1 + W v 2 X v 2 + W v 3 X v 3 P_{x}=W_{v 1} X_{v 1}+W_{v 2} X_{v 2}+W_{v 3} X_{v 3} Px=Wv1Xv1+Wv2Xv2+Wv3Xv3
P y = W v 1 Y v 1 + W v 2 Y v 2 + W v 3 Y v 3 P_{y}=W_{v 1} Y_{v 1}+W_{v 2} Y_{v 2}+W_{v 3} Y_{v 3} Py=Wv1