【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 3164|回复: 7

【推荐】讨论渲染器[转帖][分享]

[复制链接]
发表于 2003-10-9 00:04:28 | 显示全部楼层 |阅读模式
现在业界争论得最多的光照渲染不外两种:
1、全局照明 Global lllumination 简称GI
2、光能传递

Finalrender是一个GI渲染器的代表,类似的还有V-RAY等;
Lightscape是一个典型的光能传递技术的代表。类似还有巴西、mental_ray等

local lllumination (局部照明)

也就是MAX中默认的照明方式,光线只对它击中的物体进行照明计算,而其它的地方则是阴影区,根本不会有任何光线,但现实中不是这样的,光线经过无数次反拆射是会照亮整个区域的。这也就是大家所觉得MAX 的灯难打,光强弱太黑了,光强大又爆光了!

下面的图就是MAX本身渲染器所计算出来的,对于光线没有击中的地方是不会计算的,我们所看到的就是,太暗! 我们的眼镜告诉我们—这是不真实的!

这是一种正确的光线计算方法,灯光发射出光线后,在物体表面反射又发射出多条光线,这样经过若干次反射后,场景就符合直实世界的光照。这样就可以实现一个灯照亮一个房间的效果!!!

下面的就是打开了GI效果的FR渲染的测试图片,我们可以清楚的感觉得到。场景在大量光线的漫反射中显得很自然。这就是GI效果!

光能传递算法是LS的算法,他采用工程热力的方法来处理光的照射方案。
我个人觉得应是将光模拟成一种能量----辐射能,这些能量在物体表面不断的反射计算的一种方法。这个过程也就是光能传递运算,也就是LS最酷的一点!!!

全局照明和光能传递都是物理上正确的光照方法!!!至于说哪个强,我们还是让别人讨论去吧!

VRay GI caustics我没有用过。大约在2000年的时候就出来了。当时看了一下他的例子,感觉很不错。只是一直没有时间详细了解。用别人教程里渲染好的PP给大家看看,让大家有一个直观地认识。
 楼主| 发表于 2003-10-9 00:05:09 | 显示全部楼层
坦白地说FINAL RENDER我也没有认真用过。
现在最新的版本是1.6。使用很简单,但是要用好就很难了。

快速多功能新渲染器FINAL RENDER有那些特性?

--加强3DS MAX 4.2的渲染功能
--高级、快速的全局照明系统
--两种全局照明渲染引擎可选
--完全支持分散光线追踪特效
--建立在全局照明基础上的、现实性非常强的散焦效果
--真实体积光次表面光线发散(3S)
--高级自适应的像素次取样技术以抗锯齿
--真正支持HDRI图象(无须灯光用背景图象即可照明场景)
--建立在3DS MAX 4.2内部的快速光线追踪系统
--“懒惰”数据处理技术,只有需要的数据才会被预处理以加快速度
--建立在自然基础上的景深光线追踪式摄像机特效。
--特别快的光线追踪式柔和阴影。
--准确、现实感很强以图象为基础的照明系统
--对3DS MAX的明暗器(SHADER)类型与界面完全支持
--真实准确的运动模糊阴影
--崭新、增强了的,基于现实的材质模型
--对粒子灯光提供了增强与优化支持
--真正的局部灯光发生器(基于物体的灯光,你可以把一个圆柱体变成一个光源)
--基于自然的漫反射模糊光线追踪方式
--许可免费的网络渲染支持!
--支持材质烘烤(TEXTURE BAKING)与灯光贴图的创建
--实时、交互式的体积光效果(特别快!)
--自然可信,基于能量方式的光子追踪
--彩色体积阴影
--彩色阴影贴图
--完全支持渲染特效的界面
--完全支持标准的渲染云素(如反射、漫反射等)
--反射与折射散焦效果
--另外,完全支持气效光(如雾)
--体积光中的光线追踪阴影
--彩色阴影贴图存到硬盘中
--加强了光线追踪式的阴影
--崭新的圆柱体式局部灯光类型(大家期待已久的!)
--光线追踪式局部灯光体积阴影
--新的体积光能量图
--体积光比3DS MAX内部的体积光快10倍以上!



[此贴子已经被作者于2003-10-9 0:05:51编辑过]
 楼主| 发表于 2003-10-9 00:06:41 | 显示全部楼层



 楼主| 发表于 2003-10-9 00:06:53 | 显示全部楼层
lightwave的渲染器类似于3dmax自身的渲染器,属于线性扫描,对光线的处理类似于GI

关于Renderman,MentalRay,Lightscape,Brazil,FinalRender的算法讨论
众所周知,Renderman,MentalRay,Brazil,FinalRender,Lightscape都是一流的渲染器,孰优孰劣,大家都在网上讨论了很多了。这次我想从它们的算法入手进行分析,看它们在算法上的优劣,希望能让大家对它们有更深入的了解,从而改进对渲染器的使用。
  首先,每一个渲染器都基于一套基本的求解算法,这些算法的名称大家都已耳熟能详了。基本渲染算法有三种:Scanliner(扫描线)、Raytrace(光线跟踪)、Radiosity(辐射度)。Scanliner与Raytrace都为大多数软件所采用,而Radiosity就只有BMRT与Lightscape采用。Scanliner最早被开发,应用亦最广泛。其中Renderman的REYES(Render Everything You’d Ever Seen)算法是Scanliner的最极致的发挥,但也表示Scanliner已经走到了尽头了。Raytrace的应用越来越广泛,它最初用来求解非漫反射面之间的光能传递,即反射与折射的模拟。后来分布式光线跟踪与双向光线跟踪得到长足发展,特别是先进的有限元采样算法得到发展后,光线跟踪也被应用于漫反射面的光能传递求解。MentalRay的Global Illumination、Brazil、FinalRender就是很好的例子。其中,分布式光线跟踪的算法决定了软件输出的质量。MentalRay假定每个元面都有一张PhotonMap(在双向光线跟踪算法的创始人Arvo(ARVO1986)的论文中叫Illumination Map),在PhotonMap上投射光线采样,然后把PhotonMap像Texture一样贴在元面上。所以MentalRay必须设定光线的大小(Radius)以方便在PhotonMap上采样。这样保证了速度,但要在有丰富经验的人调较下才能渲染出高质量的图片。Brazil直接用半球体采样,用立体方位角投射到元面表面,类似于Radiosity算法的立方体采样,但Brazil通过控制辐射残差来加快速度,也牺牲了质量,所以在采样不足的情况下,Brazil渲染的质量是最差的。FinalRender用有限元采样,同时保证了速度和质量。有限元是一种结合Radiosity的采样方法。Radiosity是在80年代末发展起来的渲染算法,它采用热力学的辐射积分式:B=E + p$B(x’)[coscos(x’)/pi*r^2]*HID(dS,dS(x’))dA(x’),其中x’为源元面,x为目标元面,B是x的辐射度分量,E是x的源能量,p是x的漫反射系数,$是对元面x积分,HID是遮挡函数(x与x’之间有遮挡为0,没有则为1),dA是x的面积。可以看到,Radiosity是通过对整个场景的表面都求解辐射度来达到模拟光能传递效果。Lightscape的求解过程就是Radiosity的Shooting过程,它采用空间四叉树算法来加速求解,所以速度比较快。Radiosity渲染基于物理学理论,其渲染效果真实,是Raytrace所不能比拟的,但从视觉效果上考虑,现在Raytrace和Radiosity不相上下,在速度上,Raytrace更占绝对优势。而且,Refract(折射)、caustic(焦散效果)是Radiosity无法模拟的(所以Lightscape也带了Raytrace渲染器)。

第二,每个渲染器都有贴图的优化算法,这也是成败的关键,因为高级的渲染往往极依赖贴图,像一R些优秀的CG都“无图不欢”甚至“无图不成”,所以贴图的质量是十分重要的!Renderman的优化算法堪称第一!为什么?它用了先进的改良式B-spline(B样条)算法,克服了许多贴图变形的问题,尤其是在同等元面由于镜头焦距不一引起的走样(因为软件常常假设同一元面在画面上的分辨率是一样的,就导致当镜头对准元面中心,而元面两极z值直差超过了MipMap或Liner的极限,z值小的部分和z值大的部分之间的区域过度产生严重走样,MR2用z值细分元面解决了问题,但造成了运算量的不必要增加)。在渲染器多如牛毛的今天,很多标榜光能传递的软件都忽略了贴图算法的重要性,片面的加强实际上专业用户并不需要的功能,舍本逐末。也是因为如此,使用最原始的Scanliner的Renderman在今天能稳稳地坐在电影制作的第一把交椅上。    贴图是渲染里一个复杂的大系,它包括原始图象的处理、合成,与几何物体坐标的互换,过程化的贴图以及过渡性的贴图(PhotonMap和ShadowMap等)。贴图也参加几何变换(Displacement),灯光的定义(VolumeShader)以及镜头特效。  Max向渲染器提供了贴图的原始处理,可以让渲染器直接使用它的输出而专心于画面的质量,它包括了图形学里的4X3种贴图投射方式:(平面、圆柱体、立方体、球面)~(表面向量、景物中心、中介面法向量)。其实真正有用只有:平面~中介面法向量、圆柱体~中介面法向量、立方体~中介面法向量、球面~景物中心、立方体~景物中心。所以不要盲目选择贴图方式。详细的贴图方式指引请参考《计算机真实感图形的算法基础》。Maya的贴图分为Normal和Project(Stencil不在贴图方式的讨论之列),也就是UV和以上的四种贴图表面(平面、圆柱体、立方体、球面),当然,它还包含了衍生出来的三角平面和摄象机平面。   Renderman提供了更详细的贴图方案,但对普通用户有用的只有ST(就是UV)和MayaUV(还是UV)。因为在Renderman里面要精确控制贴图必须写Expression。

所谓的UV,就是指曲面坐标。在我们看来,空间是三维的(用三个分量表示一个向量),而在曲面上看来,空间是二维的,如地图上的经度和纬度一样。要指出曲面上的一点,就要用向量v(u,v)表示。而贴图则是平面的,要影射到空间的元面上必须用一种贴图影射(就是以上讨论的几种):在曲面坐标上P(u,v)可以转换成贴图坐标T(s,t),就是若曲面S(u[0,1],v[0,1])那贴图就是T(s[0,Tmax_x],t[0,Tmax_y]),然后求屏幕坐标E=Sp(u,v)=S’(u,v)=T(s,t),得到屏幕的颜色为F(T(s,t)),F为加工的过程。在max中选择的贴图方式就是S’。  这就是贴图在渲染器内的工作方式。
  贴图的合成主要是Renderman的结点式思想,这点在Maya中的已经得到体现,相信我不用在讨论。但结点式Shader并不是Maya第一个使用,早在1984年,Cook(著名图形学家,提出了著名的Cook-Torrance光谱光照模型)就提出了左右结点的Shanding language。最初,Renderman就是这一思想的实验产物,可以说Shading language导致了Renderman的诞生。所以Renderman的贴图处理能力可以说是Renderman的看家本领了。
  贴图的反走样:主要的方法有Liner(一次)、Quadric(二次)、Gaussian(高斯)、MipMap等。其中MidMap应用最广泛,从OpenGL到DirectX到MayaRenderer到Renderman的Script都可以看到它的身影。所以我们主要讨论MidMap(其他的请“望文生义”吧)。  MidMap的工作方式是在内存中建立一张比源文件还要大的正方形查找表,也就是N X N的数组。大多少?例如:一张TIFF(256 X 256 X 24bit NoAlpha)的贴图,MidMap将打开一个(512X512)+1的数组。其排列为(用图形比较清楚):---------------------------------------------| | || | || | || R | G || | || | |---------------------------------------------| | | || R | G | || | | ||--------------------| B || R | G | | ||---------| B | || X | B | | |---------------------------------------------

使用的时候计算在匹配的分辨率下应使用哪一张Map。如此可见MidMap是一种的速度和质量可以达到最平衡的算法。所以Maya以MidMap为缺省方式。
发表于 2004-3-20 20:41:10 | 显示全部楼层
不错啊~~
发表于 2004-3-29 14:48:55 | 显示全部楼层
要在实践中提高!!
发表于 2004-4-10 17:44:01 | 显示全部楼层
MAX6新集成的Mental ray也很不错。和MAX结合的很好,不输给XSI。不过可惜我还没有认真的去学。
发表于 2004-4-10 17:51:38 | 显示全部楼层
以下是引用三藏在2004-4-10 17:44:01的发言:
MAX6新集成的Mental ray也很不错。和MAX结合的很好,不输给XSI。不过可惜我还没有认真的去学。
学会了写教程!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2024-11-23 23:59

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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