码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 手部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

  • 相关阅读:
    Java版企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis
    209.Flink(四):状态,按键分区,算子状态,状态后端。容错机制,检查点,保存点。状态一致性。flink与kafka整合
    苏宁易购商品详情 API 返回值说明
    微信小程序 java ssm电影迷爱好者交流平台
    阿里云r7服务器内存型CPU采用
    协同办公系统OA实施过程中需要注意的细节
    Qt 使用RAW INPUT获取HID触摸屏,笔设备,鼠标的原始数据,最低受支持的客户端:Windows XP [仅限桌面应用]
    MySQL5.5.28版本的安装与配置完整版
    【AN基础工具—动画人物绘制】
    加密与安全_深入了解Hmac算法(消息认证码)
  • 原文地址:https://blog.csdn.net/Milow88/article/details/127992476
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号