AutoHand第三人称的AutoHandVRIK开启和关闭

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法) IK(反向动力学)有利于提升 VR 应用中的沉浸感,我们可以通过 IK 实现 VR 中全身模型的追踪。本篇教程将基于 Unity 的 XR Interaction Toolkit 和 Final IK 插件中的 VRIK 功能介绍如何模拟 VR 中人物上半身的运动,特别是手臂和手肘的姿态。 阅读详情

第三人称结构

第三人称在AutoHandVRIK脚本初始化完毕后,会出把两只手提到玩家对象根部对象上,并且在原始的模型手的位置创建了新的对象(leftHandFollowTarget,rightHandFollowTarget),副VRIK大概用途就是IK中间过渡。大概如图下面的样子。
female01大概是我的人物,Hidden IK Copy就是副VRIK。

在这里插入图片描述
因为工作需要关闭和打开IK,所以这里要处理IK和手部有时要随动画摆动。
可以这样来处理

关闭角色IK

需要把手部的当前追踪follow改为AutoHandVRIK脚本leftHandFollowTarget和rightHandFollowTarget(也就是原始模型手原来的Transform位置),并且把主VRIK和副VRIK的Weight通过渐变函数改为0,这里改副VRIK的原因是启用IK的时候希望副手的位置也在当前原始点。

打开角色IK

把手部的follow换回原始的副VRIK的手部位置(这个是AutoHandVRIK在初始化时候处理的,所以我们按照他的思路来)。然后再把VRIK的Weight渐变为1就可以了。因为主VRIK的手是副VRIK的手,所以我们可以直接把正手直接改为1,渐变为1可能出现扯皮问题。

大致脚本如下:

namespace Autohand {
    [DefaultExecutionOrder(-5), RequireComponent(typeof(VRIK))]
    public class AutoHandVRIK : MonoBehaviour 
    {
    	//...这里省略原始代码..
		//最后添加保存原来手的目标
	    private Transform handLeftTarget;   //左手原来的目标
        private Transform handRightTarget;  

		void SetupIKCopy() {
		{
			//...这里省略原始代码..
		    //最后添加保存原来手的目标
            handRightTarget = rightHand.follow;
            handLeftTarget = leftHand.follow;
		}

		
        public bool IKIsEnable = true;
        float nowLerp;
        float lerpspeed = 1f;
        [ContextMenu("EnableIK")]
        public void EnableIK()
        {
            IKIsEnable = true;
            
            //打开的时候,要跟着头显手位置
            nowLerp = visibleIK.solver.GetIKPositionWeight();
            leftHand.SetHandTarget(handLeftTarget);
            rightHand.SetHandTarget(handRightTarget);

            if (checkIKSwitch != null)
            {
                StopCoroutine(checkIKSwitch);
                checkIKSwitch = null;
            }
            checkIKSwitch = StartCoroutine(IKChange(true));
        }

        [ContextMenu("DisableIK")]
        public void DisableIK() 
        {
            //关闭IK,需要吧isCopy的比重放到拉到最低
            
            IKIsEnable = false;
            //关闭的时候要跟着手。

            nowLerp = visibleIK.solver.GetIKPositionWeight();
            leftHand.SetHandTarget(leftHandFollowTarget);
            rightHand.SetHandTarget(rightHandFollowTarget);

            if (checkIKSwitch != null)
            {
                StopCoroutine(checkIKSwitch);
                checkIKSwitch = null;
            }
            checkIKSwitch = StartCoroutine(IKChange(false));
        }
        Coroutine checkIKSwitch;

        IEnumerator IKChange(bool switchopen)
        {
            yield return 0;
            
            while (true)
            {
                yield return 0;
                if (switchopen)
                {
                    //如果是打开IK,那么需要插值到1.最终要跟随手部设置的
                    nowLerp = Mathf.Lerp(nowLerp, 1.5f, Time.deltaTime * lerpspeed);
                    visibleIK.solver.SetIKPositionWeight(1f);
                    invisibleIK.solver.SetIKPositionWeight(nowLerp);
                    if (nowLerp > 1f)
                    {
                        break;
                    }
                }
                else
                {
                    //如果关闭IK,显示动作,那么手跟踪原始位置
                    nowLerp = Mathf.Lerp(nowLerp, -0.5f, Time.deltaTime * lerpspeed);
                    visibleIK.solver.SetIKPositionWeight(nowLerp);  
                    invisibleIK.solver.SetIKPositionWeight(nowLerp);
                    
                    if (nowLerp < 0f)
                    {
                        break;
                    }
                }
            }
        }

这样就可以直接切换了。

AutoHand3.2.1下载
用于学习,商业用途请支持AutoHand

Unity HurricaneVR 插件中的 VRIK 设置 IK(反向动力学)有利于提升 VR 应用中的沉浸感,比如我们可以通过对手部的追踪,再结合 IK,来模拟 VR 中人物的手臂和手肘的姿态。本篇博客将介绍如何设置 Hurricane VR 插件中的 VRIK。 阅读详情

相关推荐

[XR]动捕 UnityXR + FinalIK(VRIK) + SteamVR

使用Final IK 控制人类骨骼实时同步动作。 Unity + Final IK

GrimRaider的专栏 3万+

AutoHand插件使用指南

Auto Hand插件使用指南

qq_41603955的博客 5415

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(下):实现腿部行走动画

上一篇我们通过配置VRIK + Unity XR Interaction Toolkit 实现了 VR 全身模型上半身的追踪。这篇教程,我将介绍如何实现腿部行走的动画。

qq_46044366的博客 4004

【Unity VR交互插件】Auto Hand - VR Physics Interaction 专门用于提升虚拟现实中的物理交互体验,支持自然的抓取、投掷、推拉等动作

Auto Hand - VR Physics Interaction 是一款为 Unity 提供的 VR(虚拟现实)交互插件,专门设计用于增强虚拟现实中物理交互的体验。通过这款插件,开发者可以在 VR 游戏或应用中实现更加自然、直观的物理交互操作,如抓取、投掷、按压、旋转等动作。Auto Hand 提供了一种简便的方式,使得开发者无需深入编写复杂的物理交互代码,就能在虚拟现实中创建真实的物理行为和交互体验。

2403_88403568的博客 944

Unity-VR插件AutoHand

AutoHand 是一套以物理为核心的 VR 交互系统,侧重“手”的物理抓取与交互体验——自动生成握持姿势、支持多手抓取、物体受力/重量、精准掷抛/接物、可断裂/分离的抓取、以及丰富的可交互机制(开关、拉杆、轮子、旋钮、按钮、滑动器等示例与工具)。它把常见 VR 交互抽象成可配置的组件,便于快速把场景物体变成“可抓取/可操作”的交互对象。

平常心 1609

Unity IK 反动力学动画 (一)

今天下雨,无法去公园表演胸口碎大石,就在家好好写写博客吧。 最近接触了Unity IK用于VR AR的开发还是很有用的,可以使虚拟人物接近人物的操作运动,前一阵也看了头号玩家,虽然没有原书《玩家1号》那么精彩,但也是VR AR未来的大势所趋。 写说说IK是啥: 全称是Inverse Kinematics 反向动力学的意思,举个例子:获取人物手部的骨骼,是手跟随着手柄移动时,手臂也会随着人体动...

御雪妃舞 1万+

【Unity反向动力学IK】让人物的四肢听你安排!利用IK实现各种动画效果

本文通过Unity的IK功能,使人物的身体部位实现自由移动。在游戏中有各种可以使用IK来提升游戏表现的地方(例如攀爬之类),非常简单详细,新手必看!

记录unity基础 6494

VRIK+Unity XR Interaction Toolkit 进阶配置:优化 VR 全身追踪的沉浸感(附手腕扭曲与骨骼绑定技巧)

本文深入探讨了如何利用VRIK与Unity XR Interaction Toolkit进行VR全身追踪的进阶配置。针对手腕扭曲这一核心难题,文章提供了超越基础缓解的根治方案,包括多重Twist Relaxer的权重精细调配与自定义骨骼轴向校正脚本。同时,详细讲解了脊柱链、肩部骨骼绑定及手肘极点目标设置等高级技巧,旨在系统性优化VR角色运动的自然度与沉浸感,并涵盖了对VRM模型的特殊考量与性能调试策略。

weixin_29021291的博客 332

VR插件之autohand 手势插件

官方示例以上是手动配置的过程,官方也有提供示例,steamvr openxr等主流VR框架的示例。

qingtian305的专栏 291

Auto Hand-3.2 - VR Physics Interaction

Auto Hand-3.2 - VR Physics Interaction 测试可用

Auto Hand - VR 1.3.3

VR手部自动抓取

Unity引擎开发:VR动画系统实现_(6).IK系统在VR动画中的应用

IK系统在VR动画中的应用非常广泛,不仅可以提高角色动画的真实性和互动性,还可以增强用户体验。通过Unity的内置IK系统和第三方插件(如Final IK),我们可以轻松实现手部抓取、脚部跟踪、UI交互和环境互动等多种功能。此外,通过对IK系统的优化和高级应用,我们可以进一步提升VR游戏的性能和真实感。希望本文对大家理解和应用IK系统有所帮助。如果有任何疑问或需要进一步的示例代码,请在评论区留言。

chenlz2007的博客 1165

Unity手势识别插件AutoHand-v4.0.0

Unity手势识别插件

UnityVR-初识Unity-第四步-实现手柄抓握(拓展)

1.对Hierarchy视图中的LeftHandAnchor和RightHandAnchor添加抓握属性: 添加Rigidbody(刚体)和OVRGrabber两个属性。 2.分别将LeftHandAnchor和RightHandAnchor的Controller属性修改为L Touch和R Touch。 3.分别勾选LeftHandAnchor和RightHandAnchor的Parent Held Object 4.分别勾选LeftHandAnchor和RightH...

唐小墨同学的博客 2927

TSMaster二次开发实战:如何用Python搞定CAN/CANFD事件回调(附完整代码)

本文详细介绍了如何利用Python进行TSMaster二次开发,实现CAN/CANFD事件回调功能。通过实战代码演示,讲解了预发送与后处理回调的核心区别、注册流程、资源管理及性能优化技巧,帮助工程师高效构建自动化测试与数据监控应用。

star的博客 672

从 0 到 1 构建 Graph RAG 系统:本地图谱 + 通义千问落地实践

本文介绍了一个基于知识图谱的检索增强生成系统(Graph RAG),该系统结合领域知识图谱、语义检索和大模型问答,旨在提供结构化、精准的技术问答服务。文章详细说明了项目背景、目标、核心技术架构以及实现方法,包括本地图谱构建、Neo4j数据库接入、语义检索和大模型集成等关键环节。该系统支持混合检索、多轮问答和知识图谱关联理解,能够有效减少大模型幻觉,提升问答的准确性和可解释性。文中还展示了核心代码结构和流程图,呈现了从文档加载到图谱构建再到问答生成的完整流程。该系统适用于需要处理复杂领域知识的研发和数据分析场

m0_58378112的博客 1402

【VR开发篇】解决使用FinalIK插件开发VR时,手节点下放置粒子系统,无法触发粒子系统的OnParticleCollision()事件

【VR开发篇】解决使用FinalIK插件开发VR时,手节点下放置粒子系统,无法触发粒子系统的OnParticleCollision()事件 文章目录【VR开发篇】解决使用FinalIK插件开发VR时,手节点下放置粒子系统,无法触发粒子系统的OnParticleCollision()事件前言一、测试环境二、单元测试1.追根溯源2.问题所在2.解决问题3.最终表现三、总结 前言 提示: 开发VR时,如果有实体的人物模型作为第一人称VR头显要控制的对象,就需要用到FinalIK插件。 但最近开发项目时发现如果

weixin_43349549的博客 1563

C#实战:如何用Bartender 10.1实现动态打印与批量打印(附完整源码)

本文深入探讨了如何在C#项目中高效集成Bartender 10.1,实现企业级的动态打印与批量打印功能。文章提供了从环境配置、COM接口精讲、高可用打印服务类封装,到批量打印性能优化及生产环境部署的全套实战方案与源码,帮助开发者构建健壮、可维护的打印解决方案。

weixin_29290963的博客 437

[中英对照] Final IK Main

FInal IK main

陈浩的博客 451

CST实战:变容二极管电容曲线提取全流程(附S参数设置技巧)

本文详细介绍了在CST Studio Suite中提取变容二极管电容-电压(C-V)曲线的完整实战流程。重点解析了S参数仿真的核心原理、DCFEED模块的正确配置、参数扫描的设置技巧,并探讨了集成SPICE模型进行精确仿真的方法,帮助射频工程师高效、准确地获取器件关键特性。

weixin_29237635的博客 529

Android 白名单保活实战:主流厂商适配指南

本文详细解析了Android应用白名单保活的实战策略,重点针对华为、小米、OPPO、vivo等主流厂商的系统特性,提供了精准的后台设置页面跳转适配方案。文章从基础的前台服务实现讲起,深入讲解了白名单的判断、申请与厂商适配的核心代码与避坑指南,旨在帮助开发者合规、稳定地提升应用后台存活率。

motor的博客 1863

Meta Quest 2开发者必看:用Unity XR Interaction Toolkit和VRIK打造逼真VR上半身追踪(附手腕扭曲修复技巧)

本文为Meta Quest 2开发者提供了使用Unity XR Interaction Toolkit集成VRIK系统,实现逼真上半身追踪与交互的深度实践指南。文章重点剖析了手腕扭曲问题的根源,并给出了结合Twist Relaxer配置、手臂求解器参数调整(如Swivel Offset)以及骨骼轴向检查的复合解决方案,旨在显著提升VR应用的沉浸感与角色动画的自然度。

hill8的博客 714

深入了解 CPU 的型号、代际架构与微架构!

深入了解 CPU 的型号、代际架构与微架构!

欢迎朋友,我是一名十多年开发经验的新手,希望多多指教。 3196
上一篇: Unity 新输入系统InputAction设置按键的阈值
下一篇: Unity 限制范围-限制在4分之一圆柱形范围内活动
Thinbug
博客等级 码龄22年 2万+粉丝 187原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thinbug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值