P1 第一个pdf
第一页左边部分是介绍ray tracing算法概念,和根本看不懂的公式1
Q1.1 1.2 定义 point,vector,还有底层运算符,
Q2.1 定义光线ray
Q2.2 定义摄像机 camera,camera同时包含screen
Q2.3我也不知道干什么应该是对着屏幕发射ray,反正按着公式写了
Q2.4定义sphere
Q2.5计算intersect,用的是代数方法,听说有几何方法
Q2.6把intersect 加到Q2.3里
Q3.1进行显示,可以用Graphics,或者F#,我不会F#所以用了Graphics
Ambiante,diffuse,spéculaire,具体叫什么我也不知道看图应该是背景光,反射和高光
Q4.1 定义颜色rgb,
==========以上是已经完成部分,有球体变形bug===============
Q4.1定义材料,ka, kd ,ks对应前面3个,区间在0-1,β不清楚好像是反光度,提了一下Blinn-Phong,似乎是某种渲染方法
Q4.2定义全局光照,需要改动Q2.3将光照加入参数,也可以定义点光照或者anisotropy不知道是什么
Q4.3是Ambiante的部分,定义一个illuminate函数计算color
Q4.4改动intersect,同时返回相交点的垂直于面的vector为了计算反射
Q4.5改动illuminate,将diffuse也加入color的计算
Q4.6高光公式,也加入illuminate
Q4.7重用intersect 计算阴影
Q5.1输出图像,至少需要两个球,一个灯,其中一个的阴影在另一个上面
Q5.2好像是说用很多个球组成一个正方形?然后输出
Q5.3添加多个灯照,亮度线性叠加
Q5.4去锯齿,简单的把像素点换成周围像素点的平均数
P2 第er个pdf
Q1.1用sceneLoader来从控制台进行加载物体,将发射光线变成可以从控制台调用
Q1.2用给的代码进行测试,基本就是为了保持格式
Q1.3保存一个scene到文件
Q2.1定义平面plane,和对平面的intersect
Q2.2增加三角形,还有三角形的intersect
Q3.1定义kd-tree的mli,intersect,min,max,kd-tree好像是某种增加效率的数据类型
Q3.2定义type kd-tree
Q3.3用scene创建kd-tree
Q3.4我已经看不到在说什么了,应该是kd-tree的某种历遍方式
Q3.5比较kd-tree和之前的没有用的时候的时间复杂度
Q4后面的都是可选,大概是每种不同素材的反射方式