中国建设银行网站企业,自己做的影视会员网站违法么,饭店网站建设,郑州彩票网站开发文章目录#x1f4d5;第一步#xff1a;配置 OpenXR XR Interaction Toolkit 的开发环境#x1f4d5;第二步#xff1a;导入人物模型⭐VRM 模型导入 Unity 的方法#x1f4d5;第三步#xff1a;配置 VRIK⭐给模型加上 VRIK 组件⭐将模型的头部和手部的位置作为 VR 追踪目…
文章目录第一步配置 OpenXR XR Interaction Toolkit 的开发环境第二步导入人物模型⭐VRM 模型导入 Unity 的方法第三步配置 VRIK⭐给模型加上 VRIK 组件⭐将模型的头部和手部的位置作为 VR 追踪目标的子物体⭐添加 VRIK 的 IK Target调整 IK 位置使用 Twist Relaxer 缓解手腕扭曲的问题IK反向动力学有利于提升 VR 应用中的沉浸感我们可以通过 IK 实现 VR 中全身模型的追踪。本篇教程将基于 Unity 的 XR Interaction Toolkit 和 Final IK 插件中的 VRIK 功能介绍如何模拟 VR 中人物上半身的运动特别是手臂和手肘的姿态。XR Interaction Toolkit 是 Unity 一款实用的 VR 开发工具包具体的环境配置方法和使用方法可以参考我往期的教程。
Final IK 是 Unity 一款功能强大的 IK 插件其中拥有适用于 VR 的 IK 功能称为 VRIKAsset 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 的运行环境就行 第一步配置 OpenXR XR Interaction Toolkit 的开发环境
这一步参考我之前的安装配置教程 Unity VR开发教程 OpenXRXR Interaction Toolkit (一) 安装和配置
最终场景中有配置好的 XR Origin 就行 第二步导入人物模型
推荐 Humanoid 的模型这样 VRIK 能够自动配置骨骼否则需要手动配置骨骼会比较麻烦。
⭐VRM 模型导入 Unity 的方法
有些小伙伴可能想使用 VRoid 制作的 VRM 模型。一种方法是将 VRM 模型先导入建模软件通过插件转换成 Fbx 文件再导入 Unity。这种方法我不怎么熟练就不介绍了。另一种方法是通过 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 可以找到插件的包。 我这里选的是 VRM 1.0 的版本 下载过后导入 Unity导入成功后可以看到 Unity 上方的菜单栏多了这两个东西 项目文件夹会多出这三个文件夹 如果你是 URP 项目我们需要打开 URP Shader 的网址同样在 Releases 下载后导入 Unity。 导入成功后可以在项目文件夹找到这个文件夹 找到 SimplestarGame/SimpleURPToonLitOutlineExample/Scripts/MaterialFactory.cs 这个脚本用它来替换先前导入 UniVRM 中的 VRMShaders/GLTF/IO/Runtime/Material/Importer/MaterialFactory.cs 脚本。
现在我们就可以将 VRM 文件复制到 Unity 项目文件夹 然后在 Inspector 面板中勾选 Migrate To Vrm1点击 Apply 这时候模型就转化成了 Prefab上面附带了一些 UniVRM 的脚本。 第三步配置 VRIK
⭐给模型加上 VRIK 组件
首先我们将人物模型拖至场景给模型添加 VRIK 组件 可以看到 VRIK 组件中的 Reference 已经自动帮我们引用好了人物的骨骼这是因为我们的模型是 Humanoid 的。如果不是 Humanoid 就需要自己绑定了。
⭐将模型的头部和手部的位置作为 VR 追踪目标的子物体
VR 追踪目标为现实中的头显和两个 VR 手柄。在 XR Interaction Toolkit 中的 XR Origin 对应的就是 Camera Offset 下的这三个物体。 然后我们回到人物模型上 VRIK 组件锁定头部左手右手这三个物体 这三个物体对应着 VR 追踪的三个目标头显左手柄右手柄。 我们找到这三个物体在人物模型中的位置分别复制头部左手右手的游戏物体 复制后 最后我们先将这几个复制体的 position 设为 0再把头部复制体左手复制体右手复制体分别作为 XR Origin 中的 Main Camera, LeftHand Controller 和 RightHand Controller 的子物体 ⭐添加 VRIK 的 IK Target
接下来我们回到 VRIK 组件找到 Sovler 中的 Head Target, Left Arm Target 和 Right Arm Target把刚刚复制的头部左手右手复制体拖过去 这三个 Target 作为 IK Target用于解算人物上半身的姿态。 现在我们已经成功配置好了 VRIK。 理论上其他的 VR SDK 也是类似的配置方法需要将头部双手的复制体作为该 SDK 中 头部双手追踪位置的子物体。 调整 IK 位置
这个时候如果运行程序会发现双手的位置可能并不是我们想要的而且可能摄像机的位置会被模型的脸或者头发挡住。这时候我们就需要调整刚刚复制的头部左手右手的 IK Target使上半身的 IK 达到我们想要的效果。我们可以在游戏运行的时候动态调整这三个 Target 的 position 和 rotation达到满意的效果后复制 Component, 退出运行模式后再粘贴复制的 Component Values VRIK 上其实也有很多参数可以微调大家可以自行尝试调整出自己满意的 IK 效果每个参数是什么意思可以参考这篇博客 https://blog.csdn.net/love_c_s/article/details/123351153?spm1001.2014.3001.5501 使用 Twist Relaxer 缓解手腕扭曲的问题
配置好 VRIK 后大家可能会遇到这个问题手腕的转动无法带动前臂的转动手腕和前臂有点断层的样子于是手腕稍微转过一定角度后比如将手腕面向自己前臂基本不转导致手腕处的模型扭曲得很厉害。 这个时候我们可以用 Final IK 中的 Twist Relaxer 组件来缓解这个问题。
首先找到人物模型中前臂的位置 在前臂物体上添加 Twist Relaxer 组件并且像下图所示赋好值将 VRIK 组件赋给 IK前臂物体赋给 Transform 和 Parent手的物体赋给 Children 现在运行程序手腕严重扭曲的问题可以得到一定缓解 虽然手腕转过很大角度后还是会有一点扭曲现象但是相比添加前已经缓解了许多我们也可以微调下图中的这三个参数达到自己满意的效果