【知识帖】【转】Vray多年经验总结
这两天对vray进行了一次个人总结,有些是感想,有些是经验,有兴趣的朋友可以看看。——适合才接触vray不是很久的朋友参考用,如果是熟手肯定要说我废话太多了
首先声明,本文没有权威性,完全是个人见解,仅供参考。希望大家多多指正,一起讨论。
内容:
vray:全局光照
vray:irradiance map光照图
vray: Image Sampler图相采样系统
vray:VrayMtl材质
vray:vraylight面光
vray: others其他
vray:新一代渲染器带来的渲染革命
Vray:The Last Stand
用了vray有很长时间,至少已经长到觉得腻味了。
总是希望能有一天真的可以脱离这个奇怪的圈套,犹豫中间,记录一些或许值得纪念的技术和感悟。
全局光:vray
大概是5之后,max把全局照明的概念正式引入,记得那个时候我才从业不久,很欣喜地发现max5的新功能:lighttracer和radiosity。据说Radiosity就是从autodesk Viz里引入的,的确比较适合室内渲染使用。
这对于那时对lightscape深恶痛绝的我来说自然是莫大的光明,之后在我的号召与诱惑下,公司也用这个出过不少的一批图,但随着使用的深入也就弊端显现,最后大家一致认同:这东西不能和ls比……
那是一个困惑阶段,不少朋友向我们介绍finalRender,Brizil,甚至放弃max改用lightwave…… 最后我们选择了Vray,若干年后回头看看,深感这个抉择的正确,然而其实这似乎更是个必然……
为什么使用全局照明?很简单,图省事。我们都知道,一束光照在镜子上面会被反射到对面的墙上,同样,照在墙上的光也会被反射到周围的墙上,所以,白天我们不用开灯屋子也是亮堂堂的。这个与max的情况不同(max 里简单用一个模拟太阳的灯是无论如何也不能把整个屋子都照亮的,除非你认为太阳可以没有影子……)。
在全局照明(GI)出现之前,我们只能通过添加那些现实中不应存在的照明因素来弥补这个不足。比如阳光从窗外照进来落在地上,然后我们就在地上方一个灯朝向地面应该反射阳光的方向,当然现实里地面反射到屋顶 和周围的墙上,屋顶和周围的墙还要再反射到互相上,然后再反射……这样反来反去真的没有结果了,不过经验证明,一般模拟一到两次反射就能欺骗我们的视觉了……
vray的全局照明系统就是解决这个麻烦的,vray告诉我们:你就放一个太阳好了,反射来反射去照亮屋子的事我来搞定 上面说的内容似乎太基础了,好的,我打算插进来一些不光为人知的事: ——你知道怎么才能计算出镜子反光的效果吗?试试看,用vray的GI是不行的,vray的GI只能解决粗糙表面对光线的漫反射,它没有镜子与非镜子的区别。
——正确的方法是使用vray的焦散Causticcs。
好了,下面纠正一个错误。
我们F10打开vray渲染面板。你知道为什么Indirect illumination被缩写成后面的GI吗?
我觉得是个错误。 GI,应该是global illumination的缩写,含义为全局照明。而indirect illumination的含义是间接照明(II。 间接照明才是我上面说的对光的反射的模拟计算。而GI其实是我们平常意义上的天光,我们的窗子朝北没有阳光直接射进来屋子也不会漆黑一片,哪里来的光线?天空反射(并折射……)了阳光转进我们屋子的。
这个意义上说GI只是间接照明的一种。但只是现实中是这样的……
好了,这样说来上面我1,2两段中的全局照明都应该换成间接照明才对了。 很多渲染器的GI,或者说天光啦都和现实原理不同。渲染器的天光(CG天光)都是天真的发光……这话够别扭……不是太阳照的。大致相当于天上挂满了灯一起往下照耀你的小房子,其中最最亮的一个就是太阳……
早期模拟天光的方法就是先创建一个大的半球作为天空,然后再这个半球上布置很多spot light,所有灯的目标都指向球心,因为你的小房子就应该在那里……
以前有几个max脚本做这个,比如当时大概因为被水晶石使用而出名的Elight…… vray之所以后来很盛行,而Finalrender,brizil什么的都没获得如此的广泛认同,获胜就在间接光计算的速度上。它的间接光和天光都是最快的(前提是达到可接受的效果)。
记得当时我很痴迷fr,也曾经着实花心思研究,不过总是很难既去掉阴影部分的糊点又让渲染速度可以接受(最初fr的反锯齿真的超慢,后来升级就全换掉了)。 vray人人称道的就是,快,而且不出斑……
【vray:irradiance map 】
你有仔细研究vray的GI计算几种不同方式吗?vray把光的反射计算分为两次,阳光从窗口照进来落到地面,这个不算间接照明。地面反光到天花和墙,这个算第一次反射(primary bounces)。光在从天花和墙反射开来 以及之后算第二次(secondary)。每次都有几种不同的算法可选irradiance map/photon map/quasi-monte carlo/light cache。他们有着不同的优缺点和适用类型。(看到过网上一份官方手册有详尽对比并配了图 例说明,过后我发连接,如果还能找到……) 一般第一次用irradiance map,第二次用quasi或者lightcache。 哦,quasi-monto~就是什么门特卡罗之类的,fr也有这个,lightwave也有这个,似乎很通用……
我下面多说一下irradiance map这个方法。
先说所谓的间接光是怎么计算的呢?
表面看来是两种方法:细分模型表面或者在表面上设置采样点然后再想办法模糊采样点之间的表面(从根本上说就是需要确定反射光计算的 单位面积的分割方法,直接割开还是只确定一个面积中心点),vray的irradiance是采样算法(其他方式不很确定),ls和max的radiosity是细分算法。 ——另外记得一份科学资料上说vray的最根本算法和ls一致,是什么空间二次元~太专业了,不敢乱说了……
irradiance map在计算完成后不但可以单独保存,而且可以再次调用,而而且可以打开察看甚至把两张map合到一起。这个可能不是大家都知道的。 vray官方提供了一个专门用来察看与合并irradiance map的小程序imapviewer,稍候我发上来。 假设我已经发上来你也已经下载到了正在查看一张自己渲的imap,你肯定会发现,vray只是对camera照相机看到的模型表面进行了采样!为什么不是全部?背面就不参加计算了?实际是参加计算的,那个计算过程在采样 之前完成的,大概就是什么空间二次元……哈哈,反正我不清楚。
好了,我们关心一下这个情况的实际价值。我们知道ls或者radiosity计算完间接光后可以渲染任何一个角度的相机而不需要重新计算,而vray就不行,你硬换个相机而坚持调原来的imap计算就会出斑,就出在你原来看 不到而这次看到的地方,因为那里没采样…… 怎么解决这个问题呢?完全不重新计算是不可能的,不过可以只计算新相机相对于原相机多看到的部分。如果你已经计算了一个角度的imap而现在要稍微换一个角度渲染一张图,那么请勾选singgleframe 下面的 mutiframs incremental(多帧增量),这样你会块不少。 不要因为这点麻烦埋怨vray,要这样想,不是vray麻烦,而是ls傻浪费了你的时间:如果只出一张图你算背面干什么啊?
好了,我们继续进一步研究如何更好的利用vray的这个特点。 vray的imap是可以合并叠加的,假如我们要做一个产品的动画,我们需要镜头围绕产品旋转一周,换个说法我们要渲染产品周围一圈的n个相机画面。多帧增量是一个方式,另外一个也许是更好的方式是我们能不能像制 作效果图那样,先计算光照文件然后再调用光照算动画呢?可以的,我们只要先把一圈相机的光照都算好然后叠加到一起就可以了,呵呵,想象看,我们真的需要去计算那么多个相机的光照吗?我们知道只要看到过的地 方就有采样就不会出错,而假设这个产品是个小皮球,那么一周360度,我们合理安排3个相机每个120度就够了,也就是说只要算三张imap! 当然你不大会围着一个小球转,实际需要的也总比3张多,具体情况也可能不是转而是飞,但原则是保证动画的每一帧看到的都已经在你的imap里采样过了。
好了,现实操作的流程一般是:先每隔n帧计算一帧完成整个动画的光照计算(common面板every Nth frame),n的大小一般由动画中相机的运动幅度决定,幅度越大n越小,计算越密集,vray的irradiace map设置 incremental to current map,下面auto save设置路径,可以勾选上面global stwich的don't render final~(只算光照不算图)。完成计算后,改成from file……记得把隔n帧改回来……
个人认为上面这个方法比简单增量渲染更有优势,可以确保动画阴影部分不闪烁。
好了,我们顺便谈谈动画渲染的闪烁的问题。 最早vray版本渲动画闪是个头疼得事,那时候主要是背景闪,不同角度背景颜色渲出来颜色不一样……不过后来确定是搞软件破解的没做好本职工作:)……这个不能列入问题研究。 真正的闪有两种情况,一是静态场景闪,二是动态场景闪。 静态场景(除了相机动其他都不动)如果不采用上面说过的先算光照的方法都有可能闪,尤其是使用了single单帧计算方式不闪的可能不大。为什么闪?vray的irradiancemap采样是随机的,每次采的都有些不同, single就是每帧都完全重新采样,当然会有不少采样不同也就导致最终画面的不一致(尤其是细节上)。
这里要补充一句,上段所说的先算光照的方法只适用于静态场景。
动态场景闪(有物体有动画的,比如车子从陆上开过)。这个问题几乎是无法真正解决的,因为vray的imap只能是静态的,更深入说imap的采样是相对于相机存在的,而不是真的跟模型表面结合在一起可以一起动画的。 这个大家放心,vray做不到,其他渲染器也做不到(fr的stage2宣称做到了,似乎是计算的过程中对每个物体进行独立分析,不过说实话,它做到了你也做不到,那速度慢的要死)。
那么我们还是要渲染动态场景的,我们有没有其他的办法呢?
最简单的方法就是使用single模式渲染,不是说single闪吗?闪是因为采样不同。
举个例子,盘子里放三粒豆子,随便哪粒位置动一下都很显眼,明显改变盘内的布局,然而,盘里如果放满了豆子,即使全部位置都有互 相调换移动,整个盘内的布局也还是看上去类似。
同理,使用单帧single同时使用较高的参数(medium animate或high animate)渲染出来的结果也几乎是看不出闪的(极小的细节闪动是难免的)。 这个情况下vray的速度优势就明显发挥作用了,一般情况vray还是可以靠速度弥补这个闪的问题的(fr好像还不行……)
好了,如果是特殊情况,还是太慢怎么办? vray的官方还提供了另外一个不广为人知的技巧:把动态场景分开渲染。
大致的流程是下面这样的:先把有动画的物体隐藏(小汽车),进行渲染(建议你使用上面提到的先计算光照的方法)。然后拿出小汽车,(可以闪掉一些对小汽车没什么影响的物体,比如两条街后的垃圾桶:),然后 创建一个max的helper/atmosphric~/sphereGizmo(可以勾选hemishoere),使它能够罩住小汽车及在路上的阴影,然后把它连接到小汽车上,然后键盘8打开envriomen面板,stmoshpere/add添加vrayspherefade特 效,pick刚才的sphereGizmo,然后渲染,这样就可以只对球形帮助物体包含的小汽车附近内容进行局部渲染了,完成这个渲染后把它与前面渲染的静态场景动画在后期内合成。 为什么搞得这么复杂而不是用matte/shadow材质呢?因为vray不支持这个材质…… 为什么不使用vray 属性的matte propties?(选中物体,右键,vray properties,matte properties栏alpha~改为0,该物体将不参与alpha通道计算),vray不能把投影通道留出,更不能留出间接光投影效果。
至少我还不知道方法…… 上面这样的麻烦做法,主要是为了获得道路与汽车之间的一些互相光照影响和投影。 当然,如果这样的速度你觉得还是不能接受,那么你可以参考我给你提供的下面方法:首先,用phtoshop画一个汽车的阴影,把它贴到一个plane上,放到车下面合适位置,右键max属性中去除产生和接受阴影,右键vray 属性中取消visible to GI(参与全局光照计算)选项,调整材质的透明等属性使它渲出来比较像影子,并且透明通道alpha上也正常,如果你不介意分开渲,那么单独渲染车与plane和地面(修改vray 属性的matte属性 的alpha为0),然后后期合成,如果你希望不分开渲,一次到位,那么你需要单独为汽车设置灯光照明,然后修改属性使它也不参照全局光照……
【vray:VrayMtl材质】
vray的材质实质就这么一个,这种简单划一的作风,在渲染界真不知道是一种进步还是一种倒退现象……(当时喜欢fr的最大原因就是它的开放性,不但保留了max材质的原有属性,而且更加开放,而且自身就带有很多模板,在加上后来的finalshaders……vray为什么这样?)
且不说这个,我们先看一下现实的状况吧。现实中我们所见的世界其实可以简单看作物体(灯光也是物体其实)之间的折射与反射,如果我们单独关注材质的话,那么就是研究物体的反射与折射属性。
这个基本上就是vray材质的出发点。那么以前max的那些高光度,高光级什么的有怎么回事呢?
简单的说就是为模拟现实而作假。
我们认真观察面前的显示器外壳你就会发现上面高光部分的奥秘:并不是物体本身有什么高光而是物体反射到了周边明亮的物体而产生亮点,那些高光点其实就是在物体反射中的灯光或明亮物体。所谓的高光范围(光点的大小),其实只是物体表面的粗糙程度,从大处看可以说是材质的不同,但是到微观上看只是结构的不同罢了。表面粗糙(不是那种砂岩样才能说粗糙,比如纸业是粗糙的)的物体高光部分都比较大,原因是粗糙表面会把反射发散,方向性差,强度也就差;而光滑的表面(比如金属甚至镜面)高光部就比较小,但是很集中,当你转到某些角度,你就看到镜面里有盏明亮的灯了,那就是它的高光:)当然,这个只是相对的,灯大高光也会大,灯近也会大……有点像废话了……
好了,我们来看vrayMtl材质,其中refelction一框中的参数就是来解决这些情况的。reclt后面的色块指示反射强度,白色最强,黑色没反射。也可以用有色彩的,不过我觉得现实里面好像没有这个情况,也就不用。下面的refl glossnise就是说表面光滑度的,1就是全光滑镜面一样,类似的说,这个参数决定着所谓的高光的区域大小,而上面的强度决定了高光的亮度。下面的subdiv是算法参数,可以当作是粗糙反射的精度,越是表面凹凸细小的(如皮革比磨沙玻璃细小)需要的精度越高,精度低就会像砂岩一样有noise。再下面的use interpolation是说可以采用一种插值计算的方法加速,类似irrdiance map的算法,也是在imap前计算,因为默认设置就是high,所以总是仿佛要多跑好多遍光照,速度也不快。在vrayMtl下面有reflection interpolation栏是针对这个插值的,修改min和max值就能提速不少了。
但是由于种种原因,使用粗糙反射(平时我们叫模糊反射,因为看起来模糊,除非是砂岩……)的速度还是不够理想。我这里有几个作假的方法。
首先是vray自己提供的作假高光的方法。在较新版本的vray中,vrayMtl的refection下有一个hilight glossiness(默认灰色不可用),按起它后面的L按钮(lock,把假的锁定,用下面真的算法)后可用,这个参数也是控制高光区域大小的,不过比较像max材质的假高光,没有模糊的效果,强度仍然用上面的反射色块,如果你对这个要求不高,可以用它产生高光。
其次,我向大家隆重介绍一个fresnel的概念,非涅尔反射模式。我平常称菲涅尔反射作侧反射(没有任何科学依据,侧比较好打),侧反射的特点就是表面越是侧对着反射越强(表面与视线的夹角小),越是正对着反射越是弱(垂直视线)。这的确是现实存在的,大理石地板,你低头看自己的反射并不很强,而远处人的倒影却很清晰,玻璃也有这个情况(主要是受折射影响),一些光滑度稍低一些的(塑料,木面)这类现象也比较明显。好了,如果你觉得你的材质有这个属性,你就打这个勾吧~(大多数时候是个不错的选择,而且明显加速模糊反射的速度,计算量少了阿……)。在fresnel后面又有一个L锁,锁住下面的frenel IOR(折射率),虽然只有玻璃等物体有反射率属性,但是的确这个frenel IOR的确对侧反射的强度有着很明显的影响,大致是控制强度受角度变化影响比例曲线率的。锁定的状态下使用下面折射栏的IOR,1.6。也许有时候你希望打开锁,把它改到2,3,8,或者更高。
还有一种方法模拟模糊反射,就是参照现实实行。模糊是因为表面不光滑,为什么不在bump通道上加点小noise?事实证明是可行的,进一步引申,可以在relect色块后面的铁图通道上做手脚甚至在hiligh glossesness贴图通道上加noise……关于frenel,max中怎么制作这个效果呢?用fall off吧,在falloff贴图下面的下拉栏你可以看到熟悉的frenel字样,就是它。用这样的falloff贴图去mask一个raytrace贴图,效果是一致的。另外max的raytrace材质也有frenel模式,reflect后面有个小圈,多点几下你就会看到……好了,下面说一些关于折射方面的,vrayMtl把折射分成简单的refraction和半透明tranclucensy(用于制作次表面散射,类似皮肤蜡烛一类的材质)。vrayMtl的折射参数类似反射参数,没什么特别,半透明参数个人基本没有用到过,也不甚清楚。要提到一点就是,vrayMtl对于灯光来说是不透明的而且是双面的,开了折射也不会有透明投影。
以前在vrayMtl下获得投影似乎是不可能的,只能用standard标准材质制作,后来vrayMtl下面的map栏多了一个opacity透明贴图栏,与max的透明贴图栏一样效果,不过在上面basic基本参数栏没有对应按钮,同样没有对应的还有环境enviroment环境栏(贴反射用啊)。然后vrayMtl还有一个BRDF栏,其中有一些max材质类似的选项,可以通过右面一些参数制造异向高光(弧形高光)。
vray的材质不断的还添加了一些其他的类型。下面列举一些。vrayMtlwrapper,vray包裹材质。
类似把vray右键属性搬到材质上来。比如generete Gi产生全局照明强度倍增(光照到桌面上,让桌面自己决定反射多少光出去……),recevie GI(桌面要把光反射到墙面,墙面自己决定接受其中的多少……)。还有一些焦散caustics和matte属性。vrayLightMtl,vray灯光照明材质,如果你要做一个有体积的发光体,比如日光灯管……(max那些light都是没有体积的阿,就是一个点在放光……),你先做好一个灯管的模型,然后给它这个材质,渲染时候开GI,它就可以照明周围物体了……不过这个材质并非好的选择:你的日光灯就没有玻璃该有的反射了,成了平平的自发光物体了。
建议使用stand标准材质给自发光属性,不要给满,或者个给falloff类的发光贴图,然后高光什么的都可以用,反射可以用vraymap(raytrace不支持)。vray2side材质,简单双面材质,比如书页。vrayBmpFilter贴图,不是很清楚其存在的理由……vrayComTextrue贴图,用不同方式混合两张贴图,可以理解一下photoshop合成原理vrayEdgesTextrue贴图,vray线框材质,优点是可以选择渲染隐藏边,max的不可以(vray也不支持)vrayFastSSS贴图,快速次表面散射,很少用。vraymap贴图,vray里替换raytrace的反射,可惜不支持frenel但支持模糊反射。vraysky贴图,和vraysun都是新出来的东西,用于模拟天光的,不是很清楚。
下面说漏掉的一个vrayDirt。vray终于忍不住加入了这个东西。dirt脏材质是很普遍存在于很多渲染器的,mentalray,renderman,……它的主要用途是用于制作envirment occlusion(环境闭塞?)通道的,许多老牌的渲染器以前并没有全局光的概念,或者有了也不受到推崇使用,比较普遍的模拟全局光方式之一就是使用occlusion的方法计算物体之间的相互影响,远离是根据一定的半径测算模型表面周围是否有其他的表面对应,周围对应的面越多它就越黑(被挡住光了阿),越少越亮,当然具体算法也大多是类似光线追踪方法。它的优点是速度比较快,细节比较好,当然现在vray天光速度也够快,细节也差不多够用,但最后还是推出了这个材质。
天光vsOcclusion,这两个是完全不同的概念,天光是天真的发光……Occlusion确是谁也不发光,明暗完全是按照简单的距离测算的,两个物体,挨的近的面就都暗,挨的远的就不暗,挨不着的就亮……
Occlusion只是一个选择,它的最大缺点是没有色彩扩散,corlor bleeding,就是说,两块板放在一起,红色黑色都没关系,occlusion计算的明暗和这个没有关系,而vray的GI就可以比较正确的计算色彩扩散。说道色彩扩散,顺便讲到另外漏掉的一个材质,vrayGiMtl,vray全局光照材质。在它以前vray是很难控制色彩扩散的,比如一个房间有一面积很大的红色墙,那么整个屋子都会泛红,这是没办法改变的,除非先把它改成白色算光照然后再改回来红色渲染成图。这不解决根本问题(fr很早就有这个控制了)。而vrayGiMtl解决了这个问题很可能解决了更多。Gi材质允许我们在计算间接照明的时候使用A(如上面的白色材质)而在最后渲染图像的时候使用B(上面的红色墙面)。vrayGIMtl出现后不久,fr也迅速跟进了这一成果,其实,这只是一个创意的价值,按实际估计不会有什么技术含量的。最后说说vray和max材质之间的问题,raytrace,所有和raytrace相关的东西vray都不支持,投影,反射……代以vrayshadow,vraymap……糟糕的是材质转换,vray右键菜单vray scense convert可以把max材质转换成vray材质,但是过得来回不去……
这里有一个脚本可以返回去(也可以有选择的转过来)。安装后在customize/customize Use Interface/里可以看到vrayMtlconvert v2.0,在toolbar标签页new一个按钮条,把vray~2.0拉到上面……是一张点阵图(位图bmp),如何解决每个点该对应3d场景中哪些内容就成为一个问题,并不是我们从cam每个像素放射出一条射线撞倒什么内容这么简单,因为许多时候这条射线可能在3d场景装到很多内容,或者说,场景内许多内容(不仅是模型体)的体积都小于这条射线的粗度。像素采样就是要解决这个问题的,像素与场景内容的对应精度。vray提供了三种不同的图像采样方式,一种是不进行优化的直接算法fixed rate修正率,我把它简单理解成每像素发射n条射线向场景,这个n是个正平方数,subdivis为1就是每像素发1条(大概是没有粗度的),sub2就是2乘2条,……没有马虎,每个像素都是n条;这样的结果有好有坏,一个值得注意的好的结果就是每像素的精度一样,整个图片的精度一样(maxwell的图像效果比vray好,个人认为关键就是这点,当然它不是每个像素相同,而是区域精度相同),比较明显的缺点是没有优化,对于许多对应场景内容很简单的像素作了过多的计算,还有一个就是不能用负数,就是说不能每4个像素放射一条射线……
当你需要最快的预览时候可能需要这么做……个人认为vray最初成功的最大原因之一就是快速的图像采样系统,fr最初的图像采样系统实在是慢的不能同日而语。
记得vray 最初的另外两个图像采样的系统也与现在的不同,有个2-pass样的,后来fr也很快跟进用了这个……现在vray的另外两个采样系统都是属于优化算法,就是会去判断哪些像素对应的场景内容比较多,从而发射更多的射线去计算这些复杂像素,这样就比较容易理解了,所谓min什么就是最少发射射线数,max就是最多,adaptive subdivision可以用负数了,-1就是每4像素发一条,-2就是每16像素发一条……这两个算法上有着很多区别,我们重要的是关注他们的实用意义。QMC适用于那些高细节内容的场景,如果你的场景近景有很细腻的贴图或者模糊反射(下面会再次说这个)或者用了vrayfur毛发,强烈推荐你用这个。
【subdivision】有着进一步进行优化的复杂的算法,适用于一般的场景一般的成图质量,优点就是速度明显比QMC快,min默认-1,如果你需要更快,可以改成-2……个人建议渲染最后成图用QMC,测试预览用Subdivision或者fixed。
好了,大家可能同时注意到下面还有antialiasing filter反失真过滤。
下拉菜单有很多内容,和max原来的一样,是一种图像过滤程序,但是不同于photoshop的是它是基于上面采样后的子像素(根据每个像素细分后发射的射线)计算的,更精确的多。如果要比较清晰锐利的效果建议使用cutmull-rom,如果渲染用于电视的动画建议用area,cutmull有时候在动画上会有边缘闪烁,如果你觉得area的静帧拿不出手可以photoshop里sharp一下……
【vray: color mapping】
vray的Exposure control曝光控制max的曝光控制(键盘8)是跟着全局光系统一起出来的。其实这个所谓的曝光控制似乎与现实摄影的概念很不同,个人觉得它实际上是对场景光照与渲染色彩空间的一个mapping覆盖计算,它决定着光照效果最后我们看起来什么样。这个看起来好像是个很关键的角色,对的,的确很关键,即使以前你可能没注意过这个。我们做个简单的试验,用max线扫描渲染。建立一个plane,给一个默认的灰色材质。在上方放一个omni灯光(不要太高),omni的mutiplier设置10,颜色设置半红色(hsv255 150 255),渲染,你会看到接近omni的区域曝成白色,而且周边出现一个奇怪的半红光环。
然后我们打开enviroment环境面板,把exposure~选择下拉菜单的linear~线性曝光,然后再渲染,这次中央的白色曝光部分变暗了,光环还在,看上去更加奇怪。因为max把照明亮度大于1的部分简单处理成白色,所以第一次出现很大的光斑,而linear曝光只是把实际的照明亮度范围(这个范围允许超过1亮度)进行缩放到0和1之间,结果是图像柔和一些,没有了大的白色曝光区域(max手册提到linear不能用于动画,会闪……)。
好了,然后我们改为logarithmic~对数曝光控制,渲染,这次结果柔和多了,看上去比较理想。 vray没有对数曝光控制而使用Exponential指数曝光控制。上面说到的只是强调一下曝光控制的概念和重要性,max的曝光控制和vray的还是有很大区别的。
vray到目前提供了5种控制方式,Linear multiply,线性倍增,基于照明亮度简单的缩放图像色彩的亮度。超过亮度范围的部分被忽略处理成白色,会出光斑。Exponential,指数,基于照明亮度调节图像的饱和度,不会损失过度照明部分,但最终图片会有些灰暗。 HSV模式,这种模式会保护色调和饱和度不流失,它认为红色再亮也不会变成白色。另外intesity和gamma两种模式都是新出来的,还没找到资料……
个人经验是lnear的效果比较好,但是灯光控制不好会有曝掉的危险(建议渲染一个diffuse通道预备补救用),另外exponential也是个不错的选择,虽然渲出来比较灰暗,但是亮度层次完正,对后期制作比较有利(建议使用vray framebuffer作测试渲染,可以临时调整预期最后效果,如果做效果图可以调整几个不同的版本后期合成或者参考使用)。
【vray:vraylight。】
vray面光。
vray似乎支持大部分max的灯光(skylight和IESsky不支持)。vray有自己类型的灯光系统,但light物体创建栏只有vraylight一种类型(新的版本有vraysun,似乎不怎么实用)。又是一个通吃的做法。
vray的灯光系统和max的区别就在于是否面光。
现实世界所有光源都是有体积的,体积灯光主要表现在范围照明和柔和投影。而max的标准灯光都是没有体积的(photomeric似乎有几种有体积的,其实阴影并不是按体积计算的,需要使用area投影,但是我们知道,area投影只是对面光的一种模拟……其实本质还是点光,vray也基本支持这类情况的灯光,但是在模糊反射的高光上仍是一个圆点)。
vraylight可以创建平面光plane半球体积光dome(新的版本可以对dome使用贴图文件控制,比如贴一个360度他就变成了天光……)和球面光shpere(为什么没有圆柱日光灯管?)vraylight可以双面发射doubleside,可以在渲染图像上不可见invisible,可以更加均匀的向四周发散ignore light normal(忽略灯光法线方向,如果不忽略会在法线方向发射更多的光线,plane模式才看得出,许多时候忽略比较接近现实情况。),可以没有灯光衰减no decay(默认强度是30……不衰减用1,和max灯光差不多对待。这个衰减是以平方数递减的,很厉害,虽然现实近乎这样,但一般情况还是不衰的好……)。
一个有趣的选项skylight portal(天光入口)。
前面忘记介绍vray天光如何生成了,这里补上。
在vray的渲染面板有enviroment栏,其中就有gi(enviroment)一项,勾选overrid max's超越max自身环境设定(在键盘8环境面板)。但并不是真的超越,只是第一次发光使用了这个超越的设定,接下来的物体和背景之间的间接光反射计算仍然使用max自己的设定(天光就是天真的发光,发完了就完了。),如果我们不勾选这个override,那么就先使用max的环境发光然后继续使用它参加间接光计算。好了,回到skylightportal天光入口上来,如果你做一个房间,只有一扇窗,那么是不是一定要计算房子外面的光照呢?明显没这个必要,我们只要计算从窗户进来的那部分,窗子就是天光入口。勾选这个选项后,vraylight的灯光色彩和强度(multi)就不起作用了,而是使用环境的颜色强度(override有强度)设定。
明显理论上在窗口放一个这样的面光比不放而直接使用天光渲染速度要快,当然由于自身的细分算法原因效果并不是很明显,但是值得推荐使用。
store with imap 存储到imap一起。把间接光的计算结果存到imap里面去备用,明显是个好建议,可以提速不少,但是也明显受到imap精度的制约,如果imap计算参数比较高,那么还是可以使用的,另外一个问题就是这样会导致物体间接触的边角可能有漏光现象,这个情况似乎可以勾选渲染面板irradiance map栏check sameple visibility检查采样的可见性得到解决。smooth surface shadow光滑表面阴影,说是用来避免低面数多边形的阴影斑点,而且说现在的版本(1.47.03)这个东西有点问题……
其它参数比较简单,subdvis控制计算精度,低了会出nosie颗粒。其实vray的灯光内容远不止上面介绍的那一个。更值得大家重视的就是使用自发光材质的物体真的会发光照明。
使用模型体本身照明是个很聪明的办法,这样光源就远不止上面三种类型,用圆柱体作日光灯管,当然甚至你可以做一个猴子样的灯……(如果你用maxwell渲染器右找不到怎么做灯光,那么用材质吧,它完全不用max的灯光,就算太阳你都得真的作个球挂在天上……)。
这很可能是将来的一个大趋势。
另外需要提到,vray的全局光计算速度受灯光数目影响十分大,灯越多越慢,做个夜景餐厅肯定比日景慢很多。但是,发光体的数目对速度影响就不大,所以尽可能使用发光体而不要去使用light。比如说壁灯,你可以放一个面光vraylight,这是最慢的(面光比同样的发光片慢很多,也是灯光里最慢的),或者你简单的放个omni,快了不少,但是效果一塌糊涂,最好的做法是把壁灯的该法光的部分材质给一定的自发光(falloff是个不错的选择),这样虽然看起来不太好控制强度,但是如果是一个异性的灯或者屋子里有数十个这样的灯你就意识到方便好用了……
再次说,多用发光体,少用灯光,尽量不要用面光(虽然它效果的确不错……)
【vray: others其他】
vray还有一些其他没提到的内容,这里补充一些,并不完全。vrayHDRI,vray高动态范围图像贴图。如果你不很了解HDRI,你需要查阅一些相关资料。简单说就是带有光照信息的图像。大多用来做天光的纹理(可以贴在override enviroment里)。
最大的优点就是支持常见的HDRI样式,比如mirrball(用相机拍摄金属镜面球获得的HDRI半全景)……
VRayDisplacementMod位移修改器,用来做真正的凹凸,优点是可以使用2d算法,速度很快,3d算法也不慢。如果发现有裂缝,可以尝试下面的keep continuity保持连续选项。
vrayFur简单的毛发系统,许多属性可以用贴图控制,不错的小东西,可以考虑作地毯之类……vrayplane广阔无边的地面。
vraysphere同上,这次是天空。(这三个都在物体创建栏vray里面)vraytoon一种简单的卡通材质,在大气特效里面。
vrayproxy模型代理工具,你可以把一个物体用右键vray mesh export导出,然后再用这个代理导入。
vray frame buffer帧缓冲。每次一按渲染就跳出来的那个窗口就是max帧缓冲窗口,vray有自己的窗口,在渲染面板里打开。有很多优点,比如可以临时调解图片亮度,还可以跟着鼠标渲染,指哪打哪,很好的。缺点就是占内存……如果图大渲不出可以观掉这个试试看。
g-buffer channel G通道,各种各样的通道,漫反射,反射,折射,间接光,投影……原来这些选项在和color mapping一起,只要选中,然后再vray frame buffer里设定输出目录就好了,最新版本没有了g-buffer栏,要到max自己的render element内添加,我的总是有不少通道出错渲染不出……
vray QMC sameple ,全名Quasi Monte Carlo采样,关系到vray所有的blurry参数,模糊反射,面光,间接照明,反锯齿采样,景深,运动模糊……这里是个全局控制参数,一般不要修改,保持默认数值。
vray system系统参数。可以修改渲染块的大小,可以在渲染后打字签。值得注意的有几个关于灯光物体属性的按钮,和右键菜单一样。网络渲染也在这里。
另外,vray的日志,vray log 也在这里,如果要禁用日志(有些时候它会把你的c盘炸满……)可以把目录内容清空,它就不知道往哪里存了……
vray:新一代渲染器带来的渲染革命天光,间接照明,体积光源,真实高光,以及焦散,次表面散射,物理相机……等等这一切日臻成熟,我们的渲染工作也在无声无息的适应改进中进行着一轮革命般的变革。
说到革命,大概maxwell做的更加彻底,它声称完全模拟现实相机摄影的原理进行三维渲染,上面提到特性已经不算特别了,maxwell把一切作的更彻底:不光成像的原理力图模拟真实情况,更是脱离了其他渲染器沿用的RGB色彩空间而使用光谱计算,据说连紫外线都不放过……(顺便,maxwell可以计算真实的彩色焦散,的确独步当前)模拟真实?这就是渲染器未来的趋势?也许。但的确是现在的趋势。很老道的ls其实就是一个先行者,在最初编写的初衷并不是为了把图像渲染更好看而是为了灯光设计作参考,是个技术性工具软件,像cad……好了,这一切究竟给我们带来什么?可以确定的是:它使渲染制图的速度更慢……当然,我们的工作似乎也变得比以前更加简单了:我们在更多的时候开始提倡“单灯照明”,可能是一个几百万面的场景,但或许只要一个灯来照明……这在几年前是不可想象的……我们开始使用更加简单的材质或者甚至是更加模板化的材质,我们甚至奢望有一天我们只要输入一个红色樱桃木地板的名字就能完美实现我们的愿望……
另一方面我们比以前更有机会追求做到最好,以前的不可能现在变得可能了,只要你用心,你会发觉你几乎真的可以做一张照片出来了……这一切我们该如何去面对呢?几年前,你大概已经习惯用1-2个小时去完成一个简单日景房间的材质灯光到渲染成图,在这个时间里你会用心去分析整个场景的明暗关系和色调对比,你会为此布置十数个光源并仔细调整它们每一个的亮度阴影以及各种参数,你会几乎去对每一个重点物件的高光反射等属性作仔细的考究,最后在剩下的十分钟渲染成图。而现在,由于各种原因(主要是价格下滑和竞争激烈),你仍然还是只有1-2个小时来完成原有的工作,虽然现在你大概要预留至少1个小时作计算光照和渲染成图……当然,许多人倾向把这个工作留到夜晚或者直接给其他机器渲染……但是无可避免,以前预览渲染一次只要几十秒甚至十几秒,而现在往往是三五分钟。我见到不少人预览一次要超过十分钟,然后再用一两分钟修改一点参数然后再等十几分钟做预览……
我开玩笑对他们说:当你生命即将结束的时候你可能发现你一生中三分之二的时间都被用来等着看预览小图了……。我认为这样的方法是背离了进步的轨道的。我曾反复思考过艺术的本质,我认为艺术就是把感觉表现出来的过程。关于设计,我认为它是形成感觉的过程。如果按照上面仍然用1-2小时完成同样场景工作,那么明显,预览次数少了,设计的过程被简化缩短了。而同样可以说,艺术的过程实际也被缩短简化了。虽然说有可能生成出更写实的图像,但大部分情况是艺术水准的下降。
我们需要一种新的能力来解决这个状况。我认为最重要之一就是预见能力。
以前的渲染工作主要依靠不断测试不断调整中获得进步提高的,而现在则应该用更好的预见能力来弥补不能做更多测试的不足。从一个材质球的面貌去预见它在最终图像上的表现,从一个灯光的参数去预见间接光计算后对最后图像的影响……从当前测试小图预见一个参数调解后对整篇的影响,哪些测试渲染图上的错误不足在最后高参数渲染时会自动解决,哪些不会……作为一个好的渲染师甚至应该包括从渲染图对最后后期制作完成图的预见……当然,这种预见能力在以前也很重要,不过现在它变得更难掌握也更加关键,我个人认为,这种预见能力的好坏是一个好的渲染师的首要标准。
培养这种预见能力,一方面需要完善深入的技术掌握,更重要的则是对现实状况的研究积累:因为现在的渲染器更加多的参照现实计算了……另外一种重要能力就是统筹优化能力,尤其在测试调整阶段,统筹优化测试渲染的各种均衡从而达到高效是至关重要的:测试需要的时间,需要的质量这之间往往需要达到最好的均衡才能获得最大提升成图质量的机会。这些往往需要更多的依赖于技术,有计划的设计灯光,渲染光照,使用一些材质的高阶属性。好的建议是尽量把那些速度慢的灯光或效果留到最后,当然许多时候情况复杂的多,建议你可以考虑先用类似的方法替代它待其他调整完成后再换到原先的设置。
当然,另外一个能力就是艺术审美能力。
个人认为,即使你友好的感觉,没有上面两种能力也很难把你的感觉完好的表达出来(精力财力时间等等原因往往不给你足够的机会表达,或者说你缺乏表达的能力)好了,下面谈些实际的经验:a 什么样的流程是好的流程?个人的渲染习惯是:先把场景内所有材质转换到vray(使用右键菜单,vray sense convert,这样可以避免许多关于max材质不支持而导致的严重错误),这步很关键,强烈推荐。然后对场景内每个物体进行材质初步调整,打开场景内所有的模型组,选一个物体,吸出它的材质,通过材质球调整到接近理想状态(使用开锁的假高光,不开高级内容),然后按材质选出使用它的所有物体,隐藏,然后进行另一个……(的确很烦,但是个人认为这个是必要的)……直到场景内的物体都被隐藏了(注意多重材质)。
根据现实情况设置灯光(这个是个人习惯),比如太阳,该多高该在那个方向基本都依照现实,一般情况尽量不使用面光,如果需要先考虑用发光体替代,对于射灯往往不能靠发光体了,要打spot吧,尽量少用,如果是日景而射灯的位置并不是构图中心对整个场景估计影响也不大的完全可以先不打,留到最后再打,因为灯多了会变慢不少,争取最后测试渲染一两次就到位,另外要说就是发光槽发光带,许多时候需要做模型(如果现实那里藏了日光灯管你最好做个圆柱体藏在模型后面相同位置),多用法光体少用灯光,效果好速度快。好了,用low(hsph subdivs半球细分可以低些,20-30就可以了,interp subdivs插值细分一般保留20,低的话可能出斑。
有时也可以用very low但是体激光可能看不到效果)级别的imap设置测试渲染,保存光照。然后根据测试结果调整灯光强度和渲染参数(比如适当调整color mapping)必要的情况补光(有些时候需要改材质)。然后重新计算光照。直到光照效果基本满意,然后进一步调整重点材质,用原来的光照,千万不要再算光照,这时候材质对图像光照的影响微乎其微的……然后对灯光作最后调整,用稍高的参数计算光照,然后根据情况决定哪些地方需要使用高级效果(模糊反射甚至焦散),打开它们,进行最后测试,测试图没有明显问题(小问题改一下)就可以计算正是光照了,看看小问题如果解决了就可以正式渲染了。
——插进一点内容,如何补光?方法很多,……除了补光源之外,因为我坚持少用光源……比如说,做个日景房间,只有对面窗口进入阳光和天光,可能房间深,背面比较暗,就有很多方法解决,其一在相机后面的墙上开个门让天光进来(已经有了?那就开大点~);其二在相机后面的空地方放一个白色物体甚至发光体吧,面光效果哦;其三如果开了门还不亮可以检查一下室内有无大面积深色物体(木地板?),使用vrayGiMtl,套一个白色材质参加全局光计算吧肯定效果不一样;其四修改墙面地板或者屋顶的vray属性,加高他们的receive或者generate GI数值到1.2或者1.5或者……其五把渲染面板quasi-monte carlo的secend boundces二次反射反射加到4或者……其六把color mapping的dark mutip暗部倍增加到1,2或者……其七把gi的两次反射强度加一点……
方法这么多为什么要补灯呢?b 什么样的时间分配比较合理呢?个人认为间接光照的引入明显减轻了我们度量灯光的工作,换句话说给我们进一步深化材质以及调整构图及色彩搭配留出了更多的时间,需要注意的是,千万不要把这个时间用来等待测试渲染……个人建议最好把至少一半的时间用来做好材质和色彩搭配,另外少一半的时间做灯光和测试渲染。当然最后渲染完全不要指望用自己的时间啊,随便扔给其他机器或者留到晚上让电脑费心好了。
首先声明,本文没有权威性,完全是个人见解,仅供参考。希望大家多多指正,一起讨论。
内容:
vray:全局光照
vray:irradiance map光照图
vray: Image Sampler图相采样系统
vray:VrayMtl材质
vray:vraylight面光
vray: others其他
vray:新一代渲染器带来的渲染革命
Vray:The Last Stand
用了vray有很长时间,至少已经长到觉得腻味了。
总是希望能有一天真的可以脱离这个奇怪的圈套,犹豫中间,记录一些或许值得纪念的技术和感悟。
全局光:vray
大概是5之后,max把全局照明的概念正式引入,记得那个时候我才从业不久,很欣喜地发现max5的新功能:lighttracer和radiosity。据说Radiosity就是从autodesk Viz里引入的,的确比较适合室内渲染使用。
这对于那时对lightscape深恶痛绝的我来说自然是莫大的光明,之后在我的号召与诱惑下,公司也用这个出过不少的一批图,但随着使用的深入也就弊端显现,最后大家一致认同:这东西不能和ls比……
那是一个困惑阶段,不少朋友向我们介绍finalRender,Brizil,甚至放弃max改用lightwave…… 最后我们选择了Vray,若干年后回头看看,深感这个抉择的正确,然而其实这似乎更是个必然……
为什么使用全局照明?很简单,图省事。我们都知道,一束光照在镜子上面会被反射到对面的墙上,同样,照在墙上的光也会被反射到周围的墙上,所以,白天我们不用开灯屋子也是亮堂堂的。这个与max的情况不同(max 里简单用一个模拟太阳的灯是无论如何也不能把整个屋子都照亮的,除非你认为太阳可以没有影子……)。
在全局照明(GI)出现之前,我们只能通过添加那些现实中不应存在的照明因素来弥补这个不足。比如阳光从窗外照进来落在地上,然后我们就在地上方一个灯朝向地面应该反射阳光的方向,当然现实里地面反射到屋顶 和周围的墙上,屋顶和周围的墙还要再反射到互相上,然后再反射……这样反来反去真的没有结果了,不过经验证明,一般模拟一到两次反射就能欺骗我们的视觉了……
vray的全局照明系统就是解决这个麻烦的,vray告诉我们:你就放一个太阳好了,反射来反射去照亮屋子的事我来搞定 上面说的内容似乎太基础了,好的,我打算插进来一些不光为人知的事: ——你知道怎么才能计算出镜子反光的效果吗?试试看,用vray的GI是不行的,vray的GI只能解决粗糙表面对光线的漫反射,它没有镜子与非镜子的区别。
——正确的方法是使用vray的焦散Causticcs。
好了,下面纠正一个错误。
我们F10打开vray渲染面板。你知道为什么Indirect illumination被缩写成后面的GI吗?
我觉得是个错误。 GI,应该是global illumination的缩写,含义为全局照明。而indirect illumination的含义是间接照明(II。 间接照明才是我上面说的对光的反射的模拟计算。而GI其实是我们平常意义上的天光,我们的窗子朝北没有阳光直接射进来屋子也不会漆黑一片,哪里来的光线?天空反射(并折射……)了阳光转进我们屋子的。
这个意义上说GI只是间接照明的一种。但只是现实中是这样的……
好了,这样说来上面我1,2两段中的全局照明都应该换成间接照明才对了。 很多渲染器的GI,或者说天光啦都和现实原理不同。渲染器的天光(CG天光)都是天真的发光……这话够别扭……不是太阳照的。大致相当于天上挂满了灯一起往下照耀你的小房子,其中最最亮的一个就是太阳……
早期模拟天光的方法就是先创建一个大的半球作为天空,然后再这个半球上布置很多spot light,所有灯的目标都指向球心,因为你的小房子就应该在那里……
以前有几个max脚本做这个,比如当时大概因为被水晶石使用而出名的Elight…… vray之所以后来很盛行,而Finalrender,brizil什么的都没获得如此的广泛认同,获胜就在间接光计算的速度上。它的间接光和天光都是最快的(前提是达到可接受的效果)。
记得当时我很痴迷fr,也曾经着实花心思研究,不过总是很难既去掉阴影部分的糊点又让渲染速度可以接受(最初fr的反锯齿真的超慢,后来升级就全换掉了)。 vray人人称道的就是,快,而且不出斑……
【vray:irradiance map 】
你有仔细研究vray的GI计算几种不同方式吗?vray把光的反射计算分为两次,阳光从窗口照进来落到地面,这个不算间接照明。地面反光到天花和墙,这个算第一次反射(primary bounces)。光在从天花和墙反射开来 以及之后算第二次(secondary)。每次都有几种不同的算法可选irradiance map/photon map/quasi-monte carlo/light cache。他们有着不同的优缺点和适用类型。(看到过网上一份官方手册有详尽对比并配了图 例说明,过后我发连接,如果还能找到……) 一般第一次用irradiance map,第二次用quasi或者lightcache。 哦,quasi-monto~就是什么门特卡罗之类的,fr也有这个,lightwave也有这个,似乎很通用……
我下面多说一下irradiance map这个方法。
先说所谓的间接光是怎么计算的呢?
表面看来是两种方法:细分模型表面或者在表面上设置采样点然后再想办法模糊采样点之间的表面(从根本上说就是需要确定反射光计算的 单位面积的分割方法,直接割开还是只确定一个面积中心点),vray的irradiance是采样算法(其他方式不很确定),ls和max的radiosity是细分算法。 ——另外记得一份科学资料上说vray的最根本算法和ls一致,是什么空间二次元~太专业了,不敢乱说了……
irradiance map在计算完成后不但可以单独保存,而且可以再次调用,而而且可以打开察看甚至把两张map合到一起。这个可能不是大家都知道的。 vray官方提供了一个专门用来察看与合并irradiance map的小程序imapviewer,稍候我发上来。 假设我已经发上来你也已经下载到了正在查看一张自己渲的imap,你肯定会发现,vray只是对camera照相机看到的模型表面进行了采样!为什么不是全部?背面就不参加计算了?实际是参加计算的,那个计算过程在采样 之前完成的,大概就是什么空间二次元……哈哈,反正我不清楚。
好了,我们关心一下这个情况的实际价值。我们知道ls或者radiosity计算完间接光后可以渲染任何一个角度的相机而不需要重新计算,而vray就不行,你硬换个相机而坚持调原来的imap计算就会出斑,就出在你原来看 不到而这次看到的地方,因为那里没采样…… 怎么解决这个问题呢?完全不重新计算是不可能的,不过可以只计算新相机相对于原相机多看到的部分。如果你已经计算了一个角度的imap而现在要稍微换一个角度渲染一张图,那么请勾选singgleframe 下面的 mutiframs incremental(多帧增量),这样你会块不少。 不要因为这点麻烦埋怨vray,要这样想,不是vray麻烦,而是ls傻浪费了你的时间:如果只出一张图你算背面干什么啊?
好了,我们继续进一步研究如何更好的利用vray的这个特点。 vray的imap是可以合并叠加的,假如我们要做一个产品的动画,我们需要镜头围绕产品旋转一周,换个说法我们要渲染产品周围一圈的n个相机画面。多帧增量是一个方式,另外一个也许是更好的方式是我们能不能像制 作效果图那样,先计算光照文件然后再调用光照算动画呢?可以的,我们只要先把一圈相机的光照都算好然后叠加到一起就可以了,呵呵,想象看,我们真的需要去计算那么多个相机的光照吗?我们知道只要看到过的地 方就有采样就不会出错,而假设这个产品是个小皮球,那么一周360度,我们合理安排3个相机每个120度就够了,也就是说只要算三张imap! 当然你不大会围着一个小球转,实际需要的也总比3张多,具体情况也可能不是转而是飞,但原则是保证动画的每一帧看到的都已经在你的imap里采样过了。
好了,现实操作的流程一般是:先每隔n帧计算一帧完成整个动画的光照计算(common面板every Nth frame),n的大小一般由动画中相机的运动幅度决定,幅度越大n越小,计算越密集,vray的irradiace map设置 incremental to current map,下面auto save设置路径,可以勾选上面global stwich的don't render final~(只算光照不算图)。完成计算后,改成from file……记得把隔n帧改回来……
个人认为上面这个方法比简单增量渲染更有优势,可以确保动画阴影部分不闪烁。
好了,我们顺便谈谈动画渲染的闪烁的问题。 最早vray版本渲动画闪是个头疼得事,那时候主要是背景闪,不同角度背景颜色渲出来颜色不一样……不过后来确定是搞软件破解的没做好本职工作:)……这个不能列入问题研究。 真正的闪有两种情况,一是静态场景闪,二是动态场景闪。 静态场景(除了相机动其他都不动)如果不采用上面说过的先算光照的方法都有可能闪,尤其是使用了single单帧计算方式不闪的可能不大。为什么闪?vray的irradiancemap采样是随机的,每次采的都有些不同, single就是每帧都完全重新采样,当然会有不少采样不同也就导致最终画面的不一致(尤其是细节上)。
这里要补充一句,上段所说的先算光照的方法只适用于静态场景。
动态场景闪(有物体有动画的,比如车子从陆上开过)。这个问题几乎是无法真正解决的,因为vray的imap只能是静态的,更深入说imap的采样是相对于相机存在的,而不是真的跟模型表面结合在一起可以一起动画的。 这个大家放心,vray做不到,其他渲染器也做不到(fr的stage2宣称做到了,似乎是计算的过程中对每个物体进行独立分析,不过说实话,它做到了你也做不到,那速度慢的要死)。
那么我们还是要渲染动态场景的,我们有没有其他的办法呢?
最简单的方法就是使用single模式渲染,不是说single闪吗?闪是因为采样不同。
举个例子,盘子里放三粒豆子,随便哪粒位置动一下都很显眼,明显改变盘内的布局,然而,盘里如果放满了豆子,即使全部位置都有互 相调换移动,整个盘内的布局也还是看上去类似。
同理,使用单帧single同时使用较高的参数(medium animate或high animate)渲染出来的结果也几乎是看不出闪的(极小的细节闪动是难免的)。 这个情况下vray的速度优势就明显发挥作用了,一般情况vray还是可以靠速度弥补这个闪的问题的(fr好像还不行……)
好了,如果是特殊情况,还是太慢怎么办? vray的官方还提供了另外一个不广为人知的技巧:把动态场景分开渲染。
大致的流程是下面这样的:先把有动画的物体隐藏(小汽车),进行渲染(建议你使用上面提到的先计算光照的方法)。然后拿出小汽车,(可以闪掉一些对小汽车没什么影响的物体,比如两条街后的垃圾桶:),然后 创建一个max的helper/atmosphric~/sphereGizmo(可以勾选hemishoere),使它能够罩住小汽车及在路上的阴影,然后把它连接到小汽车上,然后键盘8打开envriomen面板,stmoshpere/add添加vrayspherefade特 效,pick刚才的sphereGizmo,然后渲染,这样就可以只对球形帮助物体包含的小汽车附近内容进行局部渲染了,完成这个渲染后把它与前面渲染的静态场景动画在后期内合成。 为什么搞得这么复杂而不是用matte/shadow材质呢?因为vray不支持这个材质…… 为什么不使用vray 属性的matte propties?(选中物体,右键,vray properties,matte properties栏alpha~改为0,该物体将不参与alpha通道计算),vray不能把投影通道留出,更不能留出间接光投影效果。
至少我还不知道方法…… 上面这样的麻烦做法,主要是为了获得道路与汽车之间的一些互相光照影响和投影。 当然,如果这样的速度你觉得还是不能接受,那么你可以参考我给你提供的下面方法:首先,用phtoshop画一个汽车的阴影,把它贴到一个plane上,放到车下面合适位置,右键max属性中去除产生和接受阴影,右键vray 属性中取消visible to GI(参与全局光照计算)选项,调整材质的透明等属性使它渲出来比较像影子,并且透明通道alpha上也正常,如果你不介意分开渲,那么单独渲染车与plane和地面(修改vray 属性的matte属性 的alpha为0),然后后期合成,如果你希望不分开渲,一次到位,那么你需要单独为汽车设置灯光照明,然后修改属性使它也不参照全局光照……
【vray:VrayMtl材质】
vray的材质实质就这么一个,这种简单划一的作风,在渲染界真不知道是一种进步还是一种倒退现象……(当时喜欢fr的最大原因就是它的开放性,不但保留了max材质的原有属性,而且更加开放,而且自身就带有很多模板,在加上后来的finalshaders……vray为什么这样?)
且不说这个,我们先看一下现实的状况吧。现实中我们所见的世界其实可以简单看作物体(灯光也是物体其实)之间的折射与反射,如果我们单独关注材质的话,那么就是研究物体的反射与折射属性。
这个基本上就是vray材质的出发点。那么以前max的那些高光度,高光级什么的有怎么回事呢?
简单的说就是为模拟现实而作假。
我们认真观察面前的显示器外壳你就会发现上面高光部分的奥秘:并不是物体本身有什么高光而是物体反射到了周边明亮的物体而产生亮点,那些高光点其实就是在物体反射中的灯光或明亮物体。所谓的高光范围(光点的大小),其实只是物体表面的粗糙程度,从大处看可以说是材质的不同,但是到微观上看只是结构的不同罢了。表面粗糙(不是那种砂岩样才能说粗糙,比如纸业是粗糙的)的物体高光部分都比较大,原因是粗糙表面会把反射发散,方向性差,强度也就差;而光滑的表面(比如金属甚至镜面)高光部就比较小,但是很集中,当你转到某些角度,你就看到镜面里有盏明亮的灯了,那就是它的高光:)当然,这个只是相对的,灯大高光也会大,灯近也会大……有点像废话了……
好了,我们来看vrayMtl材质,其中refelction一框中的参数就是来解决这些情况的。reclt后面的色块指示反射强度,白色最强,黑色没反射。也可以用有色彩的,不过我觉得现实里面好像没有这个情况,也就不用。下面的refl glossnise就是说表面光滑度的,1就是全光滑镜面一样,类似的说,这个参数决定着所谓的高光的区域大小,而上面的强度决定了高光的亮度。下面的subdiv是算法参数,可以当作是粗糙反射的精度,越是表面凹凸细小的(如皮革比磨沙玻璃细小)需要的精度越高,精度低就会像砂岩一样有noise。再下面的use interpolation是说可以采用一种插值计算的方法加速,类似irrdiance map的算法,也是在imap前计算,因为默认设置就是high,所以总是仿佛要多跑好多遍光照,速度也不快。在vrayMtl下面有reflection interpolation栏是针对这个插值的,修改min和max值就能提速不少了。
但是由于种种原因,使用粗糙反射(平时我们叫模糊反射,因为看起来模糊,除非是砂岩……)的速度还是不够理想。我这里有几个作假的方法。
首先是vray自己提供的作假高光的方法。在较新版本的vray中,vrayMtl的refection下有一个hilight glossiness(默认灰色不可用),按起它后面的L按钮(lock,把假的锁定,用下面真的算法)后可用,这个参数也是控制高光区域大小的,不过比较像max材质的假高光,没有模糊的效果,强度仍然用上面的反射色块,如果你对这个要求不高,可以用它产生高光。
其次,我向大家隆重介绍一个fresnel的概念,非涅尔反射模式。我平常称菲涅尔反射作侧反射(没有任何科学依据,侧比较好打),侧反射的特点就是表面越是侧对着反射越强(表面与视线的夹角小),越是正对着反射越是弱(垂直视线)。这的确是现实存在的,大理石地板,你低头看自己的反射并不很强,而远处人的倒影却很清晰,玻璃也有这个情况(主要是受折射影响),一些光滑度稍低一些的(塑料,木面)这类现象也比较明显。好了,如果你觉得你的材质有这个属性,你就打这个勾吧~(大多数时候是个不错的选择,而且明显加速模糊反射的速度,计算量少了阿……)。在fresnel后面又有一个L锁,锁住下面的frenel IOR(折射率),虽然只有玻璃等物体有反射率属性,但是的确这个frenel IOR的确对侧反射的强度有着很明显的影响,大致是控制强度受角度变化影响比例曲线率的。锁定的状态下使用下面折射栏的IOR,1.6。也许有时候你希望打开锁,把它改到2,3,8,或者更高。
还有一种方法模拟模糊反射,就是参照现实实行。模糊是因为表面不光滑,为什么不在bump通道上加点小noise?事实证明是可行的,进一步引申,可以在relect色块后面的铁图通道上做手脚甚至在hiligh glossesness贴图通道上加noise……关于frenel,max中怎么制作这个效果呢?用fall off吧,在falloff贴图下面的下拉栏你可以看到熟悉的frenel字样,就是它。用这样的falloff贴图去mask一个raytrace贴图,效果是一致的。另外max的raytrace材质也有frenel模式,reflect后面有个小圈,多点几下你就会看到……好了,下面说一些关于折射方面的,vrayMtl把折射分成简单的refraction和半透明tranclucensy(用于制作次表面散射,类似皮肤蜡烛一类的材质)。vrayMtl的折射参数类似反射参数,没什么特别,半透明参数个人基本没有用到过,也不甚清楚。要提到一点就是,vrayMtl对于灯光来说是不透明的而且是双面的,开了折射也不会有透明投影。
以前在vrayMtl下获得投影似乎是不可能的,只能用standard标准材质制作,后来vrayMtl下面的map栏多了一个opacity透明贴图栏,与max的透明贴图栏一样效果,不过在上面basic基本参数栏没有对应按钮,同样没有对应的还有环境enviroment环境栏(贴反射用啊)。然后vrayMtl还有一个BRDF栏,其中有一些max材质类似的选项,可以通过右面一些参数制造异向高光(弧形高光)。
vray的材质不断的还添加了一些其他的类型。下面列举一些。vrayMtlwrapper,vray包裹材质。
类似把vray右键属性搬到材质上来。比如generete Gi产生全局照明强度倍增(光照到桌面上,让桌面自己决定反射多少光出去……),recevie GI(桌面要把光反射到墙面,墙面自己决定接受其中的多少……)。还有一些焦散caustics和matte属性。vrayLightMtl,vray灯光照明材质,如果你要做一个有体积的发光体,比如日光灯管……(max那些light都是没有体积的阿,就是一个点在放光……),你先做好一个灯管的模型,然后给它这个材质,渲染时候开GI,它就可以照明周围物体了……不过这个材质并非好的选择:你的日光灯就没有玻璃该有的反射了,成了平平的自发光物体了。
建议使用stand标准材质给自发光属性,不要给满,或者个给falloff类的发光贴图,然后高光什么的都可以用,反射可以用vraymap(raytrace不支持)。vray2side材质,简单双面材质,比如书页。vrayBmpFilter贴图,不是很清楚其存在的理由……vrayComTextrue贴图,用不同方式混合两张贴图,可以理解一下photoshop合成原理vrayEdgesTextrue贴图,vray线框材质,优点是可以选择渲染隐藏边,max的不可以(vray也不支持)vrayFastSSS贴图,快速次表面散射,很少用。vraymap贴图,vray里替换raytrace的反射,可惜不支持frenel但支持模糊反射。vraysky贴图,和vraysun都是新出来的东西,用于模拟天光的,不是很清楚。
下面说漏掉的一个vrayDirt。vray终于忍不住加入了这个东西。dirt脏材质是很普遍存在于很多渲染器的,mentalray,renderman,……它的主要用途是用于制作envirment occlusion(环境闭塞?)通道的,许多老牌的渲染器以前并没有全局光的概念,或者有了也不受到推崇使用,比较普遍的模拟全局光方式之一就是使用occlusion的方法计算物体之间的相互影响,远离是根据一定的半径测算模型表面周围是否有其他的表面对应,周围对应的面越多它就越黑(被挡住光了阿),越少越亮,当然具体算法也大多是类似光线追踪方法。它的优点是速度比较快,细节比较好,当然现在vray天光速度也够快,细节也差不多够用,但最后还是推出了这个材质。
天光vsOcclusion,这两个是完全不同的概念,天光是天真的发光……Occlusion确是谁也不发光,明暗完全是按照简单的距离测算的,两个物体,挨的近的面就都暗,挨的远的就不暗,挨不着的就亮……
Occlusion只是一个选择,它的最大缺点是没有色彩扩散,corlor bleeding,就是说,两块板放在一起,红色黑色都没关系,occlusion计算的明暗和这个没有关系,而vray的GI就可以比较正确的计算色彩扩散。说道色彩扩散,顺便讲到另外漏掉的一个材质,vrayGiMtl,vray全局光照材质。在它以前vray是很难控制色彩扩散的,比如一个房间有一面积很大的红色墙,那么整个屋子都会泛红,这是没办法改变的,除非先把它改成白色算光照然后再改回来红色渲染成图。这不解决根本问题(fr很早就有这个控制了)。而vrayGiMtl解决了这个问题很可能解决了更多。Gi材质允许我们在计算间接照明的时候使用A(如上面的白色材质)而在最后渲染图像的时候使用B(上面的红色墙面)。vrayGIMtl出现后不久,fr也迅速跟进了这一成果,其实,这只是一个创意的价值,按实际估计不会有什么技术含量的。最后说说vray和max材质之间的问题,raytrace,所有和raytrace相关的东西vray都不支持,投影,反射……代以vrayshadow,vraymap……糟糕的是材质转换,vray右键菜单vray scense convert可以把max材质转换成vray材质,但是过得来回不去……
这里有一个脚本可以返回去(也可以有选择的转过来)。安装后在customize/customize Use Interface/里可以看到vrayMtlconvert v2.0,在toolbar标签页new一个按钮条,把vray~2.0拉到上面……是一张点阵图(位图bmp),如何解决每个点该对应3d场景中哪些内容就成为一个问题,并不是我们从cam每个像素放射出一条射线撞倒什么内容这么简单,因为许多时候这条射线可能在3d场景装到很多内容,或者说,场景内许多内容(不仅是模型体)的体积都小于这条射线的粗度。像素采样就是要解决这个问题的,像素与场景内容的对应精度。vray提供了三种不同的图像采样方式,一种是不进行优化的直接算法fixed rate修正率,我把它简单理解成每像素发射n条射线向场景,这个n是个正平方数,subdivis为1就是每像素发1条(大概是没有粗度的),sub2就是2乘2条,……没有马虎,每个像素都是n条;这样的结果有好有坏,一个值得注意的好的结果就是每像素的精度一样,整个图片的精度一样(maxwell的图像效果比vray好,个人认为关键就是这点,当然它不是每个像素相同,而是区域精度相同),比较明显的缺点是没有优化,对于许多对应场景内容很简单的像素作了过多的计算,还有一个就是不能用负数,就是说不能每4个像素放射一条射线……
当你需要最快的预览时候可能需要这么做……个人认为vray最初成功的最大原因之一就是快速的图像采样系统,fr最初的图像采样系统实在是慢的不能同日而语。
记得vray 最初的另外两个图像采样的系统也与现在的不同,有个2-pass样的,后来fr也很快跟进用了这个……现在vray的另外两个采样系统都是属于优化算法,就是会去判断哪些像素对应的场景内容比较多,从而发射更多的射线去计算这些复杂像素,这样就比较容易理解了,所谓min什么就是最少发射射线数,max就是最多,adaptive subdivision可以用负数了,-1就是每4像素发一条,-2就是每16像素发一条……这两个算法上有着很多区别,我们重要的是关注他们的实用意义。QMC适用于那些高细节内容的场景,如果你的场景近景有很细腻的贴图或者模糊反射(下面会再次说这个)或者用了vrayfur毛发,强烈推荐你用这个。
【subdivision】有着进一步进行优化的复杂的算法,适用于一般的场景一般的成图质量,优点就是速度明显比QMC快,min默认-1,如果你需要更快,可以改成-2……个人建议渲染最后成图用QMC,测试预览用Subdivision或者fixed。
好了,大家可能同时注意到下面还有antialiasing filter反失真过滤。
下拉菜单有很多内容,和max原来的一样,是一种图像过滤程序,但是不同于photoshop的是它是基于上面采样后的子像素(根据每个像素细分后发射的射线)计算的,更精确的多。如果要比较清晰锐利的效果建议使用cutmull-rom,如果渲染用于电视的动画建议用area,cutmull有时候在动画上会有边缘闪烁,如果你觉得area的静帧拿不出手可以photoshop里sharp一下……
【vray: color mapping】
vray的Exposure control曝光控制max的曝光控制(键盘8)是跟着全局光系统一起出来的。其实这个所谓的曝光控制似乎与现实摄影的概念很不同,个人觉得它实际上是对场景光照与渲染色彩空间的一个mapping覆盖计算,它决定着光照效果最后我们看起来什么样。这个看起来好像是个很关键的角色,对的,的确很关键,即使以前你可能没注意过这个。我们做个简单的试验,用max线扫描渲染。建立一个plane,给一个默认的灰色材质。在上方放一个omni灯光(不要太高),omni的mutiplier设置10,颜色设置半红色(hsv255 150 255),渲染,你会看到接近omni的区域曝成白色,而且周边出现一个奇怪的半红光环。
然后我们打开enviroment环境面板,把exposure~选择下拉菜单的linear~线性曝光,然后再渲染,这次中央的白色曝光部分变暗了,光环还在,看上去更加奇怪。因为max把照明亮度大于1的部分简单处理成白色,所以第一次出现很大的光斑,而linear曝光只是把实际的照明亮度范围(这个范围允许超过1亮度)进行缩放到0和1之间,结果是图像柔和一些,没有了大的白色曝光区域(max手册提到linear不能用于动画,会闪……)。
好了,然后我们改为logarithmic~对数曝光控制,渲染,这次结果柔和多了,看上去比较理想。 vray没有对数曝光控制而使用Exponential指数曝光控制。上面说到的只是强调一下曝光控制的概念和重要性,max的曝光控制和vray的还是有很大区别的。
vray到目前提供了5种控制方式,Linear multiply,线性倍增,基于照明亮度简单的缩放图像色彩的亮度。超过亮度范围的部分被忽略处理成白色,会出光斑。Exponential,指数,基于照明亮度调节图像的饱和度,不会损失过度照明部分,但最终图片会有些灰暗。 HSV模式,这种模式会保护色调和饱和度不流失,它认为红色再亮也不会变成白色。另外intesity和gamma两种模式都是新出来的,还没找到资料……
个人经验是lnear的效果比较好,但是灯光控制不好会有曝掉的危险(建议渲染一个diffuse通道预备补救用),另外exponential也是个不错的选择,虽然渲出来比较灰暗,但是亮度层次完正,对后期制作比较有利(建议使用vray framebuffer作测试渲染,可以临时调整预期最后效果,如果做效果图可以调整几个不同的版本后期合成或者参考使用)。
【vray:vraylight。】
vray面光。
vray似乎支持大部分max的灯光(skylight和IESsky不支持)。vray有自己类型的灯光系统,但light物体创建栏只有vraylight一种类型(新的版本有vraysun,似乎不怎么实用)。又是一个通吃的做法。
vray的灯光系统和max的区别就在于是否面光。
现实世界所有光源都是有体积的,体积灯光主要表现在范围照明和柔和投影。而max的标准灯光都是没有体积的(photomeric似乎有几种有体积的,其实阴影并不是按体积计算的,需要使用area投影,但是我们知道,area投影只是对面光的一种模拟……其实本质还是点光,vray也基本支持这类情况的灯光,但是在模糊反射的高光上仍是一个圆点)。
vraylight可以创建平面光plane半球体积光dome(新的版本可以对dome使用贴图文件控制,比如贴一个360度他就变成了天光……)和球面光shpere(为什么没有圆柱日光灯管?)vraylight可以双面发射doubleside,可以在渲染图像上不可见invisible,可以更加均匀的向四周发散ignore light normal(忽略灯光法线方向,如果不忽略会在法线方向发射更多的光线,plane模式才看得出,许多时候忽略比较接近现实情况。),可以没有灯光衰减no decay(默认强度是30……不衰减用1,和max灯光差不多对待。这个衰减是以平方数递减的,很厉害,虽然现实近乎这样,但一般情况还是不衰的好……)。
一个有趣的选项skylight portal(天光入口)。
前面忘记介绍vray天光如何生成了,这里补上。
在vray的渲染面板有enviroment栏,其中就有gi(enviroment)一项,勾选overrid max's超越max自身环境设定(在键盘8环境面板)。但并不是真的超越,只是第一次发光使用了这个超越的设定,接下来的物体和背景之间的间接光反射计算仍然使用max自己的设定(天光就是天真的发光,发完了就完了。),如果我们不勾选这个override,那么就先使用max的环境发光然后继续使用它参加间接光计算。好了,回到skylightportal天光入口上来,如果你做一个房间,只有一扇窗,那么是不是一定要计算房子外面的光照呢?明显没这个必要,我们只要计算从窗户进来的那部分,窗子就是天光入口。勾选这个选项后,vraylight的灯光色彩和强度(multi)就不起作用了,而是使用环境的颜色强度(override有强度)设定。
明显理论上在窗口放一个这样的面光比不放而直接使用天光渲染速度要快,当然由于自身的细分算法原因效果并不是很明显,但是值得推荐使用。
store with imap 存储到imap一起。把间接光的计算结果存到imap里面去备用,明显是个好建议,可以提速不少,但是也明显受到imap精度的制约,如果imap计算参数比较高,那么还是可以使用的,另外一个问题就是这样会导致物体间接触的边角可能有漏光现象,这个情况似乎可以勾选渲染面板irradiance map栏check sameple visibility检查采样的可见性得到解决。smooth surface shadow光滑表面阴影,说是用来避免低面数多边形的阴影斑点,而且说现在的版本(1.47.03)这个东西有点问题……
其它参数比较简单,subdvis控制计算精度,低了会出nosie颗粒。其实vray的灯光内容远不止上面介绍的那一个。更值得大家重视的就是使用自发光材质的物体真的会发光照明。
使用模型体本身照明是个很聪明的办法,这样光源就远不止上面三种类型,用圆柱体作日光灯管,当然甚至你可以做一个猴子样的灯……(如果你用maxwell渲染器右找不到怎么做灯光,那么用材质吧,它完全不用max的灯光,就算太阳你都得真的作个球挂在天上……)。
这很可能是将来的一个大趋势。
另外需要提到,vray的全局光计算速度受灯光数目影响十分大,灯越多越慢,做个夜景餐厅肯定比日景慢很多。但是,发光体的数目对速度影响就不大,所以尽可能使用发光体而不要去使用light。比如说壁灯,你可以放一个面光vraylight,这是最慢的(面光比同样的发光片慢很多,也是灯光里最慢的),或者你简单的放个omni,快了不少,但是效果一塌糊涂,最好的做法是把壁灯的该法光的部分材质给一定的自发光(falloff是个不错的选择),这样虽然看起来不太好控制强度,但是如果是一个异性的灯或者屋子里有数十个这样的灯你就意识到方便好用了……
再次说,多用发光体,少用灯光,尽量不要用面光(虽然它效果的确不错……)
【vray: others其他】
vray还有一些其他没提到的内容,这里补充一些,并不完全。vrayHDRI,vray高动态范围图像贴图。如果你不很了解HDRI,你需要查阅一些相关资料。简单说就是带有光照信息的图像。大多用来做天光的纹理(可以贴在override enviroment里)。
最大的优点就是支持常见的HDRI样式,比如mirrball(用相机拍摄金属镜面球获得的HDRI半全景)……
VRayDisplacementMod位移修改器,用来做真正的凹凸,优点是可以使用2d算法,速度很快,3d算法也不慢。如果发现有裂缝,可以尝试下面的keep continuity保持连续选项。
vrayFur简单的毛发系统,许多属性可以用贴图控制,不错的小东西,可以考虑作地毯之类……vrayplane广阔无边的地面。
vraysphere同上,这次是天空。(这三个都在物体创建栏vray里面)vraytoon一种简单的卡通材质,在大气特效里面。
vrayproxy模型代理工具,你可以把一个物体用右键vray mesh export导出,然后再用这个代理导入。
vray frame buffer帧缓冲。每次一按渲染就跳出来的那个窗口就是max帧缓冲窗口,vray有自己的窗口,在渲染面板里打开。有很多优点,比如可以临时调解图片亮度,还可以跟着鼠标渲染,指哪打哪,很好的。缺点就是占内存……如果图大渲不出可以观掉这个试试看。
g-buffer channel G通道,各种各样的通道,漫反射,反射,折射,间接光,投影……原来这些选项在和color mapping一起,只要选中,然后再vray frame buffer里设定输出目录就好了,最新版本没有了g-buffer栏,要到max自己的render element内添加,我的总是有不少通道出错渲染不出……
vray QMC sameple ,全名Quasi Monte Carlo采样,关系到vray所有的blurry参数,模糊反射,面光,间接照明,反锯齿采样,景深,运动模糊……这里是个全局控制参数,一般不要修改,保持默认数值。
vray system系统参数。可以修改渲染块的大小,可以在渲染后打字签。值得注意的有几个关于灯光物体属性的按钮,和右键菜单一样。网络渲染也在这里。
另外,vray的日志,vray log 也在这里,如果要禁用日志(有些时候它会把你的c盘炸满……)可以把目录内容清空,它就不知道往哪里存了……
vray:新一代渲染器带来的渲染革命天光,间接照明,体积光源,真实高光,以及焦散,次表面散射,物理相机……等等这一切日臻成熟,我们的渲染工作也在无声无息的适应改进中进行着一轮革命般的变革。
说到革命,大概maxwell做的更加彻底,它声称完全模拟现实相机摄影的原理进行三维渲染,上面提到特性已经不算特别了,maxwell把一切作的更彻底:不光成像的原理力图模拟真实情况,更是脱离了其他渲染器沿用的RGB色彩空间而使用光谱计算,据说连紫外线都不放过……(顺便,maxwell可以计算真实的彩色焦散,的确独步当前)模拟真实?这就是渲染器未来的趋势?也许。但的确是现在的趋势。很老道的ls其实就是一个先行者,在最初编写的初衷并不是为了把图像渲染更好看而是为了灯光设计作参考,是个技术性工具软件,像cad……好了,这一切究竟给我们带来什么?可以确定的是:它使渲染制图的速度更慢……当然,我们的工作似乎也变得比以前更加简单了:我们在更多的时候开始提倡“单灯照明”,可能是一个几百万面的场景,但或许只要一个灯来照明……这在几年前是不可想象的……我们开始使用更加简单的材质或者甚至是更加模板化的材质,我们甚至奢望有一天我们只要输入一个红色樱桃木地板的名字就能完美实现我们的愿望……
另一方面我们比以前更有机会追求做到最好,以前的不可能现在变得可能了,只要你用心,你会发觉你几乎真的可以做一张照片出来了……这一切我们该如何去面对呢?几年前,你大概已经习惯用1-2个小时去完成一个简单日景房间的材质灯光到渲染成图,在这个时间里你会用心去分析整个场景的明暗关系和色调对比,你会为此布置十数个光源并仔细调整它们每一个的亮度阴影以及各种参数,你会几乎去对每一个重点物件的高光反射等属性作仔细的考究,最后在剩下的十分钟渲染成图。而现在,由于各种原因(主要是价格下滑和竞争激烈),你仍然还是只有1-2个小时来完成原有的工作,虽然现在你大概要预留至少1个小时作计算光照和渲染成图……当然,许多人倾向把这个工作留到夜晚或者直接给其他机器渲染……但是无可避免,以前预览渲染一次只要几十秒甚至十几秒,而现在往往是三五分钟。我见到不少人预览一次要超过十分钟,然后再用一两分钟修改一点参数然后再等十几分钟做预览……
我开玩笑对他们说:当你生命即将结束的时候你可能发现你一生中三分之二的时间都被用来等着看预览小图了……。我认为这样的方法是背离了进步的轨道的。我曾反复思考过艺术的本质,我认为艺术就是把感觉表现出来的过程。关于设计,我认为它是形成感觉的过程。如果按照上面仍然用1-2小时完成同样场景工作,那么明显,预览次数少了,设计的过程被简化缩短了。而同样可以说,艺术的过程实际也被缩短简化了。虽然说有可能生成出更写实的图像,但大部分情况是艺术水准的下降。
我们需要一种新的能力来解决这个状况。我认为最重要之一就是预见能力。
以前的渲染工作主要依靠不断测试不断调整中获得进步提高的,而现在则应该用更好的预见能力来弥补不能做更多测试的不足。从一个材质球的面貌去预见它在最终图像上的表现,从一个灯光的参数去预见间接光计算后对最后图像的影响……从当前测试小图预见一个参数调解后对整篇的影响,哪些测试渲染图上的错误不足在最后高参数渲染时会自动解决,哪些不会……作为一个好的渲染师甚至应该包括从渲染图对最后后期制作完成图的预见……当然,这种预见能力在以前也很重要,不过现在它变得更难掌握也更加关键,我个人认为,这种预见能力的好坏是一个好的渲染师的首要标准。
培养这种预见能力,一方面需要完善深入的技术掌握,更重要的则是对现实状况的研究积累:因为现在的渲染器更加多的参照现实计算了……另外一种重要能力就是统筹优化能力,尤其在测试调整阶段,统筹优化测试渲染的各种均衡从而达到高效是至关重要的:测试需要的时间,需要的质量这之间往往需要达到最好的均衡才能获得最大提升成图质量的机会。这些往往需要更多的依赖于技术,有计划的设计灯光,渲染光照,使用一些材质的高阶属性。好的建议是尽量把那些速度慢的灯光或效果留到最后,当然许多时候情况复杂的多,建议你可以考虑先用类似的方法替代它待其他调整完成后再换到原先的设置。
当然,另外一个能力就是艺术审美能力。
个人认为,即使你友好的感觉,没有上面两种能力也很难把你的感觉完好的表达出来(精力财力时间等等原因往往不给你足够的机会表达,或者说你缺乏表达的能力)好了,下面谈些实际的经验:a 什么样的流程是好的流程?个人的渲染习惯是:先把场景内所有材质转换到vray(使用右键菜单,vray sense convert,这样可以避免许多关于max材质不支持而导致的严重错误),这步很关键,强烈推荐。然后对场景内每个物体进行材质初步调整,打开场景内所有的模型组,选一个物体,吸出它的材质,通过材质球调整到接近理想状态(使用开锁的假高光,不开高级内容),然后按材质选出使用它的所有物体,隐藏,然后进行另一个……(的确很烦,但是个人认为这个是必要的)……直到场景内的物体都被隐藏了(注意多重材质)。
根据现实情况设置灯光(这个是个人习惯),比如太阳,该多高该在那个方向基本都依照现实,一般情况尽量不使用面光,如果需要先考虑用发光体替代,对于射灯往往不能靠发光体了,要打spot吧,尽量少用,如果是日景而射灯的位置并不是构图中心对整个场景估计影响也不大的完全可以先不打,留到最后再打,因为灯多了会变慢不少,争取最后测试渲染一两次就到位,另外要说就是发光槽发光带,许多时候需要做模型(如果现实那里藏了日光灯管你最好做个圆柱体藏在模型后面相同位置),多用法光体少用灯光,效果好速度快。好了,用low(hsph subdivs半球细分可以低些,20-30就可以了,interp subdivs插值细分一般保留20,低的话可能出斑。
有时也可以用very low但是体激光可能看不到效果)级别的imap设置测试渲染,保存光照。然后根据测试结果调整灯光强度和渲染参数(比如适当调整color mapping)必要的情况补光(有些时候需要改材质)。然后重新计算光照。直到光照效果基本满意,然后进一步调整重点材质,用原来的光照,千万不要再算光照,这时候材质对图像光照的影响微乎其微的……然后对灯光作最后调整,用稍高的参数计算光照,然后根据情况决定哪些地方需要使用高级效果(模糊反射甚至焦散),打开它们,进行最后测试,测试图没有明显问题(小问题改一下)就可以计算正是光照了,看看小问题如果解决了就可以正式渲染了。
——插进一点内容,如何补光?方法很多,……除了补光源之外,因为我坚持少用光源……比如说,做个日景房间,只有对面窗口进入阳光和天光,可能房间深,背面比较暗,就有很多方法解决,其一在相机后面的墙上开个门让天光进来(已经有了?那就开大点~);其二在相机后面的空地方放一个白色物体甚至发光体吧,面光效果哦;其三如果开了门还不亮可以检查一下室内有无大面积深色物体(木地板?),使用vrayGiMtl,套一个白色材质参加全局光计算吧肯定效果不一样;其四修改墙面地板或者屋顶的vray属性,加高他们的receive或者generate GI数值到1.2或者1.5或者……其五把渲染面板quasi-monte carlo的secend boundces二次反射反射加到4或者……其六把color mapping的dark mutip暗部倍增加到1,2或者……其七把gi的两次反射强度加一点……
方法这么多为什么要补灯呢?b 什么样的时间分配比较合理呢?个人认为间接光照的引入明显减轻了我们度量灯光的工作,换句话说给我们进一步深化材质以及调整构图及色彩搭配留出了更多的时间,需要注意的是,千万不要把这个时间用来等待测试渲染……个人建议最好把至少一半的时间用来做好材质和色彩搭配,另外少一半的时间做灯光和测试渲染。当然最后渲染完全不要指望用自己的时间啊,随便扔给其他机器或者留到晚上让电脑费心好了。
-
V0ID0 赞了这篇日记 2019-06-29 14:42:46
-
白然微笑云喝水 赞了这篇日记 2017-12-12 08:15:57
-
豆友81297508 赞了这篇日记 2017-05-08 19:54:40
-
芸rong 赞了这篇日记 2017-03-01 16:42:27
-
神的微笑 赞了这篇日记 2016-08-02 23:41:56
-
aaa 赞了这篇日记 2016-07-11 00:42:37
-
ComingSun 赞了这篇日记 2015-12-09 18:19:40
-
WyCKoNCaT 赞了这篇日记 2015-06-06 20:34:29
-
♥狸 赞了这篇日记 2015-04-19 14:14:46
-
VinCEN 赞了这篇日记 2015-03-09 19:42:49
-
银脊柱 赞了这篇日记 2014-09-05 08:48:05
-
Sara 赞了这篇日记 2014-06-02 20:36:20
-
[已注销] 赞了这篇日记 2014-04-23 10:14:52