本次作业将添加场景的交互式预览,并在光线追踪器中实现Phong着色。对于交互式显示,您将使用图形硬件快速渲染3D多边形的OpenGL API,在OpenGL中,您通过向API发送命令来显示图元,API负责透视投影等。
原理
Blinn-Phong着色模型
漫反射项
高光项:
Phong Model:
球体细分
此处可以参考如下链接:
注意点1:在代码中,指明pi是-pi/2—pi/2,故是当前点所在射线与Z轴的夹角,而theta则是投影下x-z平面的射线与x轴的夹角
注意点2:所有以四边形渲染的图形,如plane或者sphere中的每个细分的四边形面,都需要注意点的连接顺序
环境安装和运行方式
由于在linux上调用opengl的API不太方便,尤其是glut很难下载安装,所以在这个作业我选择了使用windows10+opengl
参考如下两个链接:
适配图形学课程MIT6.837的OpenGL+VS2017环境配置__ConneR_的博客-CSDN博客
MIT-CG6.837-2004/03_Phong_Shading at master · fuzhanzhan/MIT-CG6.837-2004 · GitHub
其中lib和include以及out/Debug中的freeglutd.dll需要提前拷贝下来,并将调用opengl头文件的代码语句改为
#include <GL/freeglut.h>
代码通过cmake进行链接,注意CMakeLists.txt中规定了cmake最低版本要求为3.15,链接生成03_Phong_Shading.sln
cmake .
用vs打开项目,右键选择项目点击生成,即可生成raytracer.exe并保存到/out/Debug中
在raytracer.exe所在的文件夹通过命令行即可运行该应用
Result
Github链接
Graphics-6.837/assignment 4 at main · A-pril/Graphics-6.837 · GitHub