- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
非多边形技术2光线跟踪算法光线跟踪算法基本原理反射方向
2003-11-5 第14章 非多边形技术 光线跟踪算法 光线跟踪算法 基本原理 反射方向和折射方向的计算 光线与物体的求交 光线跟踪算法的伪语言描述 加速技术 光线跟踪算法的例子 三种明暗模型得到得结果 光线跟踪 光线跟踪是迄今为止生成真实感图形最为成功的算法之一 光线跟踪算法之美在于它的极度简单性 光线跟踪生成的图形比前面介绍的三种明暗处理方法真实得多(镜面反射、透明、阴影) 光线跟踪算法的基本原理 光线跟踪算法的基本原理 光线投射(Ray Casting)算法 对屏幕上每一象素,从视点出发向该象素发出一条光线 求出光线与场景中物体的全部交点 对所有这些交点沿着光线的方向排序,得到离视点最近的交点 最后依据局部光照明模型计算该交点处的颜色值,并将计算出的颜色值赋给该象素 当处理完所有屏幕象素时,即得到一幅真实感图形 Whitted光照明模型 Whitted整体光照明模型(镜面反射和透射):假设从某一观察方向V所观察到的物体表面某点P的光亮度的贡献来源于三个方面: 由光源直接照射引起的反射光亮度Ic 沿V的镜面反射方向r来的环境光Ir通过投射在光滑表面上产生的镜面反射光 沿V的规则透射方向t来的环境光It通过透射在透明体表面上产生的规则透射光 光线跟踪算法的基本原理 光线跟踪算法用于求解Whitted整体光照明模型 Whitted整体光照明模型: I = Ic + krIr + ktIt 直接反射光+镜面反射光+规则透射光 光线跟踪算法是光线投射算法的扩展 镜面反射光 规则透射光 光线跟踪算法的基本原理 STEP1: 直接反射光IC的计算 针对屏幕上的每一象素,从视点出发向该象素发出一条光线(称为一级光线,Primary Ray) 求出光线与场景中物体的所有交点中离视点最近的交点P 依据局部光照明模型计算该交点处的颜色值Ic 光线跟踪算法的基本原理 STEP2: 镜面反射光Ir和规则透射光It的计算 在最近的交点P处衍生出二级光线(Secondary Ray ) 如果点P所在的表面为镜面,沿着上述一级光线的镜面反射方向衍生出一条光线 如果点P所在的表面为透明面,沿着上述一级光线的透射方向衍生出一条光线 光线跟踪算法的基本原理 对衍生出的二级光线递归地执行STEP1 和STEP2,以计算来自镜面反射方向和透射方向上周围环境对点P颜色的贡献Ir和It 依据Whitted光照明模型即可计算出点P处的颜色值,并将计算出的颜色值赋给该象素。 当所有屏幕象素都处理完毕时,即得到一幅真实感图形。 光线跟踪算法的基本原理 光线跟踪过程是上述光线衍生和在环境景物之间传递的过程 光线跟踪过程是对真实世界光照明过程的逆过程的一种近似 光线跟踪过程实际上是逆向跟踪从光源发出的光在物体之间的多次反射和折射后投射到物体表面,最终进入人眼的过程 光线跟踪过程可用一棵二叉树来表示,称为光线树 光线跟踪算法的基本原理 光线跟踪算法的终止标准 光线与环境中的任何物体均不相交(最自然的出口) 当前光线对象素颜色的贡献很小。这是由于衍生出的二次光线在环境中经多次反射/折射时会存在衰减。一般可由用户预先设定一个阈值作为衡量光线对象素颜色贡献的标准 递归达到了一定的层次。这一最大层次一般由用户设定 光线跟踪中反射与折射方向的计算 反射方向的计算:几何光学中的反射定律 折射方向的计算:Snell定律 光线跟踪算法的伪语言描述 光线跟踪算法的伪语言描述 光线跟踪算法的伪语言描述 光线与物体的求交 假设光线R的起始点为P,方向为D(不妨假设D为单位矢量),则光线的参数方程表示为: R(t)=P+tD (t?0) 加速技术 光线跟踪算法涉及到光线与场景中物体之间的大量求交运算: 分辨率:1280?1024 反射和折射:10次 光源数:3个 物体数目:300000个三角片 在没有任何加速算法的前提下,计算量为: 1280?1024?10?3?300000=1.18?1013 加速技术 加速技术分析 与某一特定光线相交的表面数量极其有限,如果直接对光线和所有物体表面进行求交计算,势必造成极大的浪费 如果能对景物中的物体表面进行合理的组织,避免不必要的光线与景物表面的求交运算,将显著提高光线跟踪算法的效率 常用加速技术: 层次包围体技术 景物空间剖分技术 分形系统 分形图形一般都有自相似性 Julia图形是指采用Julia 集绘制而成的图形 Mandlebrot集 Koch曲线是早期被描述的一种分形曲线 * * Flat Shading Gouraud Shading Phong Shading 光线投射算法示意图 光线跟踪技术的前身是光线投射 main ( ) //主函数 {
文档评论(0)