光线跟踪讲解及源代码

光线跟踪讲解及源代码

ID:40782672

大小:398.93 KB

页数:15页

时间:2019-08-07

光线跟踪讲解及源代码_第1页
光线跟踪讲解及源代码_第2页
光线跟踪讲解及源代码_第3页
光线跟踪讲解及源代码_第4页
光线跟踪讲解及源代码_第5页
资源描述:

《光线跟踪讲解及源代码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、计算机图形学期末作业作业题目:RayTracing算法的实现姓名:李海广学号:S130201036任课教师:秦红星摘要RayTracing算法又叫光线跟踪算法,它能通过递归方法逐个计算每个像素点的光强,然后就可以绘制出高度真实感的图像,因此该方法在图形学领域得到了广泛的应用。RayTracing算法的思想还能应用到移动通信终端定位领域,该领域里的射线跟踪法与此算法思想类似。MFC是微软公司提供的一个类库,以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Win

2、dows句柄封装类和很多Windows的内建控件和组件的封装类。MFC在处理Windows窗口应用程序方面具有很大的优势,因此,本文使用MFC在VC6.0里实现RayTracing算法,并给出了该算法的详细讲解。【关键词】Raytracing光线跟踪递归像素光强MFCC++II目录1.RayTracing算法概述11.1RayTracing算法简介11.2RayTracing算法的实现原理12.RayTracing算法的具体实现22.1算法的实现环境22.2实现算法的C++程序简介22.3算法的具体实现过程32.4程序运行结果113

3、.总结113.1通过该算法学到的东西113.2本程序未完成的任务124.参考文献12II1.RayTracing算法概述1.1RayTracing算法简介光线跟踪(Raytracing),又称为光迹追踪或光线追迹,它是来自于几何光学的一项通用技术,它通过跟踪与光学表面发生交互作用的光线从而得到光线经过路径的模型。它用于光学系统设计,如照相机镜头、显微镜、望远镜以及双目镜等。这个术语也用于表示三维计算机图形学中的特殊渲染算法,跟踪从眼睛发出的光线而不是光源发出的光线,通过这样一项技术将具有一定数学模型的场景显现出来。这样得到的结果类似

4、于光线投射与扫描线渲染方法的结果,但是这种方法有更好的光学效果,例如对于反射与折射有更准确的模拟效果,并且效率非常高,所以在追求高质量结果时我们经常使用这种方法。在光线跟踪的过程中,我们要考虑许多因素。要跟踪的光线包括反射光线、散射光线和镜面反射光线,利用递归方法并且设定一定的阀值来跟踪;在计算光强度时,我们要考虑场景中物体的反射系数、漫反射系数和镜面反射系数,还有交点处的法向量,出射光线的方向向量;在求视线以及反射光线和场景中物体的交点时,要计算出离眼睛以及出射点最近的交点作为击中点,得到击中点之后,我们就可以计算出击中点的坐标。

5、最终,通过三个公式计算出每一个像素点处三种光线的光强值,再将三个光强值相加,就得到了该像素点出的总光强值,最后将颜色缓冲器中的三种颜色值输出到屏幕上,就得到了我们需要的光线跟踪图像。1.2RayTracing算法的实现原理(1)对图像中的每一个像素,创建从视点射向该像素的光线;(2)初始化最近时间T为一个很大的值,离视点最近的物体指针设为空值;(3)对场景中的每一个物体,如果从视点出发的光线和物体相交,且交点处的时间t比最近时间T小,则将t的值赋给最近时间T,并设置该物体为最近物体,将物体指针指向该物体;(4)经过第三步的计算后,如

6、果最近物体指针指向空值NULL,则用背景色填充该像素。如果该指针指向光源,则用光源的颜色填充该像素;12(5)如果最近物体指针指向的既不是NULL也不是光源,则从交点向光源发出一条光线,并判断该光线在射向光源的过程中是否被遮挡,如果被遮挡,则该交点对光源不可见;(6)若第五步中的光线在射向光源的过程中没有被遮挡,则该交点对光源可见。那么从交点到光源做出一条入射光线,并将入射光线单位化。求出物体表面该交点处的法向量之后,我们就可以利用公式计算出该点的散射光强值、镜面反射光强值,并将它们加到总光强值上;(7)对于反射光线,我们先利用视线

7、和交点处的法向向量求出视线的反射光线,并将其单位化。然后以交点为视点,以交点处的反射光线为视线递归地进行跟踪,直至达到最大递归深度,我们就得到了加上递归反射光强的总光强值;(8)最后,我们逐行逐个像素的将三种颜色值输出到屏幕上。至此,通过光线跟踪就得到了一幅质量很高的图像。2.RayTracing算法的具体实现2.1算法的实现环境(1)编程环境:MicrosoftVisualC++6.0;(2)图形类类库:MFC;(3)编程语言:C++;(4)显示设备:电脑显示器。2.2实现算法的C++程序简介该程序由C++编写而成,主要分为以下几

8、个部分:(1)点和向量的定义及运算;(2)光线类的定义及操作;(3)场景中各种物体的材质特征定义和求交计算;(4)光线跟踪过程及图像绘制;122.3算法的具体实现过程(1)点和向量的定义及运算CVector类用来存储向量的坐标值,设置

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。