Pico Unity Integration SDK开发笔记

1,安装

官方文档比较详细。
在“升级XR Interaction Toolkit”时,package manager找不到,参考文档Installation | XR Interaction Toolkit | 2.1.1,我的unity版本是2021.3.1f1,则需要“Add package by name”,搜“com.unity.xr.interaction.toolkit”即可

2,场景渐变

XR Origin的PXR_Manager中勾选“Open Screen Fade”,在Camera中就会自动增加PXR_Screen Fade组件。
在这里插入图片描述
在这里插入图片描述

3,静态注视点渲染

PXR_Manager中选择“Foveation Level”
在这里插入图片描述

4,屏幕刷新率

默认72fps
在这里插入图片描述

5,焦点感知

事件 说明
PXR_Plugin.System.FocusStateLost 应用程序失去输入焦点。 例如,应用程序运行时,若某个用户按下手柄上的 Home 按钮,系统 UI 显示,应用程序会失去输入焦点。此时,开发者可以暂停游戏、禁用用户的输入功能(例如手柄)或通知其他在线用户该用户当前没有专注于应用程序。
PXR_Plugin.System.FocusStateAcquired 应用程序获得输入焦点。 系统 UI 被关闭时,该事件触发。此时,开发者可以恢复游戏或开启用户的输入功能。

6,手柄&头戴输入

按键 Unity 键值
菜单键 CommonUsages.menuButton:表示菜单键的激活状态(即是否被按下)。
扳机键
  • CommonUsages.triggerButton:表示扳机键的激活状态。
  • CommonUsages.trigger:表示扳机键被按下的程度。例如,在射箭类游戏中,可以表示弓箭的拉满程度。
抓握键
  • CommonUsages.gripButton:表示抓握键的激活状态。
  • CommonUsages.grip:表示抓握键被按下的程度。例如,在射箭类游戏中,可以表示弓箭的拉满程度。
摇杆
  • CommonUsages.primary2DAxisClick:表示摇杆是否被按下。
  • CommonUsages.primary2DAxis:表示摇杆的上下左右拨动情况。
X/A CommonUsages.primaryButton:表示 X/A 键的激活状态。
Y/B CommonUsages.secondaryButton:表示 Y/B 键的激活状态。
以下头盔
返回键 KeyCode.Escape
确认键 KeyCode.JoystickButton0
Home 键 KeyCode.Home 系统占用,默认不开放。
音量增加键 VOLUME_UP 安卓标准按键。系统占用,默认不开放。
音量减小键 VOLUME_DOWN 安卓标准按键。系统占用,默认不开放。

使用:

rightController.inputDevice.TryGetFeatureValue(CommonUsages.grip, out float grip);
leftController.inputDevice.TryGetFeatureValue(CommonUsages.primaryButton, out bool isXPressed);

7,追踪

模式 说明
Device 即通常理解的 Eye 模式。进入应用时,会默认将设备的初始位置设置为原点,而不会根据设备检测到地面的高度来计算原点。
提示:该模式比较适合坐姿体验的应用。
Floor 进入应用时,将设备的初始位置结合设备检测到地面的高度来计算原点。该模式需要设备支持地面检测功能( 例如:PICO Neo 3 系列)。
提示:该模式比较适合站立式体验的应用。
Tracking Reference 即通常理解的 Stage 模式,校准的时候不会重置场景正方向。
提示:该模式比较适合想要用户在体验期间保持固定空间和方位的场景。

设置:

  • 头部追踪:XR Origin -> Tracking Origin Mode
  • 眼动追踪:PXR_Manager -> Eye Tracking
  • 手势追踪:PXR_Manager -> Hand Tracking
    测试:
// 头部追踪,获取XR Origin中的Main Camera位姿
transform.position = mainCamera.position + new Vector3(0, 0, 1);
transform.rotation = mainCamera.rotation;
// 眼动追踪,只在Neo3 Pro Eye上运行,在Neo3上面不work。
bool b = PXR_EyeTracking.GetLeftEyePositionGuide(out Vector3 position);
// 手势追踪,返回false,看来目前neo3上面还没支持手势识别
bool b = PXR_HandTracking.GetSettingState();

8,Action-based input 设置

老版的是Device-based input,新版的是Action-based input,更灵活,官方推荐。先进行配置:
左右手柄上的XR Controller的成员变量初始为空,分别设置为预设的XRI Default Left Controller和XRI Default Right Controller,如下图:
在这里插入图片描述
传送Teleportation的设置和老版一致,转身SnapTurn的设置有所区别:
在这里插入图片描述

开发者平台

猜你喜欢

转载自blog.csdn.net/dragonchow123/article/details/127748849