OpenGL & Phong Shading:OpenGL API引用 & Blinn-Phong着色

发布于:2022-12-11 ⋅ 阅读:(512) ⋅ 点赞:(0)

本次作业将添加场景的交互式预览,并在光线追踪器中实现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


网站公告

今日签到

点亮在社区的每一天
去签到