Mediapipe4u-plugin
Mediapipe4u-plugin copied to clipboard
编译为安卓程序后,四肢没有动补,手指和躯干转动有动作。
MediaPipe4U 版本
zzz
UnrealEngine 版本
5.4.x
平台
Android
UnrealEngine 类型
Launcher
问题类型
其他
错误详细描述
编译为安卓程序后,四肢没有动补,手指和躯干转动有动。 在一天时间里尝试了所有参数,都无法让四肢在安卓手机上进行动补运动。 也许是有不知道的内容或者设置? 表现为,转动身体躯干会跟随,手指的运动可以捕捉到,但是四肢僵直无响应。 期待回复。
检查动画蓝图是否是上半身模式 (half body), 检查关节是否 lock
收到您的提示后,一直在测试,有点绝望,问题依旧
身体骨骼设置默认是 half body 关节也没有lock锁,于是我增加代码重新设置,问题依旧。
有几个特征
在win上运行正常,在安卓上前后模块有延迟问题,貌似哪里顺序不对会卡住。若同时app会山崩退出。
打开摄像头设置回显后,要在设置参数前加延迟,否者设置有可能无效。
我设置参数里吧关节都lock 后,是有效的,所以代码无错。
下面是设置代码截图
下图有点迷惑,您的范例工程里,用 FindMediaPipeAnimationInstance 可以读取的 MediaPipeAnimInstance
我只能在 FindFirstMediaPipeAnimInstance 里读取出来,在win上测试起来无差别,不知有没有什么差别。
测试手机是3000元安卓性能尚可。
期待回复。
崩溃可以上传一个崩溃日志(其他问题可以开新的 issue).
不用绝望,我开发时候遇到的问题可能是你的好多倍?我想我们可以一起解决你的问题.
让我们继续检查这些:
- 你现在的动画蓝图在 windows 下是否有正常?
- 安卓运行时候日志中是否有错误或警告?
- 是否检查过 M4U 动画蓝图节点上的LOD属性和Mesh 上的 LOD 设置是否匹配, LOD 配置中是否有删除骨骼.
如果 1 正常, 那么几乎可以确定是LOD设置问题.
在win下是正常的,动补也是正常的,动画蓝图 和 骨骼网格体,是在您提供的demo上复制过来的,没有改动 在安卓上,只要启动时,打开摄像头,和创建回放,不并发启动,改为线性,就不会崩溃 骨骼绑定和 LOD,我只是略懂,仔细核对下了感觉相同,因为我是在Demo上复制过来没有删改感觉没什么问题,刚刚我把之前的删除,从新把所有骨骼和动画蓝图又从新在demo上复制过来一次,问题依然如故。 下面是2个切图, pc上动补切图: 隐藏 安卓手机上的截图: 隐藏 安卓上,手指动补是正常的,只是腿 和胳膊 在打开动补的时候会动一下之后几乎不动,转身的时候躯干转动是有跟随转动的,转动头的时候,骨骼网格体整个躯干也会转动,类似转身
那应该就是 mesh 上的LOD 问题了, 你强制 LOD 数量为1. 就是强制使用 LOD0 应该就没问题
另外除非你要自己做后期, 否则不建议你在 android 上用 control rig,有性能损失
似乎问题如您所述,我测试了下强制用 LOD0 无效问题依旧,于是我把 LOD 1 2 3 都删掉了,只保留LOD0,编译后,安卓手机上看不到 mesh 骨骼了,说明安卓用的是除 lod0 之外其他 的LOD,那么安卓强制用lod0无效,删掉其他的,就不显示了,该怎么办呢。先留下回复,我出去溜达一圈回来继续研究这个问题。
直接设置 Lod 数量为1 在安卓上会不显示mesh 必须要加一个移动设备的最小 lod 然后改为0 才能在只有 一个 lod0 时,在安卓设备上显示 网格体,这雷我测试了不下20次,编译->传到手机->如此往复,还是在ue的官方文档找到的
https://dev.epicgames.com/documentation/zh-cn/unreal-engine/setting-up-per-platform-lods
这雷的记下来,不知以后多少人会踩,我感觉安卓用的是lod2 他没用lod3 .
结论,即使用了LOD0 设置为 lod数量为1 ,胳膊腿还是不动,故障依旧,想哭。。。。
期待回复。
你看一下输出里有骨骼映射的表格,min LOD = 0就是强制LOD0的意思, 检查动画蓝图每个节点的 LOD设置,这些都是UE基础知识了, 最后仔细看日志, LOD 问题或者其他错误插件都有日志输出, windows 和 android 用法一样的。window 可以 android 就应该可以, 都测试过
应该不是LOD问题,我在动画蓝图,把 MediaPipePoseSolver 骨骼 删掉,在安卓手机上,打开动补的时候,mesh 模型的胳膊腿都是初始状态,不会变化。在动画蓝图里,把 MediaPipePoseSolver 加上,在安卓手机上,mesh 模型的 胳膊腿,会偶尔变化一下位置。貌似是哪里卡住了,这些在 win系统上都正常。在安卓上 pose 动补 极端卡顿。是卡顿,不是不动。 另外 UE5 里写的 最小LOD 的意思是引用最小那个,不是下标最小。如果设置0 ,是使用所有。翻译成中文有歧义。 希望大师能在安卓上测试下,我就一个小白,接触ue也就几个月。是个dos时代的老古董程序员,多多指导,我虚心学习。 期待回复。
5.4是开发版本,测试过的,那等有空我上传一个 DEMO吧
有没有一种可能,你的摄像头拍不到你的手肘,导致 landmark 评分很低,MediaPipeAnimationInstance (动画蓝图基类)上有三个属性:
- MinPoseScoreThresh
- MinHandScoreThresh
- MinFaceScoreThresh
代表了三个算解器的阈值,设置为 0 可以无条件信任关键点,默认是评分 >= 0.5
效果是,胳膊腿不乱崩了,保持初始状态,不会动。
我尽量的拉远距离,整个身体都在手机摄像头内,依然如故。
实在难搞,白头发又多了。
只能期待您的安卓版的DEMO.来实现目标了。
MeRuning.zip
我这的源码,您看看是不是我那写错了。
有个想法,打开摄像头后,用图片动补,在pc上没问题,在安卓上崩。能实现的话,app对图像的 可拓展空间就更大了。
您之前说在安卓上,做这些不地道,性能不够优秀,其实他更适合娱乐,和新鲜感,这些都是卖点。到不必要非要应用在动补上。所以能在安卓上工作也是一大亮点。
这些阈值属性可以在动画蓝图的类定义的 detail view 上配置的,等有空发一个 DEMO 算了,这样搞很难说是什么问题
找到了,测试了下,问题依旧。
尝试新版本,Android Demo 工程也已经 release:
https://gitlab.com/endink/mediapipe4u-android-demo
这个工程是 5.4 ,由于 5.4 插件打包还有点问题,暂时没发布,你可以先用新版插件看一下,新版插件重构了很多代码,拆分了动补部分到新插件,现有蓝图中的函数可能要重新连接一下
Android Demo 打包测试通过, 已经支持 5.5
抱歉,之前一致无法复现是因为我使用 DEBUG GAME 调试,这个问题已经被定位,20250506 中将被修复
Same as #221