endink / Mediapipe4u-plugin

379 stars 52 forks source link

更新脚掌贴地后,人物在校准后向上位移一段距离 #42

Closed wpppan closed 1 year ago

wpppan commented 1 year ago

MediaPipe4U 版本

20230316

UnrealEngine 版本

5.0.3

UnrealEngine 类型

源码编译

问题类型

校准倒计时结束开始IK计算后的Foot骨骼位置一直在很上方的位置,导致人物在倒计时结束后会向上位移一段距离。

错误详细描述

设置如下: image image

地面的射线通道也设置了block 效果如下:(校准倒计时结束后人物就向上位移到了图片的位置) image 射线检测的碰撞点确实是在地板上的,我看文档绿色盒子代表求解后的骨骼位置,效果是向上偏移了很多。

我看文档里面,GrouldSolveSettings分类里面应该是有这个属性的:FeetVerticalOffset,但是貌似并没有暴露出来,想着是不是可以通过这个参数调节一下呢? image 期待收到您的回复!

Maoshanhui commented 1 year ago

遇到过一样的问题,同问

Maoshanhui commented 1 year ago

MediaPipe4U 版本

20230316

UnrealEngine 版本

5.0.3

UnrealEngine 类型

源码编译

问题类型

校准倒计时结束开始IK计算后的Foot骨骼位置一直在很上方的位置,导致人物在倒计时结束后会向上位移一段距离。

错误详细描述

设置如下: image image

地面的射线通道也设置了block 效果如下:(校准倒计时结束后人物就向上位移到了图片的位置) image 射线检测的碰撞点确实是在地板上的,我看文档绿色盒子代表求解后的骨骼位置,效果是向上偏移了很多。

我看文档里面,GrouldSolveSettings分类里面应该是有这个属性的:FeetVerticalOffset,但是貌似并没有暴露出来,想着是不是可以通过这个参数调节一下呢? image 期待收到您的回复!

我试了一下把 Location Solver的 Collision Channel 改成 GroundIK,就OK了,默认的是 WorldStatic

wpppan commented 1 year ago

MediaPipe4U 版本

20230316

UnrealEngine 版本

5.0.3

UnrealEngine 类型

源码编译

问题类型

校准倒计时结束开始IK计算后的Foot骨骼位置一直在很上方的位置,导致人物在倒计时结束后会向上位移一段距离。

错误详细描述

设置如下: image image 地面的射线通道也设置了block 效果如下:(校准倒计时结束后人物就向上位移到了图片的位置) image 射线检测的碰撞点确实是在地板上的,我看文档绿色盒子代表求解后的骨骼位置,效果是向上偏移了很多。 我看文档里面,GrouldSolveSettings分类里面应该是有这个属性的:FeetVerticalOffset,但是貌似并没有暴露出来,想着是不是可以通过这个参数调节一下呢? image 期待收到您的回复!

我试了一下把 Location Solver的 Collision Channel 改成 GroundIK,就OK了,默认的是 WorldStatic

你看我第一张图片右侧的细节面板,碰撞通道已经设置成GroundIK了呀

endink commented 1 year ago

这个图看起来射线检测一切正常,我不明白为什么人物会产生这么大的偏移,原始骨骼人物位置不是在原点吗?你确实可以通过FeetVerticalOffset 修正,这个属性如果你看不到,可能是我还没有发布版本,文档总是提前写的,临时写写不完,但是这个偏移也太大了,我觉得应该搞清楚为什么这样,强行修正只适合原始骨骼不在原点的情况,如果是其他问题产生偏移最好不要依赖 Offset 修正,偏移的产生可能有几种情况:

  1. 你的角色原始根骨骼(第一个骨骼不在原点位置)
  2. 你的 Component 组件初始位置不是在原点

麻烦提供骨骼截图(Skeleton资产的 ViewPort)和 Character 组件 (ViewPort)截图(如果你是用 UE 的 Character 的话)

endink commented 1 year ago

另外,这漂移和标定也有关系,比如你标定以后如果焦距变了,或者标定后人物确实向上移动了太多也会这样,要排除标定产生的问题可以锁定纵向移动