开发环境:
- Windows 10 专业版;
- Unity 2020.3.23f1c1 (64-bit);
- SteamVR Plugin (v2.7.3),SteamVR Plugin | Integration | Unity Asset Storehttps://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?官方文档:VRIKhttp://www.root-motion.com/finalikdox/html/page16.html
- 其他:仅需两个摄像头就可实现全身追踪-Mocap For All_哔哩哔哩_bilibilitwitter/Akiya_Souken_VR对于大部分的VR玩家来说,全身追踪主要被用于VRchat中,通过绑在身上的追踪器来完成,从需要SteamVR基站到无需基站的6点惯性定位解决方案。现在,有一款新的全身追踪方案,无需基站,无需追踪器,它就是“Mocap For All”。这是一款来自日本开发者正在开发的,允许任何人都可使用的运动捕捉软件而无需特殊设备,最低要求是将两个网络摄像头连接到PChttps://www.bilibili.com/video/av333290600
|