图形学实验二 光线追踪

实验二

实验要求:

编写一个光线追踪渲染程序。

实现思路:

参考ray tracing in one weekend学习如何实现光线追踪。

实现了漫反射、镜面反射、折射。

输出ppm格式的图片。

项目包含以下部分:

main.cpp 主程序

camera.h 一个可以定义位置、视线方向、顶部朝向、视角大小、景深的相机

vec3.h 定义向量,并实现与向量相关的运算

ray.h 光线类

hittable.h 物体抽象类

sphere.h 球类,继承物体抽象类

hittable_list.h 物体列表

material.h 材质(包含以漫反射为主的普通材质、以镜面反射为主的金属材质、以折射为主的玻璃材质)

tools.h 一些简单辅助常量、函数

实现结果:

最终结果:

请添加图片描述

学习过程:

1、一张简单的ppm格式的图片
请添加图片描述

2、简单的光线追踪
请添加图片描述

3、加入一个球(此处只考虑光线是否与球相交)
请添加图片描述

4、根据法向量设置颜色
请添加图片描述

5、加入一个很大的球作为地面
请添加图片描述

6、反走样(对一个像素多次采样取平均)
请添加图片描述

7、漫反射材质
请添加图片描述

8、金属材质(两侧为金属材质,中间为漫反射材质)
请添加图片描述

9、玻璃材质(左侧为玻璃材质)
请添加图片描述

10、调整相机位置、朝向等
请添加图片描述

11、调整相机景深
请添加图片描述

12、低分辨率(200×100)、少量球:
请添加图片描述

渲染出最终结果大概需要7小时,渲染低分辨率少量球大概需要1分钟。

github链接:https://github.com/sdu-graphics/experiments-zxj107/blob/main/experiment2、

参考资料:
https://zhuanlan.zhihu.com/p/128582904
https://zhuanlan.zhihu.com/p/128685960

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值