- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
光线追 踪实验报告[实用论文]
Ray Tracer光线跟踪 实验报告
711064XX XXX
一、 实验目的
在计算机图形学课程作业中,题目要求是做 Ray Tracing 或 碰撞检测, 其中对 Ray
Tracing 的要求是:
(1) 多种形状物体,Ball, box 等
(2) 包含多种材质物体:纯镜面反射、透明物体、纯漫反射、半透明物体等
(3) Moving in a 3D world
(4) environment texture
二、 实验原理
在这次实验中,使用了真正的光线跟踪算法,而不是采用环境纹理来反映周围环境。
1、光线跟踪简介
光线跟踪是一种真实地显示物体的方法,该方法由Appel 在 1968 年提出为了
生成在三维计算机图形环境中的可见图像,光线跟踪是一个比光线投射或者
扫描线渲染更加逼真的实现方法。这种方法通过逆向跟踪与假象的照相机镜
头相交的光路进行工作,由于大量的类似光线横穿场景,所以从照相机角度
看到的场景可见信息以及软件特定的光照条件,就可以构建起来。当光线与
场景中的物体或者媒介相交的时候计算光线的反射、折射以及吸收。由于一
个光源发射出的光线的绝大部分不会在观察者看到的光线中占很大比例,这
些光线大部分经过多次反射逐渐消失或者至无限小,所以对于构建可见信息
来说,逆向跟踪光线要比真实地模拟光线相互作用的效率要高很多倍。计算
机模拟程序从光源发出的光线开始查询与观察点相交的光线从执行与获得正
确的图像来说是不现实的。
2、经典光线跟踪算法
对图像中的每一个像素 {
创建从视点通过该像素的光线
初始化 最近T 为 无限大,最近物体 为 空值
对场景中的每一个物体 {
如果光线与物体相交 {
如果交点处的 t 比 最近T 小 {
设置 最近T 为焦点的 t 值
设置 最近物体 为该物体
}
}
}
如果 最近物体 为 空值{
用背景色填充该像素
} 否则 {
对每个光源射出一条光线来检测是否处在阴影中
如果表面是反射面,生成反射光;递归
如果表面透明,生成折射光;递归
使用 最近物体 和 最近T 来计算着色函数
以着色函数的结果填充该像素
}
}
由以上经典的光线追踪算法可以发现,在此算法中,环境中的物体等模型,并不是
一次性的画好的,而是对整个场景一个像素一个像素的画上去的,光线跟踪算法中
的每一根光线要与场景中的每一个物体所含的每一个面求交。
三、 光线跟踪算法实现
1、计算观察光线
首先需要确定光线的数学表达式。一条光线实际上只是一个起点和一个传播方向,
假设起点为O (x1 ,y1 ,z1 ),屏幕上一点为D (x2 ,y2 ,z2 ),则光线的方向dir (x3 ,
y3 ,z3 )为:
dir=O –D ;
即
x3 = x1 –x2; y3 = y1 –y2 ; z3 = z1 –z2;
在程序中,光线的起点定义为:
vector3 o( 0, 0, -5 );
方向为:
vector3 dir = vector3( m_SX, m_SY, 0 ) - o;
由此可以确定一
文档评论(0)