UE5 脚部贴地不穿过地板方案

UE自带的IK RIG和ControlRig技术

【UE5】角色脚部IK——如何让脚贴在不同斜度的地面(设置脚的旋转)_哔哩哔哩_bilibili

实验后这个还是有一部分问题,首先只能保证高度不能穿过,但是脚步旋转还是会导致穿模

IK前,整个模型在斜坡上会浮空

参考制作:https://www.youtube.com/watch?v=YDTxXM-ss5w

没有动画的时候是正常的,有动画后就又回到原来的样子

PowerIK

Ground Settings - Power IK

虚幻引擎插件:使用Power IK轻松愉快地实现脚底板位置矫正-CSDN博客

Foot Placement

Skeletal Controls - Foot Placement Node - #2 by High500 - Character & Animation - Epic Developer Community Forums

https://www.youtube.com/watch?v=ENmX4YupJY8

这个方法成功了

参考视频 https://www.youtube.com/watch?v=BuHhKj71DU0

首先给骨骼建立虚拟骨骼vb_foot_root,vb_foot_l和vb_foot_r

在FootPlacement这里,把VB_foot_root作为IKFoot的Root骨骼,把自己的Foot_r和Foot_L作为FK骨

LegIK这里把VB的IK骨骼加上,FK骨骼和前面一样

使用了节点之后脚部不会穿过地面了

左边是没有使用Foot,右边是使用Foot

这个方案有一定局限性,需要是根骨骼运动动画,动画本身Root位置不能低于地面,不能控制除了Foot骨骼以外的旋转(例如Ball骨骼穿过地面)

脚底部浮空的问题需要使用IKRIG解决

制作脚底IK检测地面

在Ball朝下检测与地面的距离,当和地面的距离在一定范围就判断为浮空,把脚IK向下移动

思路是制作IKRig,利用IK带动骨骼向下移动,同时有逆向运动学,带动身体其他位置防止腿部拉长

参考IK: https://www.youtube.com/watch?v=-1zBeREIQYc&ab_channel=MullerDigital

这个是中文机翻

【UE5】角色脚部IK——如何让脚贴在不同斜度的地面(设置脚的旋转)_哔哩哔哩_bilibili

锁定Pelvis,让角色不会飘飞

设置大腿被Foot带动的的弯曲方向

FootIK需要暴露出变量,在动画蓝图里面使用

//计算脚浮空与踩住地板
void UBlendAnimInstance::HeelFootTrace(FName SocketName,FVector& OutLocation,float& OutHeelDistance)
{ACharacter* Character = Cast<ACharacter>(TryGetPawnOwner());if (!Character){return;}USkeletalMeshComponent* Mesh = Character->GetMesh();if (!Mesh){return;}// 获取脚部位置(从脚尖往下发射)FVector SocketLocation = Mesh->GetSocketLocation(SocketName);// 设置射线检测的起始和结束位置FVector Start = SocketLocation; // 脚底位置FVector End = Start - FVector(0, 0, FootOffset); // 向下发射射线(通过偏移量设置长度)UE_LOG(LogTemp, Log, TEXT("%s 足底的射线位置: Start: %s, End: %s"),*SocketName.ToString(), *Start.ToString(), *End.ToString());// 射线检测FHitResult HitResult;FCollisionQueryParams QueryParams;QueryParams.AddIgnoredActor(Character); // 忽略自己if (GetWorld()->LineTraceSingleByChannel(HitResult, Start, End, ECC_Visibility, QueryParams)){// 射线命中地面FVector ImpactPoint = HitResult.ImpactPoint;// 计算脚部调整距离FVector Correction = SocketLocation - ImpactPoint;UE_LOG(LogTemp, Log, TEXT("%s 足底距离地面的长度 %s"),*SocketName.ToString(), *Correction.ToString());if (Correction.Z >= 0 && Correction.Z <= 8){// 在插值前记录当前 OutLocation 和 CorrectionUE_LOG(LogTemp, Log, TEXT("[%s] Correction.Z 在 [0, 8] 范围内: %f"), *SocketName.ToString(), Correction.Z);UE_LOG(LogTemp, Log, TEXT("[%s] 插值前 OutLocation: %s, Correction: %s"), *SocketName.ToString(), *OutLocation.ToString(), *Correction.ToString());// 执行插值OutLocation = FMath::VInterpTo(OutLocation, Correction, GetWorld()->DeltaTimeSeconds, 10.0f);// 记录插值后的 OutLocationUE_LOG(LogTemp, Log, TEXT("[%s] 插值后 OutLocation: %s"), *SocketName.ToString(), *OutLocation.ToString());// 限制 Z 分量OutLocation.Z = FMath::Clamp(OutLocation.Z, -0.8f, -0.5f);// 记录限制后的 OutLocation.ZUE_LOG(LogTemp, Log, TEXT("[%s] 限制后 OutLocation.Z: %f"), *SocketName.ToString(), OutLocation.Z);// 也可在此打印最终的脚底高度UE_LOG(LogTemp, Log, TEXT("[%s] 现在的高度 %f"), *SocketName.ToString(), OutLocation.Z);}else{// 如果 Correction.Z 不在 [0, 8] 范围内,可以在此打印日志帮助定位问题UE_LOG(LogTemp, Warning, TEXT("[%s] Correction.Z = %f 不在 [0, 8] 范围内,未进行脚部调整"), *SocketName.ToString(), Correction.Z);}}
}

在动画蓝图内使用这个节点,输入脚的位置(foot或者ball)作为脚底检测,然后发射一个向下检测的射线

把输出的值再设置到IK上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/80326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于 js:4. 异步机制与事件循环

一、同步 vs 异步 1. 什么是同步&#xff08;Synchronous&#xff09; 同步代码就是一行一行、按顺序执行的。当前行没有执行完&#xff0c;下一行不能动。 示例&#xff1a; console.log("A"); console.log("B"); console.log("C");输出&am…

如何通过外网访问内网?对比5个简单的局域网让互联网连接方案

在实际应用中&#xff0c;常常需要从外网访问内网资源&#xff0c;如远程办公访问公司内部服务器、在家访问家庭网络中的设备等。又或者在本地内网搭建的项目应用需要提供互联网服务。以下介绍几种常见的外网访问内网、内网提供公网连接实现方法参考。 一、公网IP路由器端口映…

java的输入输出模板(ACM模式)

文章目录 1、前置准备2、普通输入输出API①、输入API②、输出API 3、快速输入输出API①、BufferedReader②、BufferedWriter 案例题目描述代码 面试有时候要acm模式&#xff0c;刷惯leetcode可能会手生不会acm模式&#xff0c;该文直接通过几个题来熟悉java的输入输出模板&…

什么是移动设备管理(MDM)

移动设备管理&#xff08;MDM&#xff09;是一种安全解决方案&#xff0c;旨在监控、管理和保护企业的移动设备&#xff08;包括智能手机、平板电脑、笔记本电脑和计算机&#xff09;。MDM软件是IT部门的关键工具&#xff0c;其核心功能包括设备配置、安全策略实施、远程控制及…

c++中构造对象实例的两种方式及其返回值

c中&#xff0c;构造对象实例有两种方式&#xff0c;一种返回对象实例&#xff0c;一种返回该对象实例的指针。如下所示&#xff1a; 一、两种返回值 RedisConn conn1; //得到实例conn1;RedisConn *conn2 new RedisConn();//得到指针conn2;RedisConn conn3 new RedisConn()…

【Unity笔记】PathCreator使用教程:用PathCreator实现自定义轨迹动画与路径控制

在Unity开发过程中&#xff0c;角色移动、摄像机动画、轨道系统、AI巡逻等功能中&#xff0c;路径控制是常见又复杂的需求之一。如何优雅、高效地创建路径并控制对象沿路径运动&#xff0c;是游戏开发、动画制作乃至工业仿真中的关键问题。 在这篇文章中&#xff0c;我将介绍一…

JAVA实战开源项目:健身房管理系统 (Vue+SpringBoot) 附源码

本文项目编号 T 180 &#xff0c;文末自助获取源码 \color{red}{T180&#xff0c;文末自助获取源码} T180&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

[人机交互]交互设计过程

*一.设计 1.1什么是设计 设计是一项创新活动&#xff0c;旨在为用户提供可用的产品 –交互设计是“设计交互式产品、以支持人们的生活和工作” 1.2设计包含的四个活动 – 识别用户的需要&#xff08; needs &#xff09;并建立需求&#xff08; requirements &…

1. 视频基础知识

1. 图像基础概念 像素&#xff1a;像素是一个图片的基本单位&#xff0c;pix是英语单词picture&#xff0c;加上英语单词“元素element”&#xff0c;就得到了pixel&#xff0c;简称px。所以“像素”有“图像元素”之意。分辨率&#xff1a;指的是图像的大小或者尺寸。比如 19…

代理IP是什么,有什么用?

一、什么是代理IP&#xff1f; 简单理解&#xff0c;代理IP是一座桥梁——你通过它连接到目标服务器&#xff0c;而不是直接暴露自己。这里的“IP”是网络世界中的地址标签&#xff0c;而代理IP在运行时&#xff0c;蹦跶到台前&#xff0c;成为目标服务器看到的那个“地址”。…

日常代码逻辑实现

日常代码逻辑实现&#xff1a; 1.防抖 解释&#xff1a; 防抖是指n秒内只执行一次&#xff0c;如果n秒内事件再次触发&#xff0c;则重新计算时间 应用场景&#xff1a; 搜索框输入联想&#xff08;避免每次按键都发送请求&#xff09;窗口尺寸调整 代码实现&#xff1a;…

北斗导航 | RTKLib中模糊度解算详解,公式,代码

模糊度解算 一、模糊度解算总体流程二、核心算法与公式推导1. **双差模糊度定义**2. **浮点解方程**三、LAMBDA算法实现细节1. **降相关变换(Z-transform)**2. **整数最小二乘搜索**3. **Ratio检验**四、部分模糊度固定(Partial Ambiguity Resolution, PAR)1. **子集选择策…

基于大模型的母婴ABO血型不合溶血病全方位预测与诊疗方案研究

目录 一、引言 1.1 研究背景与目的 1.2 国内外研究现状 1.3 研究方法与创新点 二、母婴 ABO 血型不合溶血病概述 2.1 发病机制 2.2 临床表现 2.3 流行病学特征 三、大模型在母婴 ABO 血型不合溶血病预测中的应用 3.1 模型选择与构建 3.2 预测指标与数据输入 3.3 模…

驱动-互斥锁

互斥锁可以说是“量值” 为 1 的 信号量&#xff0c; 最终实现的效果相同&#xff0c; 既然有了信号量&#xff0c; 那为什么还要有互斥锁呢&#xff1f; 这就是我们这里需要了解并掌握的 文章目录 参考资料互斥锁的介绍互斥锁结构体 - mutex互斥锁 API互斥锁实验源码程序-mute…

人工智能100问☞第17问:智能体的定义及其基本特征?

目录 一、通俗解释 二、专业解析 三、权威参考 智能体是能够通过传感器感知环境、自主决策并借助执行器采取行动以实现特定目标的智能实体或系统。 一、通俗解释 智能体就像一台能自己“看、想、动”的智能机器。比如你手机里的语音助手&#xff0c;它能听懂你说的话&…

Linux系统入门第十一章 --Shell编程之函数与数组

一、Shell函数 1、函数的用法 Shell函数可用于存放一系列的指令。在Shell脚本执行的过程中&#xff0c;函数被置于内存中&#xff0c;每次调用函数时不需要从硬盘读取&#xff0c;因此运行的速度比较快。在Shell编程中函数并非是必须的元素&#xff0c;但使用函数可以对程序进…

Baumer工业相机堡盟工业相机的工业视觉中为什么偏爱“黑白相机”

Baumer工业相机堡盟工业相机的工业视觉中为什么偏爱“黑白相机” Baumer工业相机​为什么偏爱“黑白相机”&#xff1f;​工业视觉中为什么倾向于多使用黑白相机黑白相机在工业视觉中的应用场景有哪些&#xff1f; Baumer工业相机 工业相机是常用与工业视觉领域的常用专业视觉…

MiM: Mask in Mask Self-SupervisedPre-Training for 3D Medical Image Analysis

Abstract Vision Transformer在3D医学图像分析的自监督学习&#xff08;Self-Supervised Learning&#xff0c;SSL&#xff09;中展现了卓越的性能。掩码自编码器&#xff08;Masked Auto-Encoder&#xff0c;MAE&#xff09;用于特征预训练&#xff0c;可以进一步释放ViT在各…

SQL注入的绕过方式

1.注释与空白符绕过 利用#,--,/**/替代被过滤的注释符 利用%09&#xff08;Tab&#xff09;,%0A(换行) &#xff0c;/**/代替空格&#xff1a;如union%0Aselect%0A1,2,3 2.编码绕过&#xff1a; URL编码&#xff0c;双重编码&#xff0c;十六进制编码&#xff0c;Unicode编…

数据加密方式(对称加密/非对称加密 /数字签名/证书)

文章目录 数据加密方式常用加密方式对比哈希算法&#xff08;Hashing&#xff09;哈希算法的特点常见的哈希算法哈希算法的应用哈希与加密的区别哈希算法的安全性问题 对称加密&#xff08;Symmetric Encryption&#xff09;工作原理主要特点常见的对称加密算法优缺点 非对称加…