【3D视觉】元宇宙之如何将你的人脸扫描进游戏

FaceBuilder 是 Blender 的一个附加组件,用于根据照片对人脸和头部进行 3D 建模。使用 FaceBuilder,您无需成为经验丰富的 3D 建模师即可创建具有清晰拓扑结构的优质 3D 模型。您首先从不同角度拍摄一些人的照片,然后在每个人身上放置一个模型以构建头部或面部模型。3D 模型稍后可用于在 Blender 中进行雕刻、动画、跟踪或任何其他操作,或导出到文件中并导入到任何其他 3D 软件中。

安装

本视频介绍了完整的安装过程。

它一升升开始以下载ZIP文件与附加从我们的网站。当 zip 文件存储在本地时,您需要在 Blender 中打开Preferences窗口并转到Add-ons部分(Edit > Preferences > Add-ons)。在此窗口的右上角,您将看到该Install…按钮。单击它并选择下载的 .ZIP 文件 - 将安装附加组件。

FaceBuilder for Blender 附加安装

Mac 用户的过程略有不同。当您按下我们网站上的下载按钮时,您会得到一个需要挂载的 .DMG 文件 - 在 Finder 中双击或从网络浏览器下载列表中打开,Safari 通常会自动挂载 DMG 文件。进一步安装所需的 ZIP 文件位于已安装的卷中。这样做是因为许多 Mac 用户在下载后自动解压缩 ZIP 文件。

下一步是在附加组件列表(在网格类别中)中找到“KeenTools FaceBuilder”,然后使用左上角的复选框将其打开。

核心库

不幸的是,由于 Blender 许可证限制,我们无法在附加包中提供我们的核心库,但我们尽可能轻松地独立安装它。有两种方法可以做到这一点:在线离线。两者都可以在我们的附加组件的首选项窗格中访问(编辑 > 首选项 > 附加组件 > KeenTools FaceBuilder)。

如果您要安装我们插件的机器已经联网,那么您可以尝试自动在线安装——只需按下Install online按钮,我们的插件就会下载核心库文件,安装到插件目录并告诉您现在您可以使用附加组件了。

KeenTools Core 自动在线安装

您也可以从我们的网站手动下载核心库,并使用Install from disk按钮指定下载文件的路径。我们的附加组件将安装下载的核心库文件,并告诉您现在可以使用该附加组件。请记住,附加组件和核心库的版本应该相同。

KeenTools Core 手册(离线)安装

控制面板

您可以使用 3D 视口右侧栏中的面板在 Blender 中控制 FaceBuilder。您可以通过按N键或单击视口右上角的小三角形将它们带到屏幕上。

在 Blender 中打开 FaceBuilder 面板

FaceBuilder 有八个面板。在主顶部面板上,您可以创建、删除和选择 FaceBuilder 对象。我们不建议在一个场景中拥有多个 FaceBuilder 对象,因为这会导致混淆。

使用七个附加面板,您可以以各种方式控制所选的 FaceBuilder 对象。

Camera面板可让您修改相机设置。

Views面板上,您可以加载、删除和替换照片,为不同的照片切换到 Pin 模式,打开面部表情(稍后会详细介绍)。一旦您切换到此模式,您也会在此处找到处于 Pin 模式所需的大多数按钮。

Blender 中的 FaceBuilder 面板

Model面板使您可以控制 3D 模型的参数,例如对形状和表情的针脚的响应(刚性)、各种面部部位(鼻子、耳朵、颈部等)的可见性、几何比例和分辨率(高、中、或低聚)。请注意,虽然可以更改建模头部的模型分辨率,但最好在开始塑造它之前确定所需的分辨率。每次更改拓扑结构时,都会以不明显的量失去精确性,但仍然如此。

接下来,我们有PinsWireframe面板,您可以在其中调整 Pin 模式下的 pin 和线框的外观。

Texture面板使您可以访问自动纹理生成的实验功能。

最后,该Blendshapes面板具有 FACS 混合形状功能的控件。您也可以在此处导入带有预先录制动画的 CSV 文件,也可以导出动画模型。

模型初始化

在创建第一个 FaceBuilder 头部之前,最好从场景中移除所有不需要的对象,尤其是放置在场景中心的对象,因为新创建的头部也将放置在中心,然后您可能会遇到以下情况对象会相互干扰。例如,默认情况下,Blender 以场景中的 Cube、Camera 和 Light 开始,您可以使用鼠标选择它们,然后从上下文菜单(鼠标右键)中删除它们,或者您可以只使用快捷方式序列:A→X→D(全选→删除→确认)。

如果尚未创建头部 3D 对象,您可以开始使用 FaceBuilder 创建头部 3D 对象。为此,您需要打开侧边栏,在其中找到 FaceBuilder,然后单击Create a new head放置在 FaceBuilder 主面板上的按钮。

用新头初始化 Blender 的 FaceBuilder

正在加载照片

一旦你初始化了模型,你就可以加载这个人的照片。您可以Views通过单击Add images按钮在面板上执行此操作。可以一次加载多个图像文件。

将图片文件加载到视图中

与照片上人物的距离并不重要,但建议让他们占据画面的最大空间,同时将失真保持在最低限度(例如,不要在靠近拍摄对象的位置使用广角镜头)。此外,重要的是要知道 FaceBuilder 期望图片完全没有镜头失真,所以虽然它不是一个交易破坏者,但如果在使用 FaceBuilder 之前不失真照片,你仍然会得到更好的结果(Blender 中的镜头失真))。

每当您加载新照片时,View都会创建该照片。它是一个由 3D 相机和您加载的图片组成的虚构实体。所以场景中加载到 FaceBuilder 的每张图片都有自己的相机。

相机设置和 EXIF

FaceBuilder 可以为每张照片自动设置焦距。如果有 EXIF 数据,它将被使用,然后您会得到非常精确的结果。如果没有 EXIF 数据,焦距估计将打开并以智能方式使用,同时考虑到每张照片的尺寸。不过,如果您需要手动设置焦距,我们保留手动控制选项。

设置相机

要手动设置相机,您需要知道每张照片使用的 35 毫米等效焦距。您需要打开Camera面板,然后在Focal Length字段中输入值。

固定

加载照片后,是时候决定是否打算使用面部表情了。如果其中一张照片中的被拍摄者看起来没有中性的面部表情,则需要开启面部表情支持。

加载照片后,就该进行我们所说的“固定”了:单击面板上带有图像文件名 ( a View )的按钮之一Views— 您将打开固定模式。Views面板上将出现几个新按钮,在视口中,您将看到加载的照片和 FaceBuilder 3D 模型的网格。现在您可以开始将网格固定到照片上。

它可以手动完成,也可以使用自动面部对齐来完成。对于第二个选项,按下面板Align Face上的按钮Views。然后几个神经网络会在照片上找到一张脸,并设置所有必需的图钉以匹配位置和形状。如果面部表情不是中性的——Allow facial expressions在按下Align Face按钮之前打开复选框——那么表情也会匹配。对您加载的每张照片重复此操作。如果照片上有多个面孔,附加组件将让您选择要固定的面孔。目前对齐结果并不总是 100% 准确,因此在大多数情况下,您可能需要调整位置以创建新的引脚或移动已创建的引脚。

您可以通过单击网格上的任意位置来创建图钉 — 出现在其上方的红色方块点就是我们所说的“图钉”。不需要一次创建很多,而是将头部(或面部)的可区分部分一个一个创建,然后将它们拖到照片上的相应位置。如果您需要移除图钉 — 右键单击​​即可。不要忘记您可以撤消和重做大多数操作,但是对于固定,您通常需要执行两次才能生效——不幸的是,这就是 Blender 的工作方式。

如果您更喜欢手动固定,您可以像以前一样这样做。但我们真的建议从自动对齐开始,因为它可以大大减少固定时间!

对于手动固定,我们建议从 3/4 视图开始,因为它可以为您提供有关头部的更多信息:同时提供前视图和侧视图。但是对于自动对齐,通常最好从正面视图开始。

在固定模式下固定模型

前三个引脚更改网格的位置和比例,使用四个引脚可以更改形状和表达。我们建议从眼角、嘴角、耳朵、鼻子、下巴开始,然后切换到另一个视图以重复相同的“草稿”固定。当您固定了四个或五个视图(例如 3/4 中的两个,正面和两个侧视图)时,您可以返回到您之前固定的视图,并在必要时优化模型位置和形状以创建新的固定。然后,您可以固定更多视图并重复优化过程,直到您对模型的质量感到满意为止。

如果模型感觉太僵硬,请使用Shape rigidityExpression rigidity设置(Model面板)来更改影响模型形状和表达的销钉的数量。

您可以随时按面板上的Remove all pins按钮删除所有引脚Views。在这种情况下,所有红点都将消失,此视图上的网格将重置为默认形状,但其位置将保持不变。

固定视图

通常,您最多需要 7 个视图:正面 1 个、3/4 个中的 2 个、两个侧视图、一个半底视图和一个半顶视图,但如果您觉得需要,您可以随意添加更多视图. 减少也适用于丢失你看不到的细节的明显结果。

关于拍照的一些注意事项。您可以使用任何类型的照片,包括具有非中性面部表情的照片。但重要的是要明白,如果你使用非中性的面部表情和焦距估计,FaceBuilder 算法会因为他们的猜测而获得太多的“自由度”,所以不仅计算变慢,而且模型的准确性也会受到影响. 这就是为什么如果你追求质量,你需要在知道相机设置的情况下拍摄这个人并注意这个人的外表。

在理想情况下,您可以围绕一个人设置多个相机,就像设置摄影测量设备一样,然后立即拍摄所有照片。但通常要求一个人在你拍摄所有需要的照片时放松地坐下或站立 15-30 秒就足够了。另外值得一提的是,如果你让一个人改变他们的头部位置——他们靠近脖子的头部形状会被紧张的肌肉扭曲,所以最好带着相机四处走动,而这个人完全静止。最后要记住的是,如果你打算从照片中抓取纹理——你需要设置适当的均匀照明,否则不同区域的纹理亮度和颜色会有所不同。通常,走到外面一个没有阳光直射的开阔空间就足够了,在这种情况下,阴天天气最好。此外,最好在相机中使用手动白平衡,否则颜色可能会有所不同。

纹理

内置于 FaceBuilder for Blender 的纹理提取算法仍处于早期实验阶段。我们决定将它包含在内,以便为您提供一种简单的方法来获得足够好的东西作为起点。

它使用您固定模型的视图工作:根据模型位置将 UV 贴图的每个像素投影到照片。

在启动纹理创建过程之前,您可以在Texture面板顶部设置纹理分辨率和所需的 UV 贴图。FaceBuilder有4个不同的UV贴图:ButterflyLegacyMaxface,和SphericalButterfly旨在以尽可能少的接缝减少扭曲。我们的LegacyUV 失真更少,但有很多接缝。Maxface为您提供尽可能多的面部分辨率。Spherical是一种稍微改进的流行“圆柱形”UV,可以更好地处理顶部。

FaceBuilder 中的 12 个 UV 贴图 — 4 个 UV 和 3 个拓扑分辨率

按下Create Texture按钮后,您可以选择要用于纹理抓取的视图(没有固定模型的视图将被自动忽略)OK在对话窗口中按下开始抓取和缝合纹理的过程,通常是需要大量的处理能力,也需要一些时间,所以你需要有点耐心。

该过程完成后,如果您选中相应的复选框,您可以看到纹理已应用于对象,如果您没有选中 - 您只会在 Blender 的状态栏中看到一条消息,告诉您纹理已创建 - 然后您可以使用Apply texture按钮应用为纹理自动创建的材料。

您还可以使用此面板上的按钮导出和删除纹理。当您想要传输没有纹理的项目文件(将文件大小从千字节更改为兆字节)时,删除可能很有用。

纹理生成

在“Advanced纹理”面板的部分中,您可以调整纹理抓取算法。最重要的设置是Angle strictnessExpand edges

第一个,Angle strictness,决定了视角如何影响被抓取时的像素颜色。可能的值为 0–100。在 0 处,每个像素将在从该像素可见的所有固定视图中获取的颜色之间具有平均颜色。在 100 时,只会使用“我们正在查看”这个 90° 像素的视图,因此颜色变得更准确,但是您会丢失许多没有 90 度的像素的信息° 视图。通常,最佳值在 10 到 20 之间。

Expand edges设置可帮助您使用边缘像素的颜色扩展纹理边缘。该值确定输出格式高度的扩展百分比。使用它可能有助于隐藏应用纹理上的接缝。

然后我们还有两个超级实验功能:Equalize brightness——它试图在不同的视图上调整像素的亮度,以及Equalize color——调整像素的颜色。当您在不同照片上的脸部具有不同亮度或颜色的部分时,它们可能会有所帮助,因此您会在纹理上看到阴影和色块。虽然有时这些功能效果很好,但如果您打算使用照片进行纹理抓取,那么在拍摄时拥有均匀照明的脸部仍然要好得多。

然后我们还有三个超级实验功能:Equalize brightness- 尝试调整不同视图的亮度,以及Equalize color- 调整像素的颜色。当您在不同照片上的脸部具有不同亮度或颜色的部分时,它们可能会有所帮助,因此您会在纹理上看到阴影和色块。第三个是Autofill试图在智力上填补空白。虽然有时这些功能效果很好,但如果您打算使用照片进行纹理抓取,那么在从多个角度拍摄脸部时,拥有均匀光照的脸部仍然要好得多。

混合形状

头部模型准备就绪后,您可以使用 51 个内置的 FACS 混合形状为其设置动画。按CreateBlendshapes 面板上的按钮生成形状键。你会看到更多的按钮来控制你的混合形状。Delete删除形状键并取消链接动画。Reset value在当前帧中将形状键的值重置为 0,请注意,它不会改变动画,也不会创建关键帧 - 如果要在当前帧中保存此状态,则需要手动执行此操作。

您始终可以为混合形状手动设置动画,为每个关键帧设置它们的值。但是我们可以将预先录制的动画导入为 Live Link Face 格式的 CSV 文件。

要手动控制混合形状,请使用面板Shape keys上的选项卡Object Data PropertiesAnimate面板中的形状键编辑器可让您控制关键帧。

使用形状键面板

您还可以使用面板Load CSV上的按钮导入预先录制的面部动画Blendshapes。FaceBuilder 头部将使用 CSV 文件中的混合形状系数进行动画处理。目前仅支持Live Link Face app格式。该应用程序仅适用于配备 TrueDeph 相机的 iOS 设备,例如 iPhone X 和更新型号。

请注意,动画是从当前关键帧加载的。这意味着您可以连续将多个文件加载到序列中。

Live Link Face(录制的视频和最终动画)

该文件的格式非常简单,因此您可以使用自定义软件解决方案自行编写。您还可以从我们的 FaceTracker 节点为 Nuke导出带有 ARKit 兼容 FACS 混合形状系数的 CSV 文件形式的面部动画。

项目管理、保存和导出

您可以在面部构建过程中轻松保存项目,然后加载它并从您离开的地方继续工作。

我们建议将项目文件保存在您保存其中使用的照片的同一文件夹中,或将照片保存在项目文件旁边的目录中。请记住,Blender 在项目中使用相对文件路径,因此将文件存储在不同的硬盘驱动器上不是一个面向未来的想法。

FaceBuilder 不会将照片包含在项目文件中,因此当您要将项目传输到另一台计算机(或一个人)时,您不仅需要传输项目文件,还需要传输您或您传输的人的照片该项目将使用照片改变头部的形状。

同时,创建的纹理存储在项目文件中,因此首先您将它与项目文件一起传输,其次,它会使您的项目文件变得非常沉重。如果您不想或不需要传输纹理,可以使用面板Delete上的按钮将其删除Texture。您也可以使用Export按钮将其导出,然后将其从项目中删除。

要导出几何图形,您需要在 3D 视口中选择它,然后转到文件 > 导出菜单,您可以在其中选择文件类型并保存模型。我们建议使用 Wavefront (.obj)或 Alembic (.abc)格式,因为其他格式在 Blender 中无法一致工作。但是您可以根据您的工作流程自由尝试选择任何其他格式,有很多格式,包括人们经常用于 3D 打印的格式。

如果您打算通过我们的 FaceTracker 使用头部进行面部跟踪,您需要保持拓扑完整,我们依赖 FaceTracker 中的顶点顺序,因此请不要在导出过程中使用任何类型的自动优化。在这种情况下,您只能使用 Wavefront 和 Alembic 格式,因为 Blender 会使用其他格式修改几何图形,目前没有办法阻止它。

使用 Wavefront (.obj)和 Collada (.dae)格式,您可以将纹理与模型一起导出。如果您选择 Wavefront 格式,纹理文件(.mtl 和 .png)将保存在模型文件旁边,而 Collada 文件会将所有内容嵌入模型。

要导出具有所有混合形状和动画的几何体,请使用面板Export as FBX上的按钮Blendshapes。导出窗口中的所有设置都将配置为导入虚幻引擎或 Unity 游戏引擎。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arthur.AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值