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 为 无限大,最近物体 为 空值 由以上经典的光线追踪算法可以发现,在此算法中,环境中的物体等模型,并不是一次性的画好的,而是对整个场景一个像素一个像素的画上去的,光线跟踪算法中的每一根光线要与场景中的每一个物体所含的每一个面求交
三、 光线跟踪算法实现 1、 计算