VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法)

这篇具有很好参考价值的文章主要介绍了VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


此教程相关的详细教案,文档,思维导图和工程文件会放入 Spatial XR 社区。这是一个高质量知识星球 XR 社区,博主目前在内担任 XR 开发的讲师。此外,该社区提供教程答疑、及时交流、进阶教程、外包、行业动态等服务。

社区链接:
Spatial XR 高级社区(知识星球)
Spatial XR 高级社区(爱发电)

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr


IK(反向动力学)有利于提升 VR 应用中的沉浸感,我们可以通过 IK 实现 VR 中全身模型的追踪。本篇教程将基于 Unity 的 XR Interaction Toolkit 和 Final IK 插件中的 VRIK 功能介绍如何模拟 VR 中人物上半身的运动,特别是手臂和手肘的姿态。

XR Interaction Toolkit 是 Unity 一款实用的 VR 开发工具包,具体的环境配置方法和使用方法可以参考我往期的教程。

Final IK 是 Unity 一款功能强大的 IK 插件,其中拥有适用于 VR 的 IK 功能(称为 VRIK,Asset Store 链接:https://assetstore.unity.com/packages/tools/animation/final-ik-14290)
注:这个插件是付费的,但是 VRIK 的配置方法是非常简单的。

本篇教程使用的 Unity 版本:2021.3.5
XR Interaction Toolkit 版本:2.3.0
Final IK 版本:2.2
(以上的版本其实无所谓,基本上都适用)
使用的 VR 设备:Meta Quest 2 (只要你的设备能支持 Open XR 的运行环境就行)
最终实现的效果:

  1. 人物模型的头部能够跟随 VR 头显旋转和移动
  2. 人物模型的手能够跟随 VR 手柄旋转和移动,并且带动模型的手臂,肩部运动
  3. 在现实中下蹲,人物模型也能下蹲
  4. 推动手柄摇杆能够控制人物模型移动

📕第一步:配置 OpenXR + XR Interaction Toolkit 的开发环境

这一步参考我之前的安装配置教程 Unity VR开发教程 OpenXR+XR Interaction Toolkit (一) 安装和配置

最终场景中有配置好的 XR Origin 就行:

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

人物移动的话参考我这篇教程:Unity VR 开发教程 OpenXR+XR Interaction Toolkit (三) 转向和移动,原理是一样的。
移动方式选择 Continous Move 持续移动,这样就能用手柄摇杆来控制人物模型的移动。


📕第二步:导入人物模型

推荐 Humanoid 的模型,这样 VRIK 能够自动配置骨骼,否则需要手动配置骨骼,会比较麻烦。

⭐VRM 模型导入 Unity 的方法

有些小伙伴可能想使用 VRoid 制作的 VRM 模型。要想在 Unity 中使用,一种方法是将 VRM 模型先导入建模软件,通过插件转换成 Fbx 文件。另一种方法是通过 Unity 的插件,直接将 VRM 格式的文件转换成 Prefab,我将介绍这种方法。

使用到的插件:
UniVRM https://github.com/vrm-c/UniVRM
SimpleURPToonLitOutlineExample(这是一个 URP Shader,如果你是 URP 项目,需要配合这个插件来转换 VRM 文件,因为 UniVRM 没有 URP Shader) https://github.com/simplestargame/SimpleURPToonLitOutlineExample

首先打开 UniVRM 的 Github 页面,打开 Release 可以找到插件的包。

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

我这里选的是 VRM 1.0 的版本:

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

下载过后导入 Unity,导入成功后可以看到 Unity 上方的菜单栏多了这两个东西:

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

项目文件夹会多出这三个文件夹:

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

如果你是 URP 项目,我们需要打开 URP Shader 的网址,同样在 Releases 下载后导入 Unity。
导入成功后可以在项目文件夹找到这个文件夹:

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr
找到 SimplestarGame/SimpleURPToonLitOutlineExample/Scripts/MaterialFactory.cs 这个脚本,用它来替换先前导入 UniVRM 中的 VRMShaders/GLTF/IO/Runtime/Material/Importer/MaterialFactory.cs 脚本。

现在,我们就可以将 VRM 文件复制到 Unity 项目文件夹:

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

然后在 Inspector 面板中勾选 Migrate To Vrm1,点击 Apply

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

这时候模型就转化成了 Prefab,上面附带了一些 UniVRM 的脚本。

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr
VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr


📕第三步:配置 VRIK

⭐给模型加上 VRIK 组件

首先我们将人物模型拖至场景,给模型添加 VRIK 组件:

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

可以看到 VRIK 组件中的 Reference 已经自动帮我们引用好了人物的骨骼,这是因为我们的模型是 Humanoid 的。如果不是 Humanoid 就需要自己绑定了。

⭐将模型的头部和手部的位置作为 VR 追踪目标的子物体

VR 追踪目标为现实中的头显和两个 VR 手柄。在 XR Interaction Toolkit 中的 XR Origin 对应的就是 Camera Offset 下的这三个物体。

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

然后,我们回到人物模型上 VRIK 组件,锁定头部,左手,右手这三个物体:

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

这三个物体对应着 VR 追踪的三个目标:头显,左手柄,右手柄。
我们找到这三个物体在人物模型中的位置,分别复制头部,左手,右手的游戏物体:

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

复制后:

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

最后,我们先将这几个复制体的 position 设为 0,再把头部复制体,左手复制体,右手复制体分别作为 XR Origin 中的 Main Camera, LeftHand Controller 和 RightHand Controller 的子物体

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

⭐添加 VRIK 的 IK Target

接下来,我们回到 VRIK 组件,找到 Sovler 中的 Head Target, Left Arm Target 和 Right Arm Target,把刚刚复制的头部,左手,右手复制体拖过去:

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

这三个 Target 作为 IK Target,用于解算人物上半身的姿态。
现在,我们已经成功配置好了 VRIK。
理论上,其他的 VR SDK 也是类似的配置方法,需要将头部,双手的复制体作为该 SDK 中 头部,双手追踪位置的子物体。


📕调整 IK 位置和旋转角度

这个时候如果运行程序,会发现双手的位置可能并不是我们想要的,而且可能摄像机的位置会被模型的脸或者头发挡住。这时候我们就需要调整刚刚复制的头部,左手,右手的 IK Target,使上半身的 IK 达到我们想要的效果。我们可以在游戏运行的时候动态调整这三个 Target 的 position 和 rotation,达到满意的效果后复制 Component, 退出运行模式后再粘贴复制的 Component Values

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

VRIK 上其实也有很多参数可以微调,大家可以自行尝试,调整出自己满意的 IK 效果,每个参数是什么意思可以参考这篇博客:
https://blog.csdn.net/love_c_s/article/details/123351153?spm=1001.2014.3001.5501


📕使用 Twist Relaxer 缓解手腕扭曲的问题

配置好 VRIK 后,大家可能会遇到这个问题:手腕的转动无法带动前臂的转动,手腕和前臂有点断层的样子,于是手腕稍微转过一定角度后(比如将手腕面向自己),前臂基本不转,导致手腕处的模型扭曲得很厉害。

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr
VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

这个时候,我们可以用 Final IK 中的 Twist Relaxer 组件来缓解这个问题。

首先找到人物模型中前臂的位置:

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

在前臂物体上添加 Twist Relaxer 组件,并且像下图所示赋好值,将 VRIK 组件赋给 IK,前臂物体赋给 Transform 和 Parent,手的物体赋给 Children,然后将 Weight 改为 1, Parent Child Crossfade 改为 0.5:

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr
VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

现在运行程序,手腕严重扭曲的问题可以得到一定缓解:

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr

虽然手腕转过很大角度后还是会有一点扭曲现象,但是相比添加前已经缓解了许多,我们也可以微调下图中的这三个参数,达到自己满意的效果:

VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法),# XR Interaction Toolkit 系列教程,vr,unity,xr


配置完后,我们已经能够实现以下功能:

  1. 人物模型的头部能够跟随 VR 头显旋转和移动
  2. 人物模型的手能够跟随 VR 手柄旋转和移动,并且带动模型的手臂,肩部运动
  3. 在现实中下蹲,人物模型也能下蹲
  4. 推动手柄摇杆能够控制人物模型移动

但是现在模型行走的方式比较奇怪。如果你想实现比较好的腿部行走姿势,可以接着看下一篇教程:VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(下):实现腿部行走动画文章来源地址https://www.toymoban.com/news/detail-523902.html

到了这里,关于VRIK+Unity XR Interaction Toolkit 配置 VR 全身模型(上):实现上半身的追踪(附带VRM模型导入Unity方法和手腕扭曲的解决方法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【unity】【vr】新版Unity中找不到xr interaction toolkit

    unity中开发VR相关游戏和应用少不了一个很重要的Package:XR interaction toolkit。 但是新版unity中发现没了这个包,这篇介绍解决办法。 之前的unity版本中,默认状况下也是看不到XR interaction toolkit的。 需要在package设定中打开高级设定,允许用户看到pre-release版本,然后拉到列表底

    2024年02月11日
    浏览(60)
  • Unity VR 开发教程 OpenXR+XR Interaction Toolkit (四) 传送

    此教程相关的详细教案,文档,思维导图和工程文件会放入 Spatial XR 社区 。这是一个高质量知识星球 XR 社区,博主目前在内担任 XR 开发的讲师。此外,该社区提供教程答疑、及时交流、进阶教程、外包、行业动态等服务。 社区链接: Spatial XR 高级社区(知识星球) Spatial

    2024年02月12日
    浏览(58)
  • Unity VR开发教程 OpenXR+XR Interaction Toolkit(七)射线抓取

    此教程相关的详细教案,文档,思维导图和工程文件会放入 Spatial XR 社区 。这是一个高质量知识星球 XR 社区,博主目前在内担任 XR 开发的讲师。此外,该社区提供教程答疑、及时交流、进阶教程、外包、行业动态等服务。 社区链接: Spatial XR 高级社区(知识星球) Spatial

    2023年04月08日
    浏览(38)
  • Unity VR 开发教程 OpenXR+XR Interaction Toolkit(七)射线抓取

    此教程相关的详细教案,文档,思维导图和工程文件会放入 Spatial XR 社区 。这是一个高质量知识星球 XR 社区,博主目前在内担任 XR 开发的讲师。此外,该社区提供教程答疑、及时交流、进阶教程、外包、行业动态等服务。 社区链接: Spatial XR 高级社区(知识星球) Spatial

    2024年02月13日
    浏览(57)
  • Unity VR 开发教程 OpenXR+XR Interaction Toolkit (五) UI

    此教程相关的详细教案,文档,思维导图和工程文件会放入 Spatial XR 社区 。这是一个高质量知识星球 XR 社区,博主目前在内担任 XR 开发的讲师。此外,该社区提供教程答疑、及时交流、进阶教程、外包、行业动态等服务。 社区链接: Spatial XR 高级社区(知识星球) Spatial

    2024年02月11日
    浏览(35)
  • Unity VR 开发教程 OpenXR+XR Interaction Toolkit (二) 手部动画

    此教程相关的详细教案,文档,思维导图和工程文件会放入 Spatial XR 社区 。这是一个高质量知识星球 XR 社区,博主目前在内担任 XR 开发的讲师。此外,该社区提供教程答疑、及时交流、进阶教程、外包、行业动态等服务。 社区链接: Spatial XR 高级社区(知识星球) Spatial

    2024年02月11日
    浏览(44)
  • Unity之OpenXR+XR Interaction Toolkit如何自定义VR按键

    上一篇文章我们介绍了Unity的新版本InputSyste如何使用,这一篇文章,我们主要说一下,在新版基于OpenXR的VR项目中,如何自定义VR按钮的功能。 我们使用XR Interaction Toolkit插件时,它的几个Samples是非常有用的。如下所示: 它们分别是: 1.Starter Assets:官方示例Demo 2.XR Device Simul

    2024年02月15日
    浏览(36)
  • Unity之OpenXR+XR Interaction Toolkit实现 监听VR手柄按键

    当我们接入XR Interaction Toolkit之后,我们可以很方便的做不同VR设备的适配,这在很大程度上提升了我们的开发效率,我们除了通过射线和物体交互之外,偶尔我们也会希望监听手柄上的部分按键的点击事件,今天我们就来实现如何监听VR手柄的按钮事件。 我们需要准备好Uni

    2024年02月05日
    浏览(60)
  • Unity VR 开发教程 OpenXR+XR Interaction Toolkit(八)手指触控 Poke Interaction

    此教程相关的详细教案,文档,思维导图和工程文件会放入 Spatial XR 社区 。这是一个高质量知识星球 XR 社区,博主目前在内担任 XR 开发的讲师。此外,该社区提供教程答疑、及时交流、进阶教程、外包、行业动态等服务。 社区链接: Spatial XR 高级社区(知识星球) Spatial

    2024年02月12日
    浏览(41)
  • Unity VR 开发教程 OpenXR+XR Interaction Toolkit (三) 转向和移动

    此教程相关的详细教案,文档,思维导图和工程文件会放入 Spatial XR 社区 。这是一个高质量知识星球 XR 社区,博主目前在内担任 XR 开发的讲师。此外,该社区提供教程答疑、及时交流、进阶教程、外包、行业动态等服务。 社区链接: Spatial XR 高级社区(知识星球) Spatial

    2024年02月11日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包