More than code

More Than Code
The efficiency of your iteration of reading, practicing and thinking decides your understanding of the world.
  1. 首页
  2. 计算机图形学
  3. 正文

现代计算机图形学-作业3

2021年7月30日 558点热度 0人点赞 0条评论

现代计算机图形学-作业3

本文会记录一些在做这个作业时候学习到的点,而不去谈论作业本身

同时也可以更深刻的体会到,纸上得来终觉浅,绝知此事要躬行。在做的过程中会激发我们很多在学习听课的时候想不到的问题,于是更能触碰到原理,体会所学的知识。

首先要推荐看一篇文章,讲解矫正透视插值

然后我们从头开始说这个渲染的过程

首先我们会获得一系列的三角形,每个三角形三个顶点。我们会获得顶点坐标,顶点坐标对应的纹理坐标,顶点坐标对应的法线,以及顶点坐标对应的颜色

然后我们对于一系列的三角形进行坐标变换,但是这里要注意,透视投影后,插值的结果并不等于在原空间插值的结果,所以在开始处理的时候,我们只是进行了model和view的变换

同时,存下点在透视变换前的坐标是很有必要的,因为我们需要原始的位置去计算有关光照的各项因子

细心的同学可能会发现,在作业二中深度插值有一个系数,叫w_reciprocal,那么这个系数是干什么的呢?

其实在作业二中,我们在计算深度的时候就是在透视投影以后才计算的,也就是说那时候的深度值已经不对了。所以我们需要这个系数来帮助我们矫正透视投影所造成的偏差

具体的大家可以看我上面推荐的文章,在对透视投影后的坐标进行插值后,再乘上这个矫正系数,我们就可以得到原始的深度值了

所以同理,深度可以被看做是我们在透视投影后每个点的一个属性,那么同理,其他的属性,例如颜色,法向量,也就都可以用一样的方法进行矫正了

还有一个很关键的点,如果我们把透视投影矩阵写出来,乘上一个任意点,最后我们会发现这个点的w,也就是代表是点还是向量的那个值,会变成这个点原始的深度

这时候我们在计算的时候也就自然而然的用上了这个值,在代码中有多个地方可以体现

还有就是代码框架中一个错误的点,就是我们在用shader计算颜色的时候,实际上这时候我们的坐标已经是进行了model和view变换的坐标了,所以摄像头的位置应该是在原点。

对于有关光照的计算,其实都是代码实现的细节,这里就不在多赘述,如果有兴趣可以来我的github看

最后贴出一张牛牛的图片

20210730195636

标签: 暂无
最后更新:2021年8月17日

sheep

think again

点赞
下一篇 >

文章评论

取消回复

COPYRIGHT © 2021 heavensheep.xyz. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS