为什么缩放(均匀)对象导致对象在OpenGL ES 1.x中变浅?
更有意义的是它会变暗,因为不是缩小法线也会使物体变暗?但由于某种原因,物体变得更轻.当我向上扩展时,对象变得更暗.在我看来,这应该是另一回事.
请不要建议使用GL_NORMALIZE等.我只是好奇为什么OpenGL实现会这样.
小智 7
简单的问题,复杂的答案.这是红皮书的相关摘录:
转换法线
法线向量的变换方式与顶点或位置向量不同.在数学上,最好将法线向量看作矢量,而不是垂直于这些向量的平面.然后,通过垂直平面的变换规则描述法向矢量的变换规则.均匀平面由行向量(a,b,c,d)表示,其中a,b,c或d中的至少一个是非零的.如果q是非零实数,则(a,b,c,d)和(qa,qb,qc,qd)表示相同的平面.如果ax + by + cz + dw = 0,则点(x,y,z,w)T在平面(a,b,c,d)上.(如果w = 1,这是欧几里德的标准描述为了使(a,b,c,d)代表欧几里德平面,a,b或c中的至少一个必须是非零的.如果它们全部为零,则(0,0,0,d)表示"无穷远处的平面",其中包含所有"无穷远处的点".
如果p是一个齐次平面而v是一个齐次顶点,则语句"v位于平面p"在数学上写为pv = 0,其中pv是正常矩阵乘法.如果M是非奇异顶点变换(即,具有逆M-1的4×4矩阵),则pv = 0等于pM-1Mv = 0,因此Mv位于平面pM-1上.因此,pM-1是顶点变换M下的平面的图像.
如果你想将法向量看作向量而不是垂直于它们的平面,那么让v和n为向量,使得v垂直于n.然后,nTv = 0.因此,对于任意非奇异变换M,nTM-1Mv = 0,这意味着nTM-1是变换后的法向量的转置.因此,变换后的法向量是(M-1)T n.换句话说,通过变换点的变换的逆转置来变换法向矢量.呼!
简而言之,位置和法线不会以相同的方式变换.如前文所述,正常变换矩阵是(M-1)T.将M缩放到sM将导致(M-1)T/s:比例因子越小,转换的法线越大......我们走了!
| 归档时间: |
|
| 查看次数: |
2205 次 |
| 最近记录: |