面部跟踪
面部跟踪是 AR 的重要方面,有许多实际使用案例,包括面部效果、滤镜和“试戴”功能,可让用户模拟化妆、眼镜或不同发型。
将应用程序部署到 Android 或 iOS 设备时,Unity MARS 应用程序具有面部跟踪功能。在 Unity Editor 中,Unity MARS 应用程序可以在 Recorded 模式或 Live 模式模拟中使用面部跟踪。Unity MARS 包内容包括默认的会话录制内容(即具有预先录制的面部跟踪数据的视频)。您可以在 Recorded 模式下播放这些视频,从而对录制的面部数据进行测试。Unity MARS 还支持在模拟中针对纯视频进行面部跟踪。视频源可以来自处于 Live 模式的摄像头,也可以来自处于 Recorded 模式的自定义视频。要使用这种面部跟踪,您需要下载并安装 ULSee,这是第三方插件。您仍然可以在没有 ULSee 的 Editor 中创建面罩。
注意:仅当要使用计算机摄像头的实时视频在 Editor 中测试面部内容时,才需要 ULSee。将项目部署到设备时,默认情况下将使用 AR Foundation(前提是该设备支持 AR Foundation)。
AR Foundation 面部跟踪可能支持 Unity MARS 所不包含的某些功能。您可以在同一场景中使用 Unity MARS 和 AR Foundation API 来满足您的项目需求。
使用面罩模板
从 Unity 的主菜单中,前往 Window > MARS > Choose Template,然后选择 Facemask 选项。这将打开一个模板场景,其中包含将面部跟踪整合到应用程序中所需的所有元素,然后需要另外保存场景(菜单:File > Save As)。
要在设计 AR 应用程序时测试面部跟踪功能,请确保 Simulation View 已打开,并将该视图的模式设置为 Live(用于从 Unity MARS 检测到的第一个网络摄像头中获取视频流)或 Recorded(如果您要使用预先录制的视频)。面部跟踪可使用这两个选项。
加载自定义的录制视频
要加载您自己的视频剪辑以便在 Unity MARS 中进行测试,您必须创建一个引用该视频剪辑的会话录制内容资源。在 Project 窗口中,右键单击该视频剪辑,然后选择 Create > MARS > Session Recording from Video Clip。
完成此操作后,必须刷新 Recorded 模式环境。从 Unity 的主菜单中,前往 Window > MARS > Developer > Refresh Session Recordings。
现在,您应该能够在 Device View 的 Environment 下拉列表中看到您的视频。
将数字内容放置在面部
面罩模板将一个头部模型放置在场景的中间。
要创建面罩,请将该模型装饰成人体模型。当您将预制件从项目中拖到面部上时,随着光标悬停在该区域上,不同的关键“界标”(例如眉毛或鼻子)会亮起。释放鼠标键即可将游戏对象锚定到该特征上。Unity MARS 将游戏对象作为面部界标的子游戏对象放置在 Transform 层级视图中。
要重新放置预制件或将预制件移动到其他界标,请选择游戏对象,按住 Shift 键,然后将游戏对象拖动到新位置。
要控制拖动的游戏对象应该如何贴靠和对齐到面部,请使用 Unity 主工具栏的 Placement Options 部分。可用的选项包括 Snap to Pivot 和 Orient to Surface。如果启用 Orient to Surface,还可以选择 Unity 认为哪个方向为“向前”。
注意:如果使用的 Unity 版本早于 2019.3,则主工具栏中不存在这些选项;而是会位于 MARS Panel 的 Placement Options 部分中。
在 Unity MARS 上测试面部跟踪
在 Device View 中测试面罩。如上文所述,可将 Mode 设置为 Live 或 Recorded。
首次选择实时 (Live) 模式时,系统将提示您允许使用摄像头。单击 Allow 即可允许访问和启用摄像头。如果单击 Deny,您将在 Unity MARS 每次尝试使用摄像头时看到控制台警告,提示您如何允许访问摄像头。
在 Mac OS X 版本 10.14 (Mojave) 及更高版本上,操作系统已经处理了摄像头访问权限,但您可以在系统偏好设置 > 安全性与隐私 > 摄像头下允许或拒绝访问摄像头。Unity Hub 的设置可以控制是否所有版本的 Unity Editor 都可以访问摄像头。如果将 Editor 安装在 Hub 外部,则可能会在此视图中看到各个 Editor 版本。
在 Windows 和早期版本的 Mac OS X 上,Unity MARS 将使用自定义提示信息来请求权限,并在 Preferences > MARS 下跟踪相应设置。在此视图中切换 Camera permission 设置可以在初始提示后允许或拒绝访问。
面部跟踪注意事项
要在运行模式下预览面部跟踪应用程序,必须在 Project Settings 中启用 Simulate in Play Mode 选项。从 Unity 的主菜单中,选择 Edit > Project Settings > MARS > Scene Module。