第六节光线跟踪 光线跟踪技术是从光线投射(ray casting) 技术发展而来的。光线投射的基本原理很简单, 假设从视点V通过屏幕象素e向场景投射一光线交 场院景中的景物于P1,P2,…,Pm点,那么离视点 最近的P点就是画面在象素e处的可见点,象素e 的光亮度应由P1点向PV方向辐射的光亮度决定。 如果通过V点向屏幕上的每一象素都投射光线以 求得每一投射光线与场景的第一个交点(可见 点),并置相应象素的光亮度为交点处的光亮度, 那第我们就得到一幅完整的真实感图形
第六节 光线跟踪 光线跟踪技术是从光线投射(ray casting) 技术发展而来的。光线投射的基本原理很简单, 假设从视点V通过屏幕象素e向场景投射一光线交 场院景中的景物于P1,P2,…,Pm点,那么离视点 最近的P1点就是画面在象素e处的可见点,象素e 的光亮度应由P1点向P1 V方向辐射的光亮度决定。 如果通过V点向屏幕上的每一象素都投射光线以 求得每一投射光线与场景的第一个交点(可见 点),并置相应象素的光亮度为交点处的光亮度, 那第我们就得到一幅完整的真实感图形
m 屏幕
光线投射算法只能实现局部光照明效果。这 种方法的突出优点是不必再单独消隐,算法 简单
光线投射算法只能实现局部光照明效果。这 种方法的突出优点是不必再单独消隐,算法 简单
虽然光线在景物间的反射和折射可以无限进 行下去,但在计算机中不可能做无休无止的光线 跟踪,需要给出光线跟踪的结束条件。当被跟踪 的光线射出画面或跟踪深度达到给定层次时,应 停止跟踪过程。考虑到被跟踪光线经多次反射和 透射后会衰减(由于k和k的作用),也可通过判 别跟踪光线对显示象素光亮度引的贡献是否小于一 阈值来动态控制跟踪深度。设颜色灰度等级为G (通常为255),k为所取阈值,那么凡是对显示 象素光亮度的贡献小于k个灰度级,或者说其贡 献系数小于k/G的反射、透射光亮度都没有必要再 计算下去
虽然光线在景物间的反射和折射可以无限进 行下去,但在计算机中不可能做无休无止的光线 跟踪,需要给出光线跟踪的结束条件。当被跟踪 的光线射出画面或跟踪深度达到给定层次时,应 停止跟踪过程。考虑到被跟踪光线经多次反射和 透射后会衰减(由于ks和kt的作用),也可通过判 别跟踪光线对显示象素光亮度I的贡献是否小于一 阈值来动态控制跟踪深度。设颜色灰度等级为G (通常为255),k为所取阈值,那么凡是对显示 象素光亮度I的贡献小于k个灰度级,或者说其贡 献系数小于k/G的反射、透射光亮度都没有必要再 计算下去
begin for需要计算光亮度的每一象素edo begin 确定通过视点V和象素e的光线R; ray-tracing(R,I,1); 置e的光亮度为 end end; procedure ray-tracing(R,I,A); /*R为当前跟踪光线,为当前跟踪光线的光亮度 A为对总光亮度的贡献系数*/ begin ifA<k/G then I=0
begin for 需要计算光亮度的每一象素e do begin 确定通过视点V和象素e的光线R; ray-tracing(R,I,1); 置e的光亮度为I end end; procedure ray-tracing(R,I,A); /*R为当前跟踪光线,I为当前跟踪光线的光亮度 ,A为I对总光亮度的贡献系数*/ begin ifA<k/G then I=0