Games101 Homeworks Summary

Prefab

Games101还是要强烈推荐给大家,把图形学一些基本的内容讲的十分透彻了。这里记录一下作业的成果,具体的代码实现就不展示了,如果有特别巧妙的会注明。封面将对当前最新进度结果进行展示。

已完结,代码库

hw7_heigh

Assignment 1

第一次作业就是简单的几何透视。课上分开讲,所以用分开的子矩阵相乘得到,或者直接计算到结果。

注意这里先假定图像是中心对称摆好的

hw1

Assignment 2

第二次作业是实现depth buffer。

hw2

注意MSAA的实现,需要将一个像素点打成四个进行分析,对最终颜色根据一个像素内有几个点在三角形内重新计算(color*=#三角形内点/4)

hw2_MSAA_simple

但是这样只是抑制了颜色的数值,实际上我们希望的是两种颜色之间的渐变过渡。

因此采用原本数值和新数值的加权求和,但是这种方法首先于先后出现关系,因此不能完全解决问题。

hw2_MSAA

似乎效果也不是很好。。。

Assignment 3

这次作业不仅东西多,而且很多细节课上没有明确,虽然作业根据指导还是比较清晰的,但是对其背后的原理很多都不甚清晰。

hw3_norm

hw3_phong

hw3_texture

hw3_texture_interpolated

hw3_bump

hw3_displacement

Assignment 4

hw4_naive

hw4_bezier

hw4_anti_alising

Assignment 5

光线追踪具体挺麻烦的,但是这里只需要实现简单的功能--由screen发射ray(其实就是将屏幕空间(0, width-1)x(0,vheight-1)映射到(-1, 1)x(-1, 1)的空间里去),还有判断光线是否能打到三角形内(有明确公式解)。

hw5

Assignment 6

这里其实就是对作业5进行加速--使用BVH,简单说就是建立包围盒子,然后类似树状地对空间进行分割,判断子空间内光线是否与物体相交,算法也以递归方法实现。

hw6

Assignment 7

这次是基于渲染方程的光线追踪,非常麻烦而且细节很多,但是理论上可以达到完全真实的效果。

hw7_low

hw7_heigh

Assignment 8

这次很简单了,就是模拟一根绳子,简单说就是假设每个节点都是质点,然后模拟弹簧计算力->质点加速度->质点速度->每一帧质点位置。

hw8_low

hw8_high