龙空技术网

手把手教你一套能准确还原物体固有色的LookDev​流程

GameRes游资网 57

前言:

此刻各位老铁们对“unity找不到物体”大体比较珍视,朋友们都想要了解一些“unity找不到物体”的相关知识。那么小编在网摘上搜集了一些关于“unity找不到物体””的相关知识,希望咱们能喜欢,各位老铁们快快来了解一下吧!

这篇文章围绕摄影测量法,以努力还原被摄物体固有色为目标,记录了LookDev一套相对完整的开发与操作流程。

LookDev是个科学性很强的工作,目的不同,开发的内容和呈现的效果也会完全不同。其中极力还原被摄物体的固有色,一直是LookDev的开发重心和难点。而本次分享的DCRAW流程,正好能够以更为科学的方式,最大程度地解决这个问题。同时,本文还将涉及到DCRAW流程中其他重要软件(PTGUI与RealityCapture)的使用要点,和两种线性白平衡处理技法等多方面信息,希望能够给各位带来一些帮助。

流程大纲:

设备清单拍摄流程照片处理HDR 图像制作摄影测量(头像篇-3D扫描)摄影测量(实物篇-3D扫描)在 unity 搭建比对环境后记

一、设备清单

单反相机:全画幅、可全手动调整相机各项参数(以佳能 5D Mark III为例)鱼眼镜头:佳能 EF 8-15mm F/4L USM —— 用于拍摄环境制作HDR图像通用镜头:佳能 EF 24-70mm f/2.8L II USM —— 用于拍摄参考物体三脚架2个:重量大且稳固云台:带有水平和俯仰旋转刻度(数字刻度更佳)快门线:有助于稳定拍摄X-Rite色卡灰球、铬球、并架器

拍摄所需的参考物体光谱照度仪:可测量光照度、色温、显色指数具有高显色指数的灯具多套卷尺量角器iPad Pro:带有 3D 重建功能, 用于重建拍摄环境电工胶布/记号笔 —— 用于标记相关信息笔记本 —— 用于数据记录

二、拍摄流程

2.1 拍摄要求

要求:

无过多干扰光的室内环境室内最小长宽大于2米高显色指数的灯具作为照明光源开启光源后要静置一段时间(可保证光源输出功率稳定)再进行拍摄

2.2 拍摄环境360度全景图像

拍摄:

1. 假设灰球和铬球的并架组放置点为拍摄原点,使用电工胶带把原点位置标定在地面上

2. 放置三角架至原点,调平,放置相机后,镜头高度与人眼齐平

注意相机固定支架与三脚架的放置关系,保证镜头轴心与三脚架中心对准

3. 设置相机模式为全手动模式,设置 ISO 为100,光圈优先,光圈设置为f8,白平衡设置为5600K,设置曝光包围盒为(-3到+3),存储格式为 Raw,关闭HDR 功能

设置f8的光圈拍摄,可以使图像锐利,减弱炫光

4. 拍摄方位两组

第一组拍摄方位:保持仰角30度,水平旋转0度、120度和240度

第二组拍摄方位:保持俯角30度,水平旋转60度、180度和300度

如有可编程自动步进电机设备,只需完成编程(静置间隔时间需要设置60秒以上以防设备在自抖动下拍摄),自动完成多角度拍摄

5. 使用鱼眼镜头,每个方位拍摄7张不同快门下的图像(相机自动完成,共计42张图像)

为防止拍摄抖动,使用快门线进行拍摄

2.3 拍摄参考图像

标定拍摄位置:

1. 将灰球和铬球的并架器通过三角架放置在拍摄原点,调平,高度与人眼齐平

2. 找到灰球光比最大的角度,标设方位,使用卷尺从原点到该方位量取1.5米 ,把该点用胶带标记为1号位

3. 使用量角器每隔45度量取一个方位,分别记为2、3、4、5、6、7、8号位,同样每个号位也是从原点测量1.5米,用胶带在地面标记位置

测量灯光照度:

4. 使用光谱照度仪测量照明光源的照度值,色温和显色指数,记录在笔记本上

光源一般都会使用灯罩,把灯罩划分为12个区域和一个中心区域,需要记录13个区域的光源信息,方便进行数字还原和模拟每个光源都要记录上述一组数据光谱照度仪与灯罩保持平行,测量时两者距离保持在1厘米左右

拍摄参考:

5. 放置 X-Rite 色卡在并架器上,打开灰色卡面,把灰卡面正对相机放置,保持卡面与相机镜头垂直,让光线直射卡面,不被影子覆盖

6. 调整相机参数,拍摄灰色卡面(这两个步骤用于自定义相机白平衡)

7. 通过前面测量灯光,可以得知灯光的色温参数,调整相机白平衡参数至相同数值

8. 打开24色卡面,同样把卡面正对相机放置,保持卡面与相机镜头垂直,让光线直射卡面,不被影子覆盖

9. 设置相机 ISO 为100,光圈f8,设定合适焦长,调整不同快门速度,借助快门线拍摄测试,直到色卡的拍照效果亮度适合且不曝光,如下图示意

10. 保持以上相机参数设置,在每个标定的相机位置上拍摄一张照片

2.4 扫描拍摄环境

重建场景:

1. 用iPad pro打开重建模式

2. 缓慢移动与旋转,扫描整个场景后重建该场景

无法对反射物体(金属物件)进行扫描还原以上两个步骤的目的是为在unity中还原光源和物体位置提供物理参考

三、照片处理

3.1 Raw 格式

对于数码相机来说,Raw 文件是原始的、未被处理的数据。相比 JPEG,Raw 文件记录了更多的场景信息,保留了更宽广的色域以及动态范围,也留下了更为自由的后期处理空间。但是不同厂商的相机一般都拥有自己的 Raw 格式,比如常见的 *.CR2(Canon)、*.NEF、*.ARW、*.ORF(Olympus)、*.RAF(Fuji)、*.DNG(Adobe、Leica)等。每个厂商都有自己的软件来读取 Raw 文件,第三方Adobe Camera Raw、LightRoom也同样可以处理 Raw 文件。这些软件虽然通过图形界面提供了简洁易懂的处理流程,但是遗憾的是它们能导出的都并非真正意义上的 Raw 数据,即传感器直接记录的、与照度成线性关系的第一手数据。

3.2 DCRAW 简述

DCRAW 是一个由David Coffin编写的,可以运行在任何操作系统上,用于处理任何数码相机任何Raw数据的免费程序(相机市场上有各种品牌厂商,各家都有自己 Raw 格式,每家厂商也不公开自己的格式标准,因此解码这些Raw 文件的软件都由各厂商自己提供,属于私有软件)。DCRAW 没有图形用户界面,是一个100%的命令行应用程序,它不需要安装,只需将可执行文件复制到适当的路径名中,并从终端控制台调用它即可。DCRAW 虽然外表并不华丽,但是它堪称技术分析与研究的完美工具,它不对数据进行任何加工处理,让你认为它输出的数据非常接近原始数据,DCRAW 可以做的事情比其他更流行的商业软件(如Adobe Camera Raw)更出色。

上图为佳能自己的软件读取Raw文件

上图为DCRAW处理读取Raw文件

3.3 DCRAW 流程处理360度全景图素材

处理步骤:

1. 下载DCRAW程序

解压后,存在三个文件(dcraw_emu.exe — DCRaw运行文件、libraw.dll — DCRaw的动态链接库、hdr.bat用于批量处理 Raw 文件)

2. 将拍好的照片(CR2或CR3格式)存放在一个文件夹下,该存放路径不能出现中文字符或其他不通用字符

存放路径如:D:\Users\RA_HighLow\HDR

3. 修改 hdr.bat 文件并保存

命令形式:for /r 存放路径 %%i in (*.后缀名) do dcraw_emu 参数选项 %%i

CR2格式如:for /r D:\Users\RA_HighLow\HDR %%i in (*.CR2) do dcraw_emu -v -4 -T -o 6 %%i

CR3格式如:for /r D:\Users\RA_HighLow\HDR %%i in (*.CR3) do dcraw_emu -v -4 -T -o 6 %%i

参数选项说明:“-v” 打印输出信息, “-4” 16位线性,类似“-6 -W -g 1 1”, “-T” 输出图像为TIFF格式, “-o 6” 输出色彩空间为ACES

4. 执行批处理文件 hdr.bat,处理输出过程用时较长,文件越多,用时越长

5. 将输出的 TIFF 文件分拣到一个新的文件夹中

6. 打开 Photoshop ,对所有的 TIFF 文件进行32位转换并保存

这个过程利用 Photoshop 的动作和批处理功能,可以自动化地完成转换操作转换为32位一方面是为了保障不损失数据信息,另一方面是合成HDR图像时,转换后的素材也不会被HDR拼接软件修正

3.4 DCRAW 流程处理参考图像

处理步骤:

1. 将拍好的参考照片(CR2或CR3格式)存放在一个文件夹下,该存放路径不能出现中文字符或其他不通用字符

2. 修改 hdr.bat 文件并保存

命令形式:for /r 存放路径 %%i in (*.后缀名) do dcraw_emu 参数选项 %%i

CR2格式如:for /r D:\Users\RA_HighLow\Reference %%i in (*.CR2) do dcraw_emu -v -4 -T -o 1 %%i

CR3格式如:for /r D:\Users\RA_HighLow\Reference %%i in (*.CR3) do dcraw_emu -v -4 -T -o 1 %%i

参数选项说明:“-v” 打印输出信息, “-4” 16位线性,类似“-6 -W -g 1 1”, “-T” 输出图像为TIFF格式, “-o 1” 输出色彩空间为sRGB

3. 执行批处理文件 hdr.bat,处理输出过程用时较长,文件越多,用时越长

4. 将输出的 TIFF 文件分拣到一个新的文件夹中以备对比使用

四、HDR图像制作

4.1 PTGUI 简介

PTGUI 是一款功能强大,体积小巧的全景图片拼接软件,其五个字母来自于Panorama Tools Graphical User Interface。使用 PTGUI 可以快捷方便地制作出360 * 180度的“完整球型全景图片”,拼接后的图像明暗度均一,其工作流程也非常简便。它能够自动读取底片的镜头参数,识别图片重叠区域的像素特征,然后以“控制点”的形式进行自动缝合,并进行优化融合。它的全景图片编辑器有更丰富的功能,支持多种视图的映射方式,用户也可以手工添加或删除控制点,从而提高拼接的精度。伴随版本迭代,它还支持多种格式的图像文件输入。

4.2 拼合HDR图像

使用 PTGUI 试用版(功能完整,只是输出图像带有水印)介绍HDR图像的拼合过程。

拼合步骤:

1. 打开PTGUI,点击 Load Images...按钮,选择所有32位图像素材载入

2. 在弹出的对话框中,将 Lens type 设置为 Canon EF 8-15mm F/4L Fisheye USM (拍摄素材所用到的镜头)

3. 素材导入后,点击“ enable HDR mode ”,在弹出的对话框中选择第一个选项,完成操作后 PTGUI 会自动将曝光不同的同一素材合并

4. 素材自动合并后,点击左侧的“ Crop ”,可以看到素材上出现一个圆形虚线的裁剪区,可以调整圆形区的大小以确定裁剪范围

5. 依次按序号点击素材,将每组素材都进行裁剪,裁去不好的区域(如蓝边、光晕)以保证今后拼合效果的准确性

6. 点击左侧的“ Project Assistant ”,点击 Align images 按钮,进行图像的对齐拼接操作

7. 经过一小段时间的处理,拼合好的图像会在一个新窗口中呈现出来

8. 点击右侧的“ Tone mapping ”按钮,勾选掉 “ Apply tone mapping ”选项,取消色调映射

色调映射(Tone Mapping),即压缩HDR图像的动态范围至输出设备的动态范围以下,使高动态范围HDR图像能够适应低动态范围显示器的显示

9. 点击右侧的“ Post Process ”按钮,将所有参数的数值设置为0,即取消所有对图像的处理效果

4.3 输出HDR图像

输出步骤:

1. 点击左侧的“ Exposure / HDR ”,将 “ Precision ”设置为 Float,注意 “ Tone map stitched panorama ”应是未勾选状态

2. 点击“ Settings... ”按钮,将所有参数设置为 Disabled

3. 点击“ Optimize now! ”按钮,经过优化后,应生成一条水平直线

4. 点击左侧的“ Create Panorama ”,按照下图顺序进行设置和操作,最后点击“ Create Panorama ”按钮输出HDR图像

五、摄影测量(头像篇-3D扫描)

5.1 头像拍摄

通常3D扫描实验室里有一套专业头像拍摄设备(Light Stage),利用这套设备可以快速得到人物头像素材。

拍摄步骤:

1. 人物进入设备内部,直立坐正,头后部紧贴支架,表情自然,眼睛直视前方,头部保持静置

2. 通过设备控制软件启动拍摄,可以同时得到不同角度的头像照片(注:这里用DNG格式进行预览,原始照片为CR3格式)

5.2 DCRAW 流程处理素材

处理步骤:

1. 将拍好的参考照片(CR3格式)存放在一个文件夹下,该存放路径不能出现中文字符或其他不通用字符

2. 参照3.4的操作步骤,完成对头部素材的转换工作

命令形式:for /r 存放路径 %%i in (*.后缀名) do dcraw_emu 参数选项 %%i

参数选项说明:“-v” 打印输出信息, “-4” 16位线性,类似“-6 -W -g 1 1”, “-T” 输出图像为TIFF格式, “-o 6” 输出色彩空间为ACES

3. 将输出的 TIFF 文件分拣到一个新的文件夹中

4. 利用拍摄好的色卡(下左图Pic,已完成 DCRAW 的转换,同时也转换至32位),使用线性白平衡法得到校正后的图像(下右图)

5. 在前一步使用线性白平衡处理时,会得到两种颜色(0.6的灰色和拍摄时色卡的颜色——上图左Pic左下角第二个灰色块),利用这两种颜色对所有的头部素材进行线性白平衡处理

这里使用0.6的灰色作为标准,是因为这个数值的明度和肤色相近线性白平衡法

方式(一)Photoshop 处理法

1.在 Photoshop 中打开图像 Pic,并转换成32位图像

2.新建一个图层(图层 1),将颜色设置为灰色(0.6,0.6,0.6),填充在这个图层中,将图层模式设置为“正片叠底”

3.使用拾色器,取出图5-3 Pic 中左下角第二个灰色块的颜色,新建立一个图层(图层 2)填充该颜色,将图层模式设置为“划分”

4.合并所有图层,转换为16位图像保存(转换16位,在弹出的窗口中按照下图所示设置)

方式(二)Natron 处理法

1.在 Natron 中建立两个 Constant 节点,并使用两个 Merge 节点将素材节点和 Constant 节点连接起来

2.将 Constant1_3 节点的颜色设置为灰色(0.6,0.6,0.6),Merge1_2 节点的操作模式设置为 multiply ,将 Constant1_4 节点的颜色设置为 图5-3 Pic 中左下角第二个灰色块的颜色,Merge2_2 节点的操作模式设置为 divide

3.输出为JPG图像

建议使用第二种方式,比 Photoshop 更准确

5.3 生成头部三维模型

5.3.1 RealityCapture 简介

RealityCapture 是一款摄影测量软件,用于从无序照片(地面和/或航空)或无接缝的激光扫描中创建3D模型。目前最常见应用的领域是文化遗产(艺术和建筑),全身扫描,游戏,测量,测绘,视觉效果(VFX)和虚拟现实(VR)。它的功能包括图像对齐,自动校准,计算多边形网格,着色,纹理,坐标系转换,简化,缩放,过滤,平滑,测量,检查以及各种导出和导入等。RealityCapture 能够混合相机图像和激光扫描,线性工作模式,这意味着如果照片的数量和大小加倍,处理时间也将加倍。RealityCapture虽然对硬件的要求不高,但是高速CPU、大内存和固态硬盘都会提高其处理效率。

5.3.2 生成头部三维模型

下面操作内容以RealityCapture Beta版本为例,简述主要的处理步骤,正式版软件的功能布局虽有所改变,但整体的处理步骤是相同的。

操作步骤:

1. 打开 RealityCapture ,设置界面布局(这种界面布局可以看到更多输入和输出信息)

2. 将经过线性白平衡处理的照片全部导入至 RealityCapture

3. 点击标签 ALIGNMENT,使用 Align Images 命令对齐照片,经过计算生成点云图像

有些照片怎么没有被识别出来?

下图所示:绿框内的照片能够被识别出来,但是红框内的照片就不被识别

解决办法:

点击 Align Images 旁边的 Setting 命令,调整 Image downscale factor 的数值,可以比当前值大一档,然后重新点击 Align Images 命令再计算一次

Image downscale factor 数值合适时,所有的照片就可以被识别了

4. 点击标签 RECONSTRUCTION,使用 Define Ground Plane 命令将头部放置在水平面上,切换 top 视图( SCENE标签下)转正头部朝向

5. 点击标签 RECONSTRUCTION ,使用 Set Reconstruction Region 命令调整裁剪框的大小,去除不需要的部分

6. 点击标签 RECONSTRUCTION ,使用 Normal Detail 命令生成三维模型

7. 点击标签 RECONSTRUCTION ,使用 Colorize 命令生成顶点颜色(这个步骤根据需要可以略过)

8. 点击标签 RECONSTRUCTION ,使用 Simplify Tool 命令简化模型,设置最终模型三角面的数量,这里设置1百万三角面,点击 simplify 执行

9. 点击标签 RECONSTRUCTION ,使用 Texture 命令生成贴图

10. 点击标签 WORKFLOW ,使用 mesh 命令输出三维模型和贴图,根据需求选择模型输出的格式,启用贴图输出,设置贴图格式和大小等等

六、摄影测量(实物篇-3D扫描)

6.1 实物扫描拍摄

实物扫描拍摄可以手持相机围绕拍摄、也可以用无人机围绕拍摄、还可以自制自动旋转台拍摄,形式多样。

注意事项:

相机采用高光圈值以避免背景模糊相机快门速度尽量快以避免运动模糊尽量在阴天环境或均光环境下拍摄以避免实物产生强烈的光影对比环境光照充足以避免相机曝光不足,产生噪点

无法采集的物件:

运动物件光泽度高的物件(如:金属物件、湿润物件)透明物件(如:玻璃、液体)单一颜色物件细小而结构复杂的物件

6.2 DCRAW流程处理素材

处理步骤参照 5.2,不再赘述。

6.3 生成实物三维模型

处理步骤参照 5.3,不再赘述。

七、在Unity搭建比对环境

搭建比对环境是为了验证实物在虚拟环境和真实环境下的物理误差。

7.1 配置环境与灯光

该步骤因项目使用引擎和渲染管线不同而有不同,以下流程仅供参考。

处理步骤:

1. 以项目渲染管线为例,新建场景,命名为 LookDev_ENV ,在 Hierarchy 面板中建立环境配置对象(Global Volume),为其添加 Visual Environment 、HDRI Sky 、Exposure、Tonemapping、Color Grading 组件

2. 在 Project 面板下,导入制作好的 HDR 图像,对其进行相关设置,转换成 Cube Map

3. 在 Project 面板下,导入用 ipad pro 扫描输出的场景文件,并放置在场景中

4. 建立两个面积光,设置好大小,并按照主光和辅光的位置放置

5. 将主光和辅光的强度设置为2:1的关系,大小设置为灯罩的实际尺寸(灯罩宽60厘米,高90厘米)

6. 在场景中创建一平面放置在原点,调整高度和角度至拍照位置,然后为其制作 X-Rite 标准色卡材质,再添加 MainCamera 预制件,调整位置,使其对齐色卡正面,保持与色卡距离1.5米

7. 根据参考照片的拍摄信息(光圈、快门和 ISO),通过换算得到曝光值

8. 隐藏场景,将 HDR 图像添加至 HDRI Sky 组件中,再将上一步换算得到的曝光值添入 Exposure 中

9. 将 Exposure组件的模式设置为“ Fixed ”, 把上面的曝光值也添入 Fixed Exposure 中

7.2 比对测试

处理步骤:

1. 将需要比对的参考照片进行 DCRAW 转换(参考 3.4 DCRAW 流程处理参考图,dcraw_emu -v -4 -T -o 1 , “-o 1” 输出色彩空间为sRGB)

2. 参考照片转换后的格式为 TIFF,再使用 Natron 将其转换为 png 格式,导入至 unity

3. 在 untiy 中导入 RealityCapture 输出的 FBX 模型,指定好模型的材质贴图,放置至场景标准位置(即拍摄位置,头像高度与相机高度齐平)

4. 切换至 Game 窗口,根据参考照片一边设置灯光开关与强度,一边测量色卡右上角第二个灰色块的色彩与明度,直到与参考照片(导入的png图像)相近

5. 经比对,左右两图固有色的效果相近,说明整个 LookDev 的流程是正确的,是可以信赖的

7.3 不同流程比对测试

下图展示了两种不同流程的比对结果,可以看到相同的拍摄照片,经历的流程不同,LookDev 最终呈现的效果差异很大,但是有一点很明确,那就是 DCRAW 的流程最接近照片效果。

八、后记

8.1 作为 LookDev 的标准灰度数值为什么设置为118?

世界上最黑的物质名为梵塔黑,又称“超级黑”,它可以吸收99.96%的紫外线、可见光和红外线。1903年学者提出的韦伯•费希纳定理发现:人类视神经对于亮度倍增或倍减的认知,并非遵循算数平均数,而是几何平均数型态。基于这样的定理,使用几何平均值的算法可以得到0.18的数值(最亮0.9,最暗0.04)。

下面在 Photoshop 中做个实验:

1. 新建一个32位的白色图像

2. 为其填充一个0.18的灰色

3. 将图像转换成16位或8位时,将 HDR 色调按以下方式设置

4. 图像转换后,使用拾色器拾取图像的信息,得到的数值是118

8.2 灯光的显色指数对拍照的影响

光源对物体的显色能力称为显色性。相同光色的光源会有相异的光谱组成,光谱组成较广的光源较有可能提供较佳的显色品质。当光源光谱中很少或缺乏物体在基准光源下所反射的主波时,会使颜色产生明显的色差。色差程度愈大,光源对该色的显色性愈差。显色指数成为定义光源显色性评价的普遍方法。显色指数用Ra表示,Ra值越大,光源的显色性越好。我们把太阳光的显色指数定义为100,在拍摄时,为了能够正确表现物质本来的颜色需要使用显色指数高的光源,其数值越接近100,显色性就越好。

下图展示了两种不同 Ra 灯光的拍照效果,可以看到显色指数为80的灯光拍摄出的照片失真,色彩偏绿,因此我们我们拍摄时灯光都应该选择高 Ra 的。

8.3 未涉及内容

文中未涉及如何获得被摄物体的粗糙度信息,尤其是微结构信息,这个领域还需要更多的探索。

来源于网易雷火艺术中心 ,作者雷火艺术中心

标签: #unity找不到物体