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

开发环境:

  1. Windows 10 专业版;
  2. Unity 2020.3.23f1c1 (64-bit);
  3. SteamVR Plugin (v2.7.3),SteamVR Plugin | Integration | Unity Asset Storeicon-default.png?t=LA92https://assetstore.unity.com/packages/tools/integration/steamvr-plugin-32647
  4. Final IK v2.0;
  5. Vive Pro 套件;
  6. Vive Tracker v2.0,6个;
  7. 虚拟人物模型:Final IK自带例子人物模型、Daz3D下载的人物模型;

开发步骤:

  1. 安装SteamVR相关环境(略),头盔和控制器可以正常使用;
    1. 配对Tracker:从Steam启动SteamVR后,菜单 => 设备 => 配对控制器 => 我想匹配不同类型的控制器 => 选择Tracker
    2. 配对成功后,在SteamVR窗口能看到所有设备都被点亮;
  2. 获取Tracker数据:
    1. 导入SteamVR Plugin,按官方文档操作即可;
    2. 上代码:
      ///  获取设备方式一:
      // 添加设备监听
      UnityEngine.XR.InputDevices.deviceConnected += OnDeviceConnected;
      
      ///  获取设备方式二:
      var inputDevices = new List();
      UnityEngine.XR.InputDevices.GetDevices(inputDevices);
      
      /// 判断设备类型
      if (device.characteristics == InputDeviceCharacteristics.TrackedDevice)
      {
          // tracker
          // 获取Tracker空间坐标
          Vector3 pos = new Vector3();
          device.TryGetFeatureValue(CommonUsages.devicePosition, out pos);
          // 获取Tracker旋转数据
          Quaternion rotation = new Quaternion();
          device.TryGetFeatureValue(CommonUsages.deviceRotation, out rotation);
      }
      
      

    3. 实时获取Tracker坐标和旋转数据;
  3. 虚拟人物模型预处理:
    1. 修改AnimationType:导入的fbx => Rig => AnimationType => Humanoid;
    2. 查看 Avatar 的Configure;
  4. 使用FinalIK中的VRIK组件:
    1. 模型Prefab挂载组件VRIK,如果符合人体骨骼命名和结构,则References里会自动挂载,否则自己手动设置;
  5. 添加代码绑定Tracker和VRIK骨骼节点逻辑:
    1. 代码:
      // 校准:
      // ik : 挂载VRIK的场景中人物模型对象
      // settings :  RootMotion.FinalIK.VRIKCalibrator.Settings
      // 其他参数为6大主要节点Transform:头、躯干、左手、右手、左脚、右脚,使用同步的Tracker对象即可
      RootMotion.FinalIK.VRIKCalibrator.Calibrate(ik, settings, headTracker, bodyTracker, leftHandTracker, rightHandTracker, leftFootTracker, rightFootTracker);
      // 其他校准函数参考官方文档

  6. 运行,查看动捕效果:
    1. 如果发现Game的视口比例不对(被锁死),可检查Camera组件的Output下XR Rendering字段,可以去掉,也可以新建一个Camera,在另一个Display上查看;

参考:

  1. Unity 官方文档:针对 XR 配置 Unity 项目 - Unity 手册要针对 XR 配置您的 Unity 项目,请按照以下步骤操作:https://docs.unity.cn/cn/current/Manual/configuring-project-for-xr.html
  2. Steam 官方文档:SteamVR Unity Plugin | SteamVR Unity Plugin https://valvesoftware.github.io/steamvr_unity_plugin/index.html
  3. Vive 官方文档:Developer Resources - Developer Resources https://developer.vive.com/resources/?site=cn
  4. Final IK 官方文档:VRIKicon-default.png?t=LA92http://www.root-motion.com/finalikdox/html/page16.html
  5. 其他:仅需两个摄像头就可实现全身追踪-Mocap For All_哔哩哔哩_bilibilitwitter/Akiya_Souken_VR对于大部分的VR玩家来说,全身追踪主要被用于VRchat中,通过绑在身上的追踪器来完成,从需要SteamVR基站到无需基站的6点惯性定位解决方案。现在,有一款新的全身追踪方案,无需基站,无需追踪器,它就是“Mocap For All”。这是一款来自日本开发者正在开发的,允许任何人都可使用的运动捕捉软件而无需特殊设备,最低要求是将两个网络摄像头连接到PChttps://www.bilibili.com/video/av333290600

你可能感兴趣的:(unity,xr,unity,游戏引擎)