渲染方法的描述 GoP,_sd\O
r!N)pt<g
首先解释一下在fR里的两种不同的照明方法: REUWK#>
bmgK6OyVR
一个3D场景概括说来一般包括以下几个基本的组成部分: 3e4; '5q;
1)几何体 "jqC3$DKI
2)贴图/材质 ++d(}^C;
3)灯光/照明 u;\:#721
4)动画/移动 _PD RUJ
5)特效 GxE"q-G
eYZ{mo7
局部照明(直接光) yQ5&S]Xk$$
使用直接照明是渲染图像的最直接的途径,只有被光线击中的物体才会产生照明的计算,其它地方没有光影,完全没有灯光计算。这种方法最大的好处就是即使在比较慢的机器上也可以有较快的渲染速度。缺点当然就是效果不够真实。 /nEt%YYh;x
多年以来,3D艺术家们发现了很多解决不真实的渲染效果的方法,比如使用许多的灯光,然而当你想要渲染接近照片级别的图像的时候,问题往往并不是很容易就可以解决的。 wQbN5*82
T&Z%=L_Q
G.I r \+&{EEG
fR可以计算场景中的间接光照。当所有的直接光照计算完成以后,G.I的处理就开始了,这也包括焦散和体积光。每个被渲染的像素都会被分析,当GI进程检测到一个像素需要增加信息时,a diffuse amount 'zCJK~x`x
of light is added to the pixel。灯光是通过光线在场景中的反射来进行计算的,反射的次数可以预先设定。 n!=%MgF'*p
----------------------------------------------- !T;*F%G9
现在有两种光线模拟渲染技术正在竞争:G.I和光能传递 e+jp03m\W
光能传递使用的计算和模拟光照的方法和GI是不同的,它是依赖于几何体的,由算法来决定细分网格, kx,9n)
PhBdm'
这往往会导致内存的极大的消耗。 \pI)tnu6'U
G.I近来被认为是唯一合理的,符合自然的光学现象的渲染方法 tdZ,sHY6
----------------------------------------------- 8m,PsUp7
工作原理 N2:};a[ui5
YT7,=k _
fR使用了一个极其快速的混合光线跟踪器来渲染GI图像。任何一个3ds max的场景都可以进行GI渲染。 Ei!t#'*D<
+ E8\g
场景被分析和编译为“MSP-Tree”,作为光线跟踪过程的有效的数据结构(决定哪个面和光线相交)。 sVP[7&vr~
fR的光线模拟引擎走的是新的多种渲染方法混合的路子。光线从从每一个被渲染的像素开始被跟踪至 `H+~LVH
其发源处。 #hL<9j
fR对光线的计算大体可分为以下3个主要步骤:
E~oQ%X~
1)直接光照阶段;光线直接照射面,未被从光源发出的光线击中的面,只被描绘为纯黑色; C =fs[
2)反射折射间接照射阶段:光线从一个面被反射或折射到另一个面;(caustics效果) ?DPNa
3)漫反射间接照射阶段;(G.I效果) P(?i>F7s
---------------------------------------------- ^]mwL)I}
曲面问题 &8!*u3
Abr:UEG
在有着ploygon数很大的场景面前,GI和Radiosity往往都显得力不从心,渲染时间以惊人的级数爆炸性 =Ny&`X#F
WK7=z3mu
的增长。fR使用一种先进的,与场景里ploygon数不太相关的方法来计算GI。 Jej P91
fR对于物体表面的特性非常敏感。fR对平坦无起伏的物体可以很高效的进行处理,处理一个有着5000个 fdr.'aMf%
poltgon的平坦的平面和处理一个只有12个polygon的类似的平面对fR来说是没有什么区别的。然而,当你给 Kj[X1X5
TTjj.fq6
平面制造一些起伏的时候,渲染时间的问题就开始出现了。fR的GI优化算法在这个问题面前也显得比较弱智 :UjHP}s
解决问题的办法,只能靠你对fR的使用技巧,为此,fR提供了一个特殊的功能。Curve Balance可以详细的 `q Sfo`
;u;Y fOr
调整控制取样点的生成。 #;. tVo I
----------------------------------------------- ) *:<3g!
优化GI计算 dR2#n
当你开始使用GI,你会发现你所有的想法都涉及到“如何才能加快渲染速度?”这里我们来讲述在使用 yC.ve;lG
;6aTt2BQ
GI的时候可能会遇到的问题和解决方法。如果想得到一幅更加清晰的图像,增加光线的数目会是最容易想到 ]X4
A)4y
uiq)?XUKv
的解决方法,然而因为处理器的速度问题,这个办法并不会被大多数人所接受。最合适的方法还是:对 fd >t9.
fR优化的基本原则和方法的很好的理解。 Nt42v
要想用最少的资源消耗来得到尽可能好的效果,需要通过设置一些参数让fR的引擎知道哪里是“最重要 kQlXcR
}x% ;y]S
的”地方,以使它在次要的地方产生低密度的采样点(采样点被用来发射H-R Rays),这些参数可以分为两 *,1^{mb
fx|$(D@9
个部分:1)Overall SAmple Point Density;2)Adaptive Sample Poin Density Control ji{V#
----------------------------------------------- $5nOi aQL
减少采样点数量 P(fTlrb
fR的全局设定里的一个重要的参数是Balance%,它控制着Min.Density和Max.Density之间的平衡。100 mJb>)bOl
!]qwRB$5
%的平衡值意思就是每一个像素都产生H-R Rays。采样点的密度取决于3D场景的大小,场景尺度越大,需要 |;{^Mci%
{>>ozB.
的采样点密度越高。 4A0R07"
采样点密度由两个参数控制:Min.Density和Max.Density。Min.Density控制着用于所有表面的采样点 :av6*&+
C$ cX{hV
的最小密度,通常用来控制场景中“平坦”表面上的采样点的密度,注意平坦是加了引号的,平坦是相对来 dUeM+(s1
Q)yhpwrX
讲的。Max.Density则用来控制那些起伏的,光影变化比较多的表面的采样点密度。 yNdtq\h
fR的新的灯光类型 q{Hk27kt
?,NZ/n
LumaObject现在已经成为了fR的一个核心模块,它为max提供了额外的灯光类型,一些灯光类型可以把 6grJoim|
hu[=9#''$
任何一个3ds max的几何体转换为发光体,也就是可以模拟真正的面积光。你也可以使用这些灯光通过把任 rP,i,1Ar 4
L<]j&
意几何体转换为反光板来模拟光能传递的效果 /ow/)\/}
:6PWU$z$7
用fRObjLight实现光能传递效果 z.oDH<1
我们首先来研究一下fRObjLight,fR使用AABS(自动解析绑定系统)来把fRObjLighht赋予3D场景中的 b")&"o)G2W
L+bO
X
物体,启动fRObjLight后,当光标指到某个可以被转换为fRObjlihgt的物体时,光标下就会出现“AABS”的 \ntmD?kA
zTrAk5E
字样,这时点击鼠标,这个物体就会被加入到fRObjLight的列表里去。 K+Al8L?K_
B`<(qPD
还有什么其他东西可以通过AABS定义吗? IPa08/
V=k!&xN~
举例来说,如果你想把一个粒子系统转换为成千上万个发着不同的光芒的灯的话,你可以用AABS来控制 -N^}1^gA
h1G]w/.ws
这个效果的生成。如果你点击了fRPartLight,就可以通过AABS来对粒子系统进行上述操作了,每一个粒子 #*,Jqr2f
e"hm|'
都会被自动转换为经过高度优化的点光源。 lF5;Kc
(\.[pj%-O
那小图钉是做什么用的? n99:2r_
Wt()DG|[
这是cebas为3ds max4所做的另一个增强性能,称为:选择性参数关联(缩写:SPI) &5Ea6j
当场景中有多个fRObjLight的时候,它可以通过你简单的对参数右边那个图钉的点击来达到在这些 KMhoG.$Ra
511^f`P<
fRObjLight之间关联一些参数的作用,按下了图钉的参数,只要你修改其中任何一个,其他的相应的参数都 >#*]/t
je9[S_Z:Y
会跟着修改。 8|{:N>7
,AGK O,w
物体灯光和体积光效 `x~k}
fRObjLight和其他灯光一样可以产生体积光效。与3ds max相比,LumaObject渲染体积光效的速度要快4倍以 ly%$>BRU
UB&ofO
上。然而应该留心的是,fRObjLight是真正的面积光,产生的体积光效是非常复杂的。 muT+H(Z p}
----------------------------------------------- x^8x z5:O
以下是fRObjLight的参数说明,容易理解的和前面涉及到的将不再详述 ml.l( 6A
&at>pV3_
Luma Angle Y~dRvt0_w
Luma Angle控制着位于物体表面的光线发射器的角度。fR给当做光源的物体表面每个三角形都定义了一 mV@.JFXKP
JMuUj_^}7
个经过特别优化的“虚拟光”光源。Luma Angle可以让你控制从所有的光线发射器发出的光线的扩散角度。 )AXTi4MNp
(提示:为达到最真实的光能传递效果,最好使用大于60°的角度。这样可以使得光线达到场景中的最远的 -0YS$v%au>
uZz^>*b
角落。不推荐在使用较大的Luma Angle的情况下使用体积光效果,这样会使得渲染时间变得很长。 }<uD[[FLB
Luma Angle的角度越小,渲染就越快。 uKo)iB6D
j,/OzVm9
S Distance ^(V!vI*
S Distance自动的控制着Luma Angle的宽度,它取决于到一个物体的距离。(可能这样说有些难于理解 <'v?WV_
浅显一点,从应用角度上来说,就是在尽量小的增加Luma Angle的值(Luma Angle越大,渲染时间越长)的 %N|7<n<S
-x_b^)x~b7
前提下,增大fRObjLight的照射范围。-译者) U;i:k%Bzy
%.pX!jL
S Attack A~\:}PN
S Attack是用来控制由距离引起的Luma Angle的变化的速度的,可以避免在动画里由于光源和物体之间 vs{i2!^
8yOzD
距离的变化引起的光照范围变化不自然的现象,S Attack的值越高,Luma Angle的变化速度就越快。 <uU AAHi
-86 9$
Diffuse Value |D$U{5}Mv
由于fRObjLight的本质是“spotlight”,fR往往不能模拟出真实的光能传递风格的光线发散。但是可 "@
Zy+zLU
r444s8Y
以通过加大Diffuse Value来达到增大光线发散范围的目的。 NlU:e}zGR
(提示:对于设定为反光板的对象慎用此参数,这会使得反光板接受更多的光线,把场景搞得过亮。解决方 O1JGv8Nr
|m"2B]"@
法是减小灯光的Multiplier的值) `;(/Wh
4_&$isq
Room Reflection NjdAfgA
xHJ+!
该值可以增大场景中所有物体的亮度,甚至可以使得物体背后也被照亮!这就是fRObjLight可以模拟间接光 jXGr{n
67 }y/C]<
照的原因。 R{8nR00|1
GJy><'J,!>
Threshold *VIM!/YW
当fR把某个物体转换为光源时,这个物体所有的面上都被放置一个光线发射器,每个发射器所发出的光 <hZA$.W3
7w@.)@5
线的颜色是由其所在的物体的面决定的。如果你不想在黑暗的区域里也有虚拟光发出的话,可以通过 HzQ6KYAM q
WyA>OB<Zeq
Threshold设定一个值,则该物体上所有表面中亮度低于这个值的面上就不会有光线发射器生成。 zXbTpm
(提示:该功能在你打算使用HDRI的时候,扮演着重要的角色。) xY5Idl->
n2Dnpe:
Use UV cw/g1,p
选中此项后,fR就会根据物体的UV贴图坐标均匀的放置光线发射器。你可以通过U Lights和V Lights来 k#JFDw\
.Ky<9h.K
控制光线发射器的数目。 ?lR)Hi
(提示:使用本参数应该是最优先被考虑的,它是控制和优化光线发射器的生成的最灵活的途径。) |ng[s6uf
lr +Kwve
Iteration H<}<f:
用来控制光线发射器周围区域取样质量。加大它的数值,fR就会使用更大的取样区域来收集物体表面的 miZ{V%
fS1N(RZ1
颜色和亮度。在你不打算增加虚拟光亮度的情况下,这个功能会很有用。 s:*gjoL
(提示:区域取样比起在物体表面增加更多的光线发射器来渲染速度要快得多,结果差不多甚至更好。推荐 _f|Au`7m
ujmW {()
在充当反光板的物体上多使用本功能。)