Image-Based Lighting(IBL)是一种利用2D贴图(通常是用HDRI高动态图象)作为光源来照明整个场景的技术,在各种3D软件中应用广泛,它可以让虚拟的三维场景更加的真实。Poser新发布的6.0版本也宣布支持该技术,不过试用下来却有些失望,因为Poser6并不能直接用HDRI高动态图象做光源。这里先简单介绍下HDRI,HDRI全称High Dynamic Range Image(高动态范围图象),目前的显示设备都只能显示有限范围的对比度、亮度和颜色数,因此我们通常使用的都是8位通道甚至更低位的图象,这些图象就叫做LDRI(Low Dynamic Range Image低动态范围图象),这些图象记录的光的信息并不全面,而HDRI的RGB通道数值并不只局限在0-255的整数,它们甚至可以是超过255的浮点数,因此HDRI可以包含比24位或32位LDRI更多的信息,这样在某些特殊的应用(比如IBL)中使用HDRI可以最大限度的再现真实环境的光影信息。
基于以上种种原因,Poser6的IBL光源并不能提供给场景真实的高光和阴影,它是一种用图象中的光色信息均匀照亮场景的技术,你必须手动添加别的灯光来生成更真实的阴影和高光,所幸Poser6的灯光灵活了许多,可以分别控制灯光的漫反射和镜反射特性,加上Shadow Catch,可以让人物更加自然的融入2D背景中。不过今天暂时不讨论2D背景的合成,我们先看看Poser6的IBL光源是怎样利用2D图象来照亮物体的,这也是为今后自己制作IBL光源贴图打基础。
我先在Photoshop中做了如下一张图象来做测试用的背景,这张图象也将作为贴图添加给IBL光源,为了更明显的看到光线在物体上的变化,我用了非常鲜艳夸张的色彩,兰色部分大概相当于背景中的天空,绿色部分大概相当于树木山峰等等,黄色部分相当于地面。为了看到横向的变化,我也在横向上做了一些层次变化…… 下面把这张图片作为IBL光源贴图加到Diffuse IBL灯光的Color节点,删除其余灯光,在场景中添加一个小球,转动摄象机,从不同角度渲染观察光线在球体上的变化,得到下面一组图象…… 由上面一组图象可以知道,Poser6是从这张贴图的中心以面向主摄象机(Main Camera)的方向开始包裹住整个场景进行照明,即图象中心的部分将对应物体面向摄象机的部分,大概象下图所示那样
这样大概可以明白IBL贴图必须是包含整个360度环境的全景图片,这样才能最真实的再现环境的光照情况。看看Poser6的Runtime\\textures\\Poser 6 Textures\\LightProbes目录下的图片,这些就是预置IBL灯光的贴图,它们确实都是360度全景的Mirrored Ball(反光球)形式的全景图象,我们直接用背景图象做IBL的结果就是本该在背景的光线打到了物体的正面,而面向物体部分的图象信息却没包含在背景图象中。不过我想很多人可能都没条件用数码相机和反光球去实地拍摄,至少我目前没这条件,所以我所能做的就是尽量重现背景图片缺失的那部分图象信息,伪造一张全景图。伪造工具还是PhotoShop(不是不熟嘛?还老用它?因为其它的根本不会啊。
首先打开背景图片,复制当前图层,在上面那层图层中选取背景约一半的部分,水平翻转,用自由变换工具收窄一些,移到边上,同样处理另一半,移到另一边,这样中间部分就空出来了,这部分就是没拍到的面向背景的那部分,该怎么处理大家就充分发挥想象力吧,不过别弄的太离谱……下面是PS中具体操作的图例,为了更直观些换了张背景,该背景处理成IBL贴图后在Poser6中的照明效果可参看第5楼的第一张图片。
在这个例子中我是把后面那层的黄色的部分复制粘贴到绿色部分,兰色部分保留,就相当于背景的另一边是与天空相连的大地吧,这是伪造后的“全景图”。
接下来就是将这张“全景图”转换成Mirrored Ball(反光球)形式,我是用HDR Shop转的,该软件可以到http://www.ict.usc.edu/graphics/HDRShop/免费下载。运行该软件,用File菜单下的Open命令打开那张“全景图”,会弹出这个对话框要你设置照相机的响应曲线,保持默认值确定就行(又不是我拍的,鬼知道这些值),当然如果你是用自己相机拍的也可以参照其主页上的教程校对
这里我只是图方便用它的全景变换功能,所以直接运行Image菜单下Panorama下的Panoramic Transformations命令,在弹出的对话框中如下设置(输出图象不用太大,一般256-512Pix就行,太大耗资源)
确定后你的图象就被变成反光球形式了,点File菜单选Save as,又弹出对话框让你选输出图象格式,这里只能选下面的Low Dynamic Range,因为Poser6不能读取HDR图象,哪种LDR格式随便,我省空间选了JPEG。
这就是最后输出的IBL贴图……
将刚才那张反光球形式贴图做为IBL光源加到Poser6中,调整一下灯光的强度,再加一个泛光灯做投影,渲染结果及与之前直接用背景做IBL的渲染结果,做个比较。
明显右边的来得自然吧,这里只是做个示范,下次结合背景图象再具体侃侃2D背景合成的一些具体操作。
再补充一点,Poser6中的Diffuse IBL类型的灯光只是一个虚拟的灯光,虽然在视图中的表示方式和一般的泛光灯一样,但它并没有固定的坐标和方向,你转动这个灯光并不会改变场景中物体的照明情况,决定照明情况的是贴图本身,因此不要打开它的Cast Shadow选项,因为这个投影是按照泛光灯方式投的,并不符合贴图里的光线情况,而且会在模型的背光面产生难看的黑影。正确的投影是用另一盏灯光来投,如果不希望这盏灯光影响IBL的照明效果的话,可以在材质工作室中将它的Diffuse设成接近全黑(RGB:1,1,1)[但不能全黑(RGB:0,0,0),否则就不会投影了],这样这盏灯光将几乎不影响物体的表面漫反射(起码肉眼无法察觉^_^),同样不想影响镜反射就把Specular设成全黑(没错,可以全黑)……注意Diffuse的影响只有在场景中存在IBL光源时才会象上面那样,否则降低Diffuse的明度将直接影响投影的强弱,而存在IBL光源时则完全没影响,投影情况由该灯的Shadow等参数控制……当然这盏投影用的灯也可以加贴图来制造一些特殊效果,比如我5楼贴的第二张图人物身上的光斑……^_^
在IBL灯光和用来产生投影的灯光一起使用时,要注意IBL灯光不能和作投影用的那盏灯同方向,什么样叫同方向呢,看下图:
在和作投影用的那盏灯垂直方向上做一虚拟平面,只要IBL灯光移到该平面上方,就算和投影灯同方向,投影灯将不能投影……不过因为IBL灯光的照明和其方向无关,所以只有一盏投影灯的话也不影响使用。
那如果有两盏或更多的投影灯呢?情况比较复杂,它们的投影会相互影响,同时也会和IBL灯光影响,而且还会受该灯光的Diffuse材质影响,我试了半天试不出个规律来,就没再试了。不过不投影的灯光不会有影响,所以大家要控制好投影灯光的数量。
这种不规律又复杂又不合理的灵异现象只能理解为Bug了,希望CL快点解决。
IBL灯光照明时会将物体每一个角落都顾及到,因此会造成物体在一些不该被照亮的地方发光的情况,如人物的嘴角,腋窝等,此时可开启Diffuse IBL灯光的Ambient Occlusion(在灯光的属性面板里),这样会在物体与物体的结合处及网格重叠处产生自然的阴影,使用Ambient Occlusion时要打开渲染设置里的Ray Trace选项。
模型狂第一次写这类东东,发现什么错误或有什么建议还请跟贴赐教。天都快亮了,发两张2D背景合成的练习,因为没有内涵及只渲了小图等因素,还是不好意思发到作品区,发到这里作个IBL的参考吧,大家狠批别客气。
来自:86VR
|