我以实际拍商业产品的打灯原理, 搬到 cg 应用来做一个教程l. 本人用了 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 关掉
[page]
很暗吧!! 我们把柔光灯再弄光一点... ... 白色不是已经最光吗? 当然不是, 哈哈 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 的现象.
设定如下图:
[page]
再来吧! 渲染时间 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