什么是 Phiz?
Phiz 是一款开源工具,让你能够在浏览器中直接进行面部动作捕捉,使用任何移动设备或电脑上的摄像头。随后,你可以将 blendshape 数据发送到本地或远程的另一个浏览器或主流游戏引擎;你甚至可以选择通过 Phiz 的跨平台应用使用 OSC 协议广播 blendshape 数据。
Phiz 正在开发中,并频繁更新。如果你遇到问题,请确保你使用的是最新版本。
它是如何工作的?
-
面部动作捕捉……就在你的浏览器中
Phiz 的动作捕捉系统是使用 Mocap4face 和 Google mediapipe 的机器学习模型构建的。无需 iPhone LiDAR 或 RGBD 摄像头! 底层的 ML 代码并非固定不变,每当有更好的模型时都会进行更新。
-
数据流:支持 Unreal 和 Unity
Phiz 包含自定义插件,可在 Unreal Engine 和 Unity 中启动 WebSocket 服务器,用于接收来自浏览器的实时数据。这些插件还包含方便的预设,你可以轻松将其与流行的 3D 化身配合使用,例如 Metahumans 和 ReadyPlayerMe 角色。
-
数据流:浏览器到浏览器 & 浏览器到 OSC 应用
Phiz 使用 WebRTC(视频通话中使用的协议)将数据从一个浏览器发送到另一个浏览器,或从浏览器发送到应用。然而,完全不会发送任何图像或视频。WebRTC 还支持点对点安全连接和低延迟。
-
ARKit 支持
Phiz 使用与 ARKit 相同的 blendshapes。有关 blendshape 名称和顺序的更多信息,请参阅 Blendshapes 页面。
如何使用?
免责声明: 请确保在录制期间浏览器页面保持活动状态。
-
访问 capture 页面 并允许网站访问您的摄像头。
-
选择正确的摄像头,选择所需的帧平滑度,并决定是否使用敏感动作捕捉。
-
选择以下两种方法之一来发送捕获的数据:
-
本地:
- 使用 Phiz 的自定义插件,通过您定义的 URL 和端口将数据直接发送到 Unreal engine 或 Unity。
- 有关更多信息,请参阅 文档。
-
远程:
- 点击以 "p-" 开头的 8 位字符代码(例如 p-AwCodE)以复制它。
- 要将数据发送到另一台设备(例如,在手机上录制并在 PC 上的 Unreal 中控制虚拟形象):
- 在另一台设备上打开 receive 页面。
- 粘贴已复制的 8 位字符代码。
- 您现在应该能在设备上看到实时流数据,并能够本地共享它。
- 要将数据发送到 Phiz App 以广播 OSC 数据:
- 下载并安装适用于您平台的 Phiz App。
- 打开应用并粘贴 8 位字符代码。
- 数据现在将以 OSC 格式在您选择的端口上可用。
-
如果所有连接都正确但没有任何数据显示,请尝试刷新页面以生成新的代码。
插件
Unity
- 从发布页面下载最新的 Unity 文件(phiz-unity-vx.x.x.zip)
- 解压后,将内部所有文件拖入您的 Unity Assets 文件夹。
- 查看 Example.cs 了解基本用法。(发布压缩包中也包含此文件。)
查看文档获取更多示例!
Unreal
- 从发布页面下载最新的 Unreal 文件(phiz-unreal-vx.x.x.zip)
- 解压它。将 Plugins 文件夹复制到您的项目根文件夹内。
- 重启 Unreal。现在所有必要的模块将自动编译。
查看文档了解 metahuman 的快速设置以及常见虚拟形象的其他方法。
OSC 应用
Phiz 还提供适用于 Windows、MacOS 和 Linux 的应用程序。这些应用程序可以从网站接收数据,并向您桌面上的任何软件发送 OSC 数据。
-
从发布页面下载适用于您平台的最新应用程序
-
按照应用安装指南安装应用程序。请注意,如果开发者未支付年度费用,Apple 和 Microsoft 可能会警告您该应用可能存在安全风险。然而,这是一个开源项目,所有源代码均可在仓库中供审查。
-
输入以 "p-" 开头的 8 位代码(例如,p-AwCodE)。如果连接成功,您应该能看到传入的数据。
-
输入 OSC 数据要发送到的端口。现在数据可以在您的整个计算机上使用。
查看 PureData 示例 以了解如何使用 52 个 blendshapes 作为合成器。
数据格式
所有数据都遵循 OSC 格式。 目前有 4 个数据通道。
-
/phiz/blendshapes
一个浮点数组 [52 个 blendshape 值],范围从 0.0~1.0。查看 此处 了解 blendshapes 的顺序。
-
/phiz/headRotation
一个浮点数组 [x,y,z,w],范围从 -1.0 ~ 1.0。
这些是额外的大致从 eyeLookAt blendshapes 估算出的眼睛旋转。通常不需要,因为常见的 avatar 在其 blendshapes 中已经内置了眼睛旋转。
-
/phiz/leftEyeRotation
一个浮点数组 [x,y,z,w],范围从 -1.0 ~ 1.0。
-
/phiz/rightEyeRotation
一个浮点数组 [x,y,z,w],范围从 -1.0 ~ 1.0。
所有旋转都是右手坐标系、Y 轴向上、Z 轴向前的四元数。

-
/phiz/version
当前 Phiz 网站版本的字符串。
正在使用 Phiz?
如果您正在使用 Phiz,请告诉我们!我们很乐意看到您使用 Phiz 制作的内容,并很高兴展示您的作品。
许可证
Phiz 根据通用公共许可证 v3 的条款分发。简而言之,这意味着:
- 您可以出于任何目的自由使用 Phiz
- 您可以研究 Phiz 的工作原理并对其进行修改
- 您可以分发 Phiz 的修改版本
请注意,一旦您分发了 Phiz 的修改版本,您还必须将您对源代码的修改以 GPLv3 的形式发布。
Phiz 的附带插件根据 MIT 许可证发布。 这意味着您可以放心地将这些插件包含/嵌入到您的 Unity 和 Unreal 项目中。

