找回密码
 立即注册

QQ登录

只需一步,快速开始


vray材质库
查看: 22149|回复: 0

[转贴]Brazil 和FinalRender的算法本质

[复制链接]

该用户从未签到

156

主题

1619

回帖

221

积分

中级会员

积分
221
发表于 2003-4-4 01:45:00 | 显示全部楼层 |阅读模式
使用光子贴图的全局光照 Global Illumination using Photon Maps 摘 要 基于光子贴图概念的双程全局光照模式(two pass Global Illumination method),在速度、精确度和多功能方面又取得重大的进步。 在双程中的首先从光源中发射(emitte)光子能量包(packets of energy(photons))来生成并记(store)两个光子贴图。高分辨率的焦散光子贴图用于渲染可见的焦散,低分辨率的光子贴图用于渲染。 通过使用光子贴图的信息来优化渲染场景所用的分布式光线追踪算法(distribution ray tracing algorithm)。 阴影光子(shadow photons)用于更加有效的渲染阴影。 光子贴图的方向信息(directional information)用于优化方向采样(sampling directions)和限制分布式光线追踪中的循环(recursion),通过对所有表面(镜面反射表面和高光光滑表面除外)进行辐射度估算(estimate of the radiance)。 一、 介 绍 Introduction 通常情况下,实现全局光照是一项复杂的工作。当前,最成功的算法是光能传递(radiosity)和光线追踪 (ray tracing)。 虽然Monter Carlo算法强化了光线追踪算法,但Monter Carlo的光线追踪是非常耗费时间的。 虽然光能传递的方向性功能(directional capability)也增强了,但在方向信息记忆中如果内存使用的过少,其计算效果依旧不好。 多数光能传递的实施在计算反射时还是依赖一个简化的光线追踪算法。 Shirely发现当光能传递在渲染阴影时出现问题时,光线追踪在此方面表现的却越来越好,而且她也介绍了如何使用光线追踪来计算焦散。 Chen et al也用路径光线追踪(path ray tracing)来计算完全漫反射(all diffuse reflection)以消除其在光能传递算法中的污迹问题。 他们只用光能传递算法计算弱的非直接光照(soft indirect illumination) 有了路径光线追踪算法光能传递计算将被简化而且其计算所产生的大部分污迹都会被消除。另外,通过对原始几何体(original model)进行一个简明几何体近似估算(simple geometric approximation)来实施光能传递中的几何体简化工作(geometric simplification)。其本质目的就是解决在光能传递中模型面数的增大对系统内存和时间的消耗。 本论文介绍的一种双程模式就是用于取代模型简化的光照简化(simplify illumination)的代表。 我们使用光子贴图来进行光照简化工作。在场景的分布式光线追踪的渲染中,光子贴图用于生成优化的方向采样(sampling directions)、调节阴影光线的多少、渲染焦散和限制光线追踪中反射的次数。 二、模式纵论 Overview of the Method 该光照模型的双运程的第一运程是在场景中从光源发射光子与表面进行碰撞以获取全局光照的信息并以光子贴图的形式存储下来从而生成光子贴图。 使用一种可比较的策略记忆表面的一个点上的辐射度。我们的方法是在各个方面做重要的区分。 光子贴图反映了光照,并且在渲染中级好的完善了可视效果。 例如在传统的Monte Carlo光线追踪中非常难以计算的焦散效果,在使用光子贴图的技术中是非常容易实现。 此外,存储光子流通量(photons flux)要比存储辐射度(irradiance valuse)的值更为简便,其准确度 要求也低(less accurate)。 其目的是使用少量的有用的信息获取一个非常灵活的背景(flexible environment)以用于渲染阶段。 在使用光子时,通过在表面上使用随意的(arbitrary)的双向反射分布函数(BRDF)来计算该表面的辐射度。 在渲染阶段,该信息也能用以无偏差的方式(unbiased fashion)优化渲染。 光子能被用来计算产生优化的控制变量(variates)或产生方向采样的优化。 该模型的渲染引擎是分布式光线追踪器。当以两种不同的方式进行渲染时将调用光子贴图的信息。我们需要区分是使用精细计算(accurate computation)还是使用大概估算(approximate estimate)。 光线的多次反射导致象素点上的辐射度的衰减,对所有的表面进行大概估算以在光子贴图中均衡(equals)一个辐射度估算(radiance estimate)。 对于高密度的表面(highly glossy surfaces),由于其需要大数目的光子,所以在光线追踪中需要采用 附加采样光线(sample rays)。 使用阴影光子(shadow photons)的信息来调节阴影光线(shadow rays)的数量。 关于焦散的精细计算是通过假设一个辐射度估算,使用一个单独的光子密度很高的焦散光子贴图获取的。 三、运程1:光子贴图的构建 Pass 1:Construction the Photon Map 光子贴图是由从场景中的光源发射(emitte)数量巨大的光子(又称能量包)按照光照在场景中与表面进行碰撞生成的。每一个光子都以类似路径追踪的模式在场景中运动。 光子与表面的每一次撞击都记忆在光子贴图中,俄罗斯轮盘赌(Russian roulette)用于定义光子是被吸收(absorb)还是被反射。 光子反射的新的方向通过使用表面的双向反射分布函数(BRDF)来计算。 与以前的方法不同,该模型使用两个光子贴图:一个焦散光子贴图(Caustic Photon maps)和一个全局光子贴图(Global Photon map)。焦散光子贴图只用于存储与焦散相一致的光子。由向场景中的镜面(specular)对象发射光子生成,并且存储这些光子及其与漫反射表面的碰撞。 焦散基于直接以焦散光子贴图为基础的辐射度估算来渲染,需要高密度(high density)的光子数。 事实上,使用两个独立的光子贴图同时提高了速度,调节了所需的系统内存,提高了该模型的精确度。 由于焦散光子贴图只含有与焦散相关的(relate to)光子从而提高了计算焦散的速度。 全局光子贴图(global photon map)中光子的定位(locate)也是很快的,因为在全局光子贴图的光子数 较少而且这些光子的能量级别(energy level)是非常近似的(similar),更主要的原因是全局光子贴图 中标准光子(normal photons)和焦散光子各自独立的,不是混合(mixture)在一起的,标准光子的分布密度(density)低而能量(energy)高;焦散光子的分布密度高但能量低。这些功能有助与提高辐射度估算(radiance estimate)的精确度(accuracy)。 光子被存储在一个信息标号数据平衡树(balanced kd-tree)中。该数据结构是压缩的,也是有效的。 实际上,搜索是非常有效的,因为在信息标号数据平衡树中该光子被定位在同一部分。 三、运程2:渲染 pass 2:Rendering 最终,图象的渲染是由蒙特卡罗光线追踪(Monte Carlo ray tracing)以一定数量的采样点(sample)平均(average)估算象素点(pixel)上的辐射度(radiance)的形式来渲染的。 对于一些正对的略带镜面反射的表面采用精确计算。 如果光线发射点(ray origin)到它与表面的相交点(intersection point)的距离小于一个很小的阕值,也采用精确计算(accurate computation),否则在角落会产生不正确的色彩衍射(color bleeding)效果。 1、直接光照(direct Illumination) 对于直接光照通常采用朝着光源发射阴影光线(shadow rays)来检验其是否为可见(visibility)。 按照需要,以精确估算(accurate evaluation)或粗略估算(approximate evaluation)两种不同的方式计算其作用。 我们观测场景中的大部分区域是否受到充分光照或是在阴影中,而针对直接光照作用的采用精确估算,可以使用光子贴图的信息来鉴别该区域以避免使用阴影光线,只有在下列两种情况下我们才使用阴影光线:一、在全局光子贴图中最近的光子混合含有直接光照光子和阴影光子,二、被定位的光照和阴影光子数量太低。 粗略估算(approximate evaluation)是从全局光子贴图中获取的简单的辐射度估算(Radiance Estimate) ,不使用阴影光线和光源估算(light source evaluation)。 2、镜面反射(Specular Reflection) 镜面反射表面(specular surfaces)和高度光滑表面(highly glossy surfaces)反射的辐射度(Radiance)。该项采用一个标准的蒙特卡罗光线追踪来计算。通过采用重要(importance sampling)的基于双向反射分布函数(BRDF)的采样,该计算可以成为只使用有限数量的采样光线(sample rays)的最有价值的计算。 3、焦散 漫反射表面和轻度光滑表面(sliightly glossy surfaces)上的焦散。 使用焦散光子贴图的信息来估算焦散。 我们永远不会使用蒙特卡罗采样(Monte Carlo Sampling)来计算焦散,因为在多数情况下它是不可能的, 就是说,基于焦散光子贴图的辐射度估算是完全假想的(visualized directly),这也是焦散光子贴图中光子的数量必须高的原因。 4、柔弱的非直接光照(Soft Indirect Illumination) 非直接光照是由光离开源点后被漫反射产生的,所以起其光照效果较为柔弱。 非直接光照的粗略估算即辐射度估算是以全局光子贴图为基础的。 在针对非直接光照的精确计算中,我们使用重要的采样(importance sampling)。我们使用光子贴图中关于双向分布反射函数(BRDF)的信息来生成优化的方向采样(sampling directions)。 5、使用光子贴图的辐射度估算(Estimating Radiance using the Photon Map) 在光子贴图中的信息可以用于计算在给定方向上离开一个表面的的辐射度。由于对于每个光子而言,给定的方向都被存储了,我们可以采用双向分布反射函数的形式集成这些信息。。。。。。。。。 此文里处处闪烁着巴西和FR的影子。。。。。。。 巴西采用的其实就是以Photon Map为基础的蒙特卡罗光线追踪算法, FR则是finalRender使用一种极其快速的混合光线追踪器(hybrid raytracer)来渲染全局光照性的图像,任何一个3ds max的场景都能被其用于进行一个全局光照的渲染。 该场景被分析(analyze)并编译(compily)为一个多数据流处理树MSP-Tree(Multi-Stream Processing多数据流处理,缩写为MSP)。在光线追踪进程中, 多数据流处理树相当于一个
.....提示:网站下载资源都有备份,如遇到下载地址失效请及时联系管理员(QQ:3459039404)恢复下载地址(个别无法恢复会退币)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

室内设计工具箱

QQ|手机版|Archiver|室内人 ( 辽ICP备05022379号 )

GMT+8, 2025-6-20 15:23

Powered by Discuz! X3.5关于室内人 | QQ:3459039404(客服) | Email:snren_com@163.com

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表