lookdev在电影cg和游戏行业用的比较多,准确定义可以google下,对游戏开发过程中来说,主要是美术在制作物件材质时候,在标准光照环境下,查看以及调整作品到符合要求(最常见的要求就是photo realistic)。
游戏开发中的lookdev是从影视行业发展来的,所以很多地方有继承,但是有些地方也是可以简化,这部分先聊下lookdev的环境。
如置顶图中所示,这个就是一个典型的lookdev的环境,一个标准的室内的光照环境,中间是物件,旁边是灰球铬球以及色板。
在物理正确的流水线中,我们可以确保,在标准灯光环境下正确的物件,最后在渲染结果中就也是正确的。
标准光照环境
所谓的标准光照环境就是使用HDRI(high dynamic range image)来给物件打光,物件受光的计算方式就是IBL(image based lighting),当然是要保证物理正确的。
同时也会把这个HDRI在背景显示出来。
如果lookdev的物件材质,在灯光环境下非常的真实,同时和背景匹配的非常好,那么就是一个比较ok的状况;
标准光照环境一般有这么几个特点:
- 让物件和背景(真实环境)能匹配
- 覆盖游戏的典型case
匹配
这里为何物件要和背景匹配的很好,这个就是从cg中来,电影中常常会出现cg渲染和实拍场景结合,比如冬兵的手臂就是渲染的。
那么渲染出来的物件真实且和场景匹配就非常重要了。
另外一点要做到匹配,就是用于校准渲染器,在真实场景中放置真实的灰球铬球,然后和渲染器用同样环境渲染的结果进行校准,也是重要的一环;
典型case
大部分情况是室外晴天,室外阴天和室内三种情况;
然后根据游戏环境类型,可以有针对具体场景和关卡的光照环境
标准光照环境生成
这里现在比较经济的也是比较常用的是使用相机拍摄,然后对拍摄数据处理,生成一个hdri(high dynamic range image)。
由于相机毕竟不是一个专门的测光仪(虽然做的事情有很大关联性),所以在生成准确数据方面有大量的需要针对其局限性要处理的点。
相机参数设置:
首先相机有快门,iso和光圈几项,都设置到标准量上:
- iso : 100,这个值下,感光器对信号不做加强和减弱,产生早点最小
- 光圈:f/8,是景深虚化最小的设置
然后快门曝光速度根据需要进行调节;
这里EV(exposure value)值就有一个公式:
(EV100就是指ISO100时候的曝光时间(S)和光圈(N))之间的关系;
相机照相的时候,往往会有一些内部的处理,包括内置的白平衡等,这个都要去掉,毕竟我们是要捕捉到精准的数值,不是好看的画面。
精度和范围
在室外,场景亮度从夜间到阴天到晴天差距极大;
相机没法捕捉完全,所以采取多次曝光的方式,来获取不同亮度范围的场景信息:
(23ev的捕捉)
相机本身带来的artifact处理
容易处理的部分:包括white balance(白平衡),色差(chromatic aberration),暗角
不容易处理的部分:扭曲,lense flare等
面向结果的一些矫正
这里最典型的就是亮度矫正;
就是我们不知道中间做的过程是否都准确,以及每一步的误差如何。
那么要引入对结果矫正的步骤,比如对整体亮度。
我们可以使用一个测试亮度的仪器测试场景亮度,然后把做出来的HDRI的亮度计算一下,如果比较匹配,那么才ok;
照片信息向hdri信息转变
- 通过dcraw工具,把raw格式变成linear的16bit的tiff格式
- 做色差,暗角矫正
- 把多级曝光(前面23ev的信息)的信息合成到一个HDR全景图
- 做白平衡和亮度矫正
- 做一些后处理
这里后处理是指,在这个过程中,还是有一些信息的丢失(主要源自太阳光),然后我们使用一些面向结果矫正的方式,把信息矫正过来。
另外就是白平衡,有时候灯光会有一些色彩倾向,这个会给我们lookdev中颜色判定带来困扰,最好是纯色的光。
那么我们就要做一个白平衡:查看色卡的中灰色块,颜色依旧是灰色,那么就是比较好的
reference:
[unity] sig16:An Artist-Friendly Work flow for Panoramic HDRI, url:https://blogs.unity3d.com/2016/08/28/59924/
[DICE]sig14, moveing frostbite to PBR, url:https://www.ea.com/frostbite/news/moving-frostbite-to-pb