在这个教程中我们将探究mentalray的焦散世界,作为我们的演示我们使用3类场景。第1个是很著名的焦散的例子装着水的玻璃杯子,第2个是海面引起的焦散第3个是一些具有反射表面的简单物体,对焦散的渲染需要你足够的赖心去等待但是mentalrayformaya不会。在这个教程中会渲染的很快!但这只是我的一个玩笑[翻的很难懂不过完全可以跳过,呵呵。全是废话]当然你可以通过模拟焦散来达到降低渲染时间,但是这样你不能得到真正的焦散效果,当移动场景中的灯光和物体的时候由模拟而产生的焦散效果会出现一些问题。让我们先花点时间看看真正的焦散的例子再来说说看吧。下面的图片是我使用我的数码相机照的真正的焦散。焦散效果在图片上用红线圈了起来。在我们的教程的第一个示例我们将努力作出和第一张图片相似的效果。这两张图片显示了两种不同类的焦散效果。第一张的焦散是由玻璃和里面水的折射引起的,第2张图则是由cd表面的反射引起的。光线穿过玻璃和水时,它的方向被改变了。这就叫折射。(这里说的不是很清楚,物理学过的哈.大家应该知道吧)由圆柱型玻璃对光线进行这样的折射使得,当光线穿出玻璃时,就被积聚到了一起,然后它们到达桌面,部份光线把桌面照的很明亮。这就是焦散。在第2张图片的例子中,CD的反射造成淡淡的焦散在CD下面的纸上。在这个例子中光线被CD反射,然后光线射到纸上使纸得到更多的照明。这便是部份纸面比其他部份更亮的原因。1玻璃杯示例文件:附件:点击下载(30kb)1225271-20171453-caustic_scenes.zip(29.07k)解压场景文件打开scence01.mb,你可以看到场景里是一些简单的物体,有墙壁地板和装着水的玻璃杯子。当然还有些shader。我们感兴趣的是Water1和Glass1[里面名字好象不是Glass1]这两个shader打开第一个shader的属性编辑器[Ctrl+A]你会发现它有很高的透明度[transpart]它的漫反射[diffuse]值被设置为0,这是因为玻璃或水不对光线产生漫反射[diffuse]和反射[reflection],所以如果你想制作玻璃材质要将漫反射[diffuse]值设为0。并且增大透明度。打开Water1shader的raytrace[光线跟踪]选单你可以看到refractiveindex[折射率]被设置为1.33,而Glass1shader的refractiveindex[折射率]被设置为1.5。这些是这些材质在真实世界的的值。所以如果你要做玻璃请确定它的折射值被设为了1.5。maya中refractiveindex[折射率]的默认值是1。同样水的shader要设置refractiveindex[折射率]为1.33,如果你要建立水晶或钻石的shader要使用更高的折射率值....刚好是的折射率表中的值。我们要使用mentalray来渲染出焦散效果。打开RendermenuRenderUsingmentalray。现在打开渲染窗口。打开WindowRenderingEditorsRenderView.你也可以从渲染窗口选择使用mentalray作为你使用的渲染器。点击视图工具栏选择optionsrenderusingmentalray现在测试渲染会和下图类似。哦,天啊,这是什么鬼东西?你打死也不想相信这就是个装着水的杯子,但他确实就是!还没开光线跟踪。怎么打开呢?通常在渲染视图选择OptionsRenderGlobal's(mentalray),mentalrayGlobals窗口就会弹出来,选择Quality按他RenderQuality右边的方形按纽就会打开mentalrayOptions1选单确认顶部raytracing被钩选。再次渲染,你将得到和下图类似的效果。为什么会这样!因为当光线到达玻璃的时候,根据我们的mentalrayOptions1的MaxRayDepth设置光线只折射一次,但是实际上我们需要至少6次的折射(玻璃,玻璃,水,水,玻璃,玻璃)这使得我们必须要增加折射光线的深度去得到满意的效果。到mentalrayOptions1选单将MaxRefractionrays和MaxRayDepth设为6。再次渲染我们得到下图的效果。这看起来不错,下一件事是打开阴影[shadow]显示。选择spotlight聚光灯,按ctrl+a打开属性编辑器,打开阴影[shaodows]设置。在阴影选单的最上面是深度贴图阴影[DepthMapShadows]我们不使用这种类型的阴影,因为他是模拟的阴影不能使用在由透明表面向其他物体投射阴影的情形。因此你需要钩选下面的光线跟踪阴影RaytraceShadowAttributes,打开光线跟踪阴影,再次渲染,如下图。好了,现在我们得到了折射和阴影效果。现在我们需要在场景中得到焦散效果。为了产生焦散效果我们必须将灯光设置,作为光子[photon]发射器,同时打开mentalrayrenderingoptions的焦散选项。因此选择灯光。ctrl+a打开属性编辑器进入mentalraycausticsandglobalillumination选单部分。钩选EmitPhotons[发出光子]选单使灯光发射光子。此时Energy[能量]和Exponent[指数]变为激活。可以对它门进行调节。但是现在不用动它。我们将在以后通过调节它来增大或减少焦散的强度。现在进入RenderGlobals(mentalray)mentalrayOptions1Caustics/GlobalIllumination打开焦散选项。现在渲染可以得到和下图类似的效果。我们发现在地板的阴影部分产生了一些焦散,但是出了些问题。那里出问题了呢?如果你看最开始的例子,同真实的情形我们丢失了哪个很明亮的区域。这个问题和我们前面刚刚打开折射时出现的问题很相似,记得光线深度[raydepth]吗?为了解决这个问题。在mentalrayOptions1选单里Caustics/GlobalIllumination部分,设置MaxRefractionPhotons和MaxPhotonsDepth为6。再次渲染。不错了!但是太强烈了。为了减小焦散的强度,打开灯光的属性编辑器,CausticsandGlobalIllumination属性,如果你记得我前面曾提到用Energy和Exponent值来减小和增强焦散效果,下面是改变这两个值的图片效果。增大exponent或者energy我们得到了近似的效果,我认为energy值在1500和3000之间最合适,所以设置energy为2300让exponent为默认的2,再进行测试渲染。焦散的质量也被灯光属性和mentalrayrenderglobals的一些选项所控制,选择发射光子的灯光,打开它的属性编辑器,然后跳到mentalrayCausticandGlobalIllumination选单,设置发射光子的数量[causticphotons]。下面是一些渲染的图片。第一幅渲染很快但是它的品质达不到我们的要求,第2幅好点可以用做最终渲染第3和第4幅效果有最好的焦散效果,但是需要更长的渲染时间,我们对第2第3幅进行一下修改设置光子数为20000,这将做为这种情形的最终设置。它将做为一种情形的,象渲染海面的焦散我们就需要增大的光子数来达到可接受的效果,还有些关于焦散质量的选项值得我们注意。你可以在RenderGlobals(mentalray)mentalrayOptions1Caustics/GlobalIllumination找到,CausticRadius调节从多大范围来收集光子进行运算。CausticAccuracy[精确性]调节在场景中一个点周围的多少个点被收集到一起,你可以不用管这些,让他默认设置为0,不用担心,设置为0的话渲染器会设置一个他认为合适的值,在很多情况下这样会取的满意的效果,在其他情况你可以不用太管accuracy,但是如果你增加非常多的光子,那也需要增加accuracy到比较高值。如果你改变CausticFilterType从box变为cone,他将产生少量尖锐的焦散效果。