我以实际拍商业产品的打灯原理, 搬到 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
本maya教程完。
|