MediaPipeHolisticComponent
Google mediapipe 将 Pose, Hand, Face 地标融合到一个同一个的计算器 holistic 中,MediaPipe4U 将这个计算器封装成 UnrealEngine 组件, 公开了 google 几乎所有的图形(graph)参数,它是整个 MediaPipe4U 的核心组件,也是动作、表情、手指捕捉的数据来源, 同时,它也是 MediaPipe4U 的启动器,整个动补过程都由它发起。
有关 google mediapipe holistic 详细信息,请访问这里:
https://google.github.io/mediapipe/solutions/holistic.html
限制
由于 MediaPipeHolisticComponent 的特殊性,你应该保证整个场景中只有唯一个 MediaPipeHolisticComponent 实例。
Google MediaPipe 参数
MediaPipeHolisticComponent 通过 Options 变量暴露 google mediapipe 的原始参数。
参数名 | 类型 | 说明 |
---|---|---|
InputAngle | enum | 它可以控制让 mediapipe 来旋转图像,不建议使用,因为这回造成和原始图像不一致,优先在 ImageSource 上处理图像 |
InputVerticallyFlipped | bool | 让 mediapipe 垂直翻转,不建议使用,因为这回造成和原始图像不一致,优先在 ImageSource 上处理图像 |
InputVerticallyFlipped | bool | 让 mediapipe 水平翻转,不建议使用,因为这回造成和原始图像不一致,优先在 ImageSource 上处理图像 |
ModelComplexity | enum | mediapipe 提供的模型复杂度,Lite, Full, Heavy,一般设置为 Full 即可 |
SmoothLandmarks | bool | 是否平滑地标,这回影响计算结果,默认为 true |
EnableSegmentation | bool | 是否分割背景,默认为 false,不建议开启,会耗费性能 |
SmoothSegmentation | bool | 分割背景时边缘平滑,默认为 false,不建议开启,会耗费性能 |
UsePrevLandmarks | bool | 是否使用上一帧数据优化动补,这个参数由 MediaPipe4U 自动根据环境修改,程序无需关心 |
控制参数
参数名 | 类型 | 说明 |
---|---|---|
VideoDisplay | enum | 图像回显的方式,Raw 显示原始图像,Annotated 带 MediaPipe 修饰线条的图像,注意,Raw 显示性能高于 Annotated |
MediaPipeSourceInfo | struct | 这是一个只读的变量,你不应改修,获取当前图像源的信息,例如视频高度、宽度、是否是静态图片 |
GraphTimeoutSeconds | int | MediaPipie 计算时图像帧的超时时间,关于这部分信息,请参看 mediapipe bound time 相关文档 |
生命周期回调
MediaPipeHolisticComponent 提供了蓝图可用的生命周期事件(多播委托)
事件 | 说明 |
---|---|
OnVideoTextureCreated | 当回显的视频图像创建时回调该委托 |
OnMediaPipeInitialized | 当 MediaPipe 完成初始化时回调该委托 |
OnMediaPipeStarted | 当 MediaPipe 动补启动时回调该委托 |
OnMediaPipeStopped | 当 MediaPipe 动补停止时回调该委托 |
OnMediaPipeThreadFault | Mediapipe 工作线程发生错误时回调该委托 |
注意,MediaPipeHolisticComponent 的回调发生在任意线程,如果你需要游戏线程,需要自己切换。
函数
函数 | 说明 |
---|---|
StartCamera | 启动摄像头动补 |
StartImageSource | 启动其他类型的图像源动补 |
Stop | 停止动补 |
IsNativeImageSource | 指示当前图像源是一个 Native (普通 C++ 实现)图像源还是一个 UObject 图像源,为 true 表示 Native 图像源,反之,是一个 UObject 图像源,如果 MediaPipe 没有运行,会返回 false |
IsRunning | 用来判断 MediaPipe 是否已经启动 |
GetCurrentCameraParams | 获取当前正在运行的摄像头参数。注意:StartCamera传入的参数可能和此方法返回不一致,设备不支持传入的分辨率或帧率时会自动使用合适的参数打开摄像头 |
MediaPipe 原始数据 (C++)
如果你希望获得 google mediapip 的原始数据,例如地标(Landmarks), 你必须使用 C++ 编程,不支持蓝图。
你可以通过订阅事件 (Unreal Event) 来侦听来自 mediapipe 的原始数据
函数 | 说明 |
---|---|
PoseLandmarksEventTrigger | 获得 Pose 地标 |
LeftHandLandmarksEventTrigger | 获得左手地标 |
RightHandLandmarksEventTrigger | 获得右手地标 |
FaceLandmarksEventTrigger | 获得 FaceMesh 地标 |
PoseWorldLandmarksEventTrigger | 获得 3D 化的 Pose 地标 |
FaceGeometryEventTrigger | 获得 FaceGeometry 数据(地标,顶点) |