手部IK,自制动画,蒙太奇——开门手臂自动弯曲、靠墙手自动扶墙

开门手臂自动弯曲

实现效果:人物做出抬手的开门动画时,若手臂碰到静态网格物体,拳头不会穿过物体,而是会产生手臂IK弯曲动画效果。

重要参考资料:

学习UE4动画蓝图:配置手部IK_YakSue的博客-CSDN博客_ue4手部ik

[UE4蓝图]虚幻4中完整实现脚部IK(一) - 知乎

Unreal Engine 4 Tutorial - IK Part 5 - Hands IK_哔哩哔哩_bilibili

https://docs.unrealengine.com/5.1/zh-CN/ik-rig-in-unreal-engine/

原理:

逆向运动学(Inverse Kinematics)简称IK是相对于 “正向运动学” 的。
“正向运动学” 即从骨骼的上级到下级进行旋转来达到自己想要的姿势,这是一个正向的思维。与此相对的,“逆向运动学” 是已知最后想要达成的姿势,然后反求出骨骼们的旋转。

一、前期准备工作

1、自制开门动画

这里我们不用网络上的动画资源,自己利用小白人现有的Idel动画资源,调整右手臂姿态,打上关键帧,这里不用删除时间轴上的帧,让它时间长度和默认Idel保持同步就好。不建议时间太短

 2、蒙太奇

这里混入混出都不要,改为0。不需要过渡

 3、实现抬手开门动画

可以直接在人物蓝图里调用播放蒙太奇节点,我这里放到动画图表中去实现了,同样的效果。

旋转混合打钩,防止播放蒙太奇动画时,人物不朝前。

 通过以上几张图片,实现了按E播放开门蒙太奇动画,松开E就停止播放蒙太奇动画。这里有个小bug,即蒙太奇本身也是有时间的,所以就算长按E,开门动画也只能保持一定时间后就停止。所以可以进去蒙太奇中将动画资源循环播放

二、手部IK

1、创建“双骨骼IK节点”

UE4里,IK的主要是由双骨骼IK节点实现的。先创建一个:

这个是添加在右手上的IK。

   

 这个节点重点注意Effector Location,这个就是Maya骨骼内容中IK控制柄的末关节上的末端效应器。

蓝色十字即是末端效应器Effector Location,它控制着末关节的位置,父关节的形态位置则会通过IK解算器自动解算。

Joint Target Location 则对应着极向量控制器,决定了IK弯曲的方向。

这里重点就在获取到Effector Location的位置

思路:通过手臂射线,获取到物体和手臂碰撞的位置点,将这个位置点赋予Effector Location,通过“双骨骼IK节点”的解算,实现IK效果。

2、添加插槽

 3、射线函数的创建

 

 4、动画蓝图

数据传递

动画图表

 解决IK抖动问题:(不能完全解决,特殊角度还是会出现这个问题)

在这里插入图片描述

原因可能是手部插槽决定了射线的终点位置,当IK触发时,插槽位置刚好和射线碰撞点位置重叠了,此时射线是Hit还是没Hit?检测不稳定,导致动画蓝图的布尔姿势混合出现两种姿态的来回跳动,导致抖动。 

 所以插槽设置在了靠前的位置,会改善这个情况。

此时再碰撞,手部正好在碰撞点,但是插槽位置更靠前,因此射线检测一般会检测到碰撞 。但是特殊情况,比如侧身位,还是可能出现插槽位置和碰撞位置重叠的情况。

还有一个没发现原因的bug:

射线生成函数,插槽位置要在函数内部直接使用,使用接口外部调用会出错。错在我按上面往前移动了手部插槽位置后,这里获取到的插槽位置还是原来的位置,导致绘制出的射线还是原来的射线长度,没有变长。

               

用这个:

靠墙手自动扶墙

这种效果相对简单点,射线也改由肩膀直接向前(get actor forward vector)发出射线即可,不需要事先做抬手动作,需要加一个骨骼变换,调整扶墙手掌的姿态

具体看

Unreal Engine 4 Tutorial - IK Part 5 - Hands IK_哔哩哔哩_bilibili

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值