我以实际拍商业产品的打灯原理, 搬到 cg 应用来做一个教程。本人用了MAYA及mental ray做示范,不过灯光理论能够应用在不同的软件上,所以适合任何人士收看。
由于今次是第一篇教程讲 lighting,所以都是以简单为主,希望大家容易掌握,之后的可能会更难,呵呵。
场景设定
拍商业产品主要分为直接照明及间接照明两种, 我今次会讲间接照明在反光物品上的应用. 因为反光物品如用直接照明, 会令到对比过强, 使用间接照明就能够给予物品柔和的质感, 也可以柔化阴影.
以下这幅图就是拍摄反光产品的灯光设置:
设置解说:
1. 背景通常用一张弯曲的白纸, 这样就可以避免看见墙及地面的交界线, 而且给人一种自然舒服的感觉.
2. 左边有一块反光板, 实际拍摄也只是用普通的白色纸板, 在MAYA里我用了纯白色的 Lambert 材质, 和背景是一样的.
3. 右边的柔光灯是这个场景的主光源, 我在MAYA里用一个 shader 代替.
创立一个 Lamert 材质
把 Ambient 设为 0.1
在 Color 及 Incandescence 连接 Ramp
Ramp 的类型改用 Circular Ramp
把颜色改为中心白色, 外围灰色
玻璃材质:
今次的产品是一个玻璃瓶, 所以顺便讲解一下玻璃材质的设定.
在 mental ray materials 里面, 建立一个 dielectric material*
Col 就是材质本身的颜色
Ior (Index of Refraction) 折射率, 根据真实的玻璃折射率, 我在这里改做 1.65
* dielectric material 在物理及 material science 的确存在的, dielectric 就是不导电的物质 (玻璃, 水及多种液体), 不导电的物质特性就是会根据光子入射角不同, 而有不同程度的反射. 引用 Fresnel's formula (dielectric 材质就是以这条公式计算), 当光子入射角为直角时, 就会以传动的方法在表面带走光能; 而入射角越接近 0, 就会反射越强. 这就是我们为什么会见到玻璃瓶的正面反射是比较弱, 而侧边的反射是最强.
另外有人会问, 很多人是透过水而触电致死, 为什么是不导电的物质呢?
以物理上, 纯水.... 就是 H2O, 有一种两极化的特性, 遇上电流就会另到极性增强, 而抵销了电场. 但是 H2O 液化时有另一种特性, 离子会变成不稳定状态 (ions: OH- & H+), 现实中的水也会带有杂质 (不同的金属物质), 所以是高导电性. 但是结了冰就是不导电体了.
好! 又回到MAYA里面, 场景设置好, 跟着就用 mental ray render 试试看, 把 render setting 的渲染器设为 mental ray. Quality presets 用 production 吧, 跟着打开 Final Gather attribute, 勾选 Final gather 项目. 渲染来看看.
别外, 请将 render options 内的 Enable Default Light 关掉
很暗吧!! 我们把柔光灯再弄光一点... ... 白色不是已经最光吗? 当然不是, 哈哈 XDDD
再打开 Ramp attribute, 点选白色控制点的 Selected Color, 在 color chooser 内, 如果你看见是 RGB 模式的话, 就改为 HSV 模式, 然后把 V 的数值改为 3.5
再渲染一次, 下图: (渲染时间 0:41s)
还觉得比较暗... ... 在 render setting 中, 把 Final Gather attribute 的 Secondary diffuse bounces 勾选. Secondary diffuse bounces 的意思就是把光源照着的地方, 会产生 bounce light 的效果, 如果对象有颜色的话, 也会产生 color bleeding 的现象.
设定如下图:
再来吧! 渲染时间 0:42s
唔..... 地面的阴影怪怪的..... 蓝色玻璃的阴影应该也有一点蓝色麻? 没错, 我们再把 render setting 调教一下.
把 Trace depth 改为 4, Trace reflection 及 Trace refraction 为 2
渲染时间 0:43s
有一点点效果吧....不过好像不够
今次把 Trace depth 改为 8, Trace reflection 及 Trace refraction 为 4
清楚看见蓝色的阴影吧, 有时候遇到透明的对象, 就要懂得 ray trace 的计算方法, 附上MAYA menu 中的插图:
图中的数字就是计算 ray trace 时的数目
现在渲染出来的背景有一些点, 这是因为 Final gather rays 不够, 把 Final gather rays 改为 400:
渲染时间 1:14s
渲染时间长了, 不过还有细少的杂点, 把 Final gather rays 改为 1000:
渲染时间 1:55s
效果好了很多, 不过渲染时间大大增加了. 其实我们可以个别调整 Final gather rays 的数目, 我们先来分析场景吧!
在 render setting 中, 把 Final Gather attribute 的 Enable map visualizer 勾选
渲染一次之后, 你在场景中就会看见很多红点
这样就可以分析场景中 Final gather rays 的分布情况.
现在我们知道背景是面积最大, 需要最多 rays, 就选择背景, 打开 attribute editor 在 mental ray 项目里有一栏叫做 Final Gather Override, 勾选它, Final gather rays 改为1000. 另外我在 Min Radius 及 Max Radius 设置了数值, 这个数值是跟据我的场景中的大小来计算. 现在这个场景的大小是 130 个单位, Max Radius 数值是场景单位的 10%, 而 Min Radius 数值是 Max Radius 的 10%, 如图:
跟着可以将 Final gather rays 改回 400
渲染时间 1:35s
呵呵, 省回了 20 秒, 如果制作大场景时, 懂得灵活运用, 必定省回不少时间!
这一个设置, 大家可以因应情况作出改变. 举例我觉得右边光位太贴边, 那我把柔光灯的位置移前一点, 现在右方多了一条黑边, 而且光影位置也有些不同. 因为移前了柔光灯的原故, 所以我把它收窄了少许, 以免反射的影像过大. 还有一点要注意, 之前提到的 dielectric material 特性, 正面的反射会比侧面少, 所以把柔光灯再弄光一点, 白色的 HSV - V 数值增加为 5.
第一个灯光设置
第二个灯光设置
最后我附上一些常见物质的折射率( Index of Refraction) 给各位参考:
物质 折射率
Vacum 1.0
Air 1.00029
Ice 1.31
Water at 20 C 1.33
Acetone 1.36
Ethyl alcohol 1.36
Sugar solution (30%) 1.38
Fluorite 1.433
Fused quartz 1.46
Glycerine 1.473
Sugar solution (80%) 1.49
Typical crown glass 1.52
Crown glass 1.52-1.62
Sodium chloride 1.54
Polystyrene 1.55-1.59
Carbon disulfide 1.63
Flint glass 1.57-1.75
Heavy flint glass 1.65
Extra dense flint 1.72
Methylene iodide 1.74
Sapphire 1.77
Rare earth flint 1.7-1.84
Lanthanum flint 1.82-1.98
Arsenic trisulfide glass 2.04
Diamond 2.417