面部追踪模组

面部追踪模组

这个Mod允许你分享你的面部表情。

社交

facetrackermod

警告:这是一个难以处理的模组!
此模组需要特定的客户端。

下载地址:https://github.com/tia9os/facetracker
或(旧版)下载地址:https://github.com/tia9os/facetrackmod/releases

说话

玩家悲伤

facetrackermod 将本地摄像头表情追踪连接到 Minecraft,并在玩家面部显示检测到的情绪。该模组由 Antara89 为 Fabric 1.21.1 构建,并在 ./client 文件夹中包含一个独立的 Java 桌面客户端。

配套客户端在本地读取摄像头,估算当前面部表情,并通过本地主机将紧凑的表情数据发送到 Minecraft。Fabric 模组接收该数据,通过服务器同步,并在玩家身上渲染面部覆盖纹理,以便其他玩家也能看到表情。

功能

  • 通过附带的 Java 客户端实现实时摄像头表情追踪。
  • 通过 Fabric 网络实现多人表情同步。
  • 玩家面部覆盖纹理,支持中立、开心、悲伤、惊讶、说话、眨眼、单眼眨和专注等表情。
  • 可选的面部部件分层,包括嘴巴、左眼、右眼、左眉毛和右眉毛。
  • 从 run/expressions 加载的自定义 8x8 PNG 面部纹理。
  • 支持 base.png,在绘制表情前替换原始面部背景。
  • 纹理同步:每位玩家本地表情纹理集在上传至服务器后,会在其他玩家加入时分发。
  • 可选的本地 HUD 面部预览,支持配置角落、偏移和缩放。
  • 桌面客户端内置本地录制和快照工具,用于测试和调优。

工作原理

  1. 在 Minecraft 客户端和服务器上安装 Fabric 模组。
  2. 启动已安装模组的 Minecraft。
  3. 在仓库根目录运行配套应用:
./gradlew -p client run

在 Windows 上,请使用:

.\gradlew.bat -p client run
  1. 在面部表情客户端中启动摄像头。
  2. 客户端通过 127.0.0.1:34321 向 Minecraft 客户端发送表情更新。
  3. 如果服务器已安装模组,Minecraft 客户端会将表情状态和纹理集发送至服务器。
  4. 安装了模组的服务器将数据分发给其他模组客户端。在普通服务器上,表情面部仍在本地为你渲染,但其他玩家无法看到。

自定义纹理

表情纹理存储于:

run/expressions/

支持的文件:

base.png
neutral.png
happy.png
sad.png
surprised.png
talking.png
blinking.png
winking.png
focused.png

每个文件应为 8x8 的 PNG。表情纹理中的透明像素会暴露出 base.png 图层。base.png 中的透明像素会暴露出原始 Minecraft 皮肤面部。

面部部件分层为可选功能。创建以下文件夹以启用:

run/expressions/parts/

当 parts 文件夹存在时,模组会创建并同步缺失的默认部件纹理,并在所有选定部件可用时渲染这些图层,而非完整表情 PNG:

parts/mouth/neutral.png
parts/mouth/happy.png
parts/mouth/sad.png
parts/mouth/surprised.png
parts/mouth/talking.png
parts/left_eye/open.png
parts/left_eye/closed.png
parts/left_eye/focused.png
parts/right_eye/open.png
parts/right_eye/closed.png
parts/right_eye/focused.png
parts/left_eyebrow/neutral.png
parts/left_eyebrow/raised.png
parts/left_eyebrow/sad.png
parts/left_eyebrow/focused.png
parts/right_eyebrow/neutral.png
parts/right_eyebrow/raised.png
parts/right_eyebrow/sad.png
parts/right_eyebrow/focused.png

本地桥接

本地 UDP 桥监听地址:

127.0.0.1:34321

模组仍接受原始的 FaceTrack 数据包格式:

facetrack|1|timestampMillis|expression|confidence|faceCount|smileScore|mouthOpen|mouthWide|sadScore|blinkScore|winkScore

配套客户端现在发送包含部件信息的数据包:

facetrack_parts|1|timestampMillis|expression|confidence|faceCount|smileScore|mouthOpen|mouthWide|sadScore|blinkScore|winkScore|fps|mouth|leftEye|rightEye|leftEyebrow|rightEyebrow

即使第一个表情数据包到达前,base.png 面部图层也会为本地玩家渲染。同步的远程玩家基础纹理在其纹理集接收完成后渲染。

该模组可在普通服务器上仅作为客户端使用。在此模式下,/facetrack status 显示 Server sync: local only;本地面部覆盖和 HUD 预览仍正常工作,但远程玩家不会收到你的表情状态或纹理。

HUD 面部预览

模组还可将本地表情面部渲染为 HUD 预览。默认禁用,启用后默认显示在右上角。

/facetrack hud on
/facetrack hud off
/facetrack hud status
/facetrack hud corner top_right
/facetrack hud corner top_left
/facetrack hud corner bottom_right
/facetrack hud corner bottom_left
/facetrack hud offset 8 8
/facetrack hud scale 6

偏移量从所选角落向内测量。HUD 设置保存于:

run/config/facetrackermod-client.properties

隐私

摄像头视频由配套 Java 客户端在本地处理。视频帧不会发送到 Minecraft 服务器。客户端仅向本地 Minecraft 客户端发送紧凑的表情值,模组则通过服务器同步表情状态和小型 8x8 纹理 PNG。

要求

  • Minecraft 1.21.1
  • Fabric Loader
  • Fabric API
  • Java 21
  • 用于实时表情追踪的摄像头
  • 附带的 ./client 应用用于摄像头输入

备注

表情检测使用 OpenCV Haar 级联和轻量级启发式算法,因此准确度取决于光照、摄像头位置和校准。为获得最佳效果,请确保面部清晰可见,并在校准时保持中性表情。