Skip to main content

原文链接:https://inlifethrill.com/octane-render-rgbspectrum-vs-gaussianspectrum/

一个美好的周一清晨,喝一小杯浓咖啡之后,你开始了一天的琐事。

收件箱里几个未读的邮件:一个从没注册过的社交网站发来的通知、可以让你的生活更“性感”的新型药物、Beeple的一个新渲染作品…等下,一个新的工作邀请!

潜意识中看到了自动编织的耐克鞋、闪亮的车漆渲染、爆炸、变形或者其他什么你认为特别炫酷的东西。你一边想象着一边焦急的打开邮件。

“你好,你能给我做一个红色的、发光的霓虹管吗?”

“为了对母亲和孩子的爱!”像往常一样,你趴在枕头上哭了五分钟。好点了吗?好多了!你深知每一个小项目都让你离神作近了一小步,那个你等了一生的神作。因此,你开吃制作这个该死的霓虹管。没费太大力气就制作完成了:

标准的工作流程:一个Octane材质(没有Diffuse颜色)和Texture Emission。你使用了一个RGBSpectrum,并且将Power降为1.自信心开始再一次膨胀,你悄悄的想:会了这一套操作,我应该去工业光魔工作。

客户反馈发过来了,大致意思是:这个很不错,但是…你能让它再亮点吗?我们需要更多的亮光!

“噢,这个很容易”你这样想,然后将Power调节到了200.

“卧槽…这怎么回事?!洋红色?噪点?亮斑?我完蛋了!”在你抱怨Octane怎么这么烂(通常在网上)之前,你想起来一件很重要的事,渲染引擎不喜欢特别极端的值,比如100%黑、100%白、100%饱和度或者100%光滑等等。你想到了这,然后回头查看你的RGBSpectrum,它只有100%红色,没有绿色和蓝色通道的信息,这样很难达到好的效果。于是你机智的添加了一些变化打破了这个完美的红色。

“但是…我的红色呢?为什么变成了白色?我彻底糊涂了。天啊,为什么坏事总是降临在好人身上?我受够了!我现在就安装Arnold!”

为了解释RGBSpectrum的这个行为,我们需要理解(或至少明白一点)渲染引擎是怎么处理光的。Octane渲染场景通过一种叫做“光谱渲染”的方法。这意味着,模拟光源和物体表面是基于真实世界的波长,与之相反的是运用更广泛的RGB模式。Octane这种渲染模式能够得到与真实世界更接近的图像,更精确也更容易渲染干净,这就是Octane的渲染本质。

你也许会问:“这个跟我有什么关系?”

现在很明显RGBSpectrum输出的数据不能直接用来采样。这也是为什么引擎会将RGB颜色转换为与之最接近的波长。注意,将RGB转换为波长(或者反过来)将永远得不到完美的匹配值。这个在上面的图片就能看出来。

首先,颜色会被修剪为品红色,然后将余下的RGB通道输入数值变成了白色。这就是为什么几乎不可能得到“红色发光的霓虹管”,总之,不要使用RGBSpectrum。

那么在Octane中生成颜色还有什么选择吗?GaussianSpectrum!

我希望这个图能够足够清晰的表达GaussianSpectrum面板中用来用来描述下面的光谱波长信息。值得一提的是Octane重新映射了电磁辐射的长度(380至720纳米的可见光)到0和1的黑白渐变,叫做“Wavelength”,你可以把这个当作HSL来理解,Wavelength就是色调,Width就是饱和度,Power就是亮度。

原理上当然和HSL不一样,但是这样可以帮助我们理解。

好了,现在我们来再试一次,差不多的设置,就是将RGBSpectrum换成了GaussainSpectrum。

现在来看,Power是4瓦特,不错,红颜色吗?是的!继续。

 

Power调节为200?没错,仍然是红色。颜色现在保持的很好。即便使用很强的光亮度,也不会出现品红色或者奇怪的亮斑了。完美!好了,现在我们把这个发给客户,希望他们能够喜欢。

“这个太红了,你可以添加一些变化吗?我们现在已经在光源范围里失去了细节。”

你想:“也许可以让+Y方向的表面更亮一些,周围的部分暗一点,我真是太有才了!”实现这个效果的方式就是用Falloff节点代替Power的Float节点。要保证Falloff模式是“Normals vs. vector 180deg”设置合适的Falloff Direction,调整Skew Factor知道衰减的分布是自己想要的,然后渲染一下看看。

 “已经差不多了,或许一些区域应改更热一些,所以看起来会更亮,这样应该效果会更好。”

我们要怎么解决这个问题呢?之前已经说过了,不管我们怎么提高灯光的强度,数值仍然会保持和波长一致,换句话说,不管怎么提高亮度,红色仍然还会是红色。重新使用RGBSpectrum当然不是一个选项,所以要怎么解决呢?“Saturate to white”是一个解决办法。

最酷的部分就是“Saturate to white”是一个后期效果。这意味着我们可以随意调节数值而不需要重新渲染。现在两全其美了,你可以让颜色提高到白色,还能保持正确的波长值。再添加一些Bloom,客户这次应该满意了。

这个故事告诉我们什么呢?如果你可以,那就直接使用GaussianSpectrum,省去中间商(RGBSpectrum),直接和引擎直接交流!

(完)

5 Comments

Leave a Reply