开发环境:
- Windows 10 专业版;
- Unity 2020.3.23f1c1 (64-bit);
- SteamVR Plugin (v2.7.3),SteamVR Plugin | Integration | Unity Asset Store
https://assetstore.unity.com/packages/tools/integration/steamvr-plugin-32647
- Final IK v2.0;
- Vive Pro 套件;
- Vive Tracker v2.0,6个;
- 虚拟人物模型:Final IK自带例子人物模型、Daz3D下载的人物模型;
开发步骤:
- 安装SteamVR相关环境(略),头盔和控制器可以正常使用;
- 配对Tracker:从Steam启动SteamVR后,菜单 => 设备 => 配对控制器 => 我想匹配不同类型的控制器 => 选择Tracker
- 配对成功后,在SteamVR窗口能看到所有设备都被点亮;
- 获取Tracker数据:
- 导入SteamVR Plugin,按官方文档操作即可;
- 上代码:
/// 获取设备方式一: // 添加设备监听 UnityEngine.XR.InputDevices.deviceConnected += OnDeviceConnected; /// 获取设备方式二: var inputDevices = new List<UnityEngine.XR.InputDevice>(); 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); }
- 实时获取Tracker坐标和旋转数据;
- 虚拟人物模型预处理:
- 修改AnimationType:导入的fbx => Rig => AnimationType => Humanoid;
- 查看 Avatar 的Configure;
- 使用FinalIK中的VRIK组件:
- 模型Prefab挂载组件VRIK,如果符合人体骨骼命名和结构,则References里会自动挂载,否则自己手动设置;
- 添加代码绑定Tracker和VRIK骨骼节点逻辑:
- 代码:
// 校准: // ik : 挂载VRIK的场景中人物模型对象 // settings : RootMotion.FinalIK.VRIKCalibrator.Settings // 其他参数为6大主要节点Transform:头、躯干、左手、右手、左脚、右脚,使用同步的Tracker对象即可 RootMotion.FinalIK.VRIKCalibrator.Calibrate(ik, settings, headTracker, bodyTracker, leftHandTracker, rightHandTracker, leftFootTracker, rightFootTracker); // 其他校准函数参考官方文档
- 代码:
- 运行,查看动捕效果:
- 如果发现Game的视口比例不对(被锁死),可检查Camera组件的Output下XR Rendering字段,可以去掉,也可以新建一个Camera,在另一个Display上查看;
参考:
- Unity 官方文档:针对 XR 配置 Unity 项目 - Unity 手册要针对 XR 配置您的 Unity 项目,请按照以下步骤操作:
https://docs.unity.cn/cn/current/Manual/configuring-project-for-xr.html
- Steam 官方文档:SteamVR Unity Plugin | SteamVR Unity Plugin
https://valvesoftware.github.io/steamvr_unity_plugin/index.html
- Vive 官方文档:Developer Resources - Developer Resources
https://developer.vive.com/resources/?site=cn
- Final IK 官方文档:VRIK
http://www.root-motion.com/finalikdox/html/page16.html
- 其他:仅需两个摄像头就可实现全身追踪-Mocap For All_哔哩哔哩_bilibilitwitter/Akiya_Souken_VR对于大部分的VR玩家来说,全身追踪主要被用于VRchat中,通过绑在身上的追踪器来完成,从需要SteamVR基站到无需基站的6点惯性定位解决方案。现在,有一款新的全身追踪方案,无需基站,无需追踪器,它就是“Mocap For All”。这是一款来自日本开发者正在开发的,允许任何人都可使用的运动捕捉软件而无需特殊设备,最低要求是将两个网络摄像头连接到PC
https://www.bilibili.com/video/av333290600