XR/VR/AR开发
• 1 min read 1 min • 203 words 203 words
XR/VR/AR Development
XR(Extended Reality)开发涵盖 VR、AR、MR 技术,涉及 OpenXR 运行时、交互工具包、手势识别等领域。本页汇总个人 XR 开发经验与技术要点。
OpenXR 运行时
Monado OpenXR
Monado 是开源 OpenXR 运行时,提供统一的 XR 设备接口。
解决的核心问题:
- 跨设备兼容性:一次开发,兼容 Oculus、HTC Vive、Pico 等多种硬件
- 降低开发成本:无需为每种设备编写特定驱动
- 标准化接口:遵循 OpenXR 规范,保证 API 一致性
工作原理:
- 提供统一的 OpenXR API 层
- 底层适配不同设备的驱动和 SDK
- 运行时处理设备发现、追踪、渲染等底层细节
适用场景:
- Linux 平台 XR 开发
- 开源项目和学术研究
- 多硬件兼容性需求
SteamVR 2.x 开发(HTC VIVE)
SteamVR 2.x 是 Valve 的 VR 开发平台,主要用于 HTC VIVE 设备。
核心组件:
- SteamVR Plugin:Unity 插件,提供输入系统和追踪
- SteamVR Input:动作映射系统,支持手柄按钮、触摸板、扳机键
- SteamVR_Render:渲染管线管理
输入处理示例:
// 侧键触发场景跳转
public SteamVR_Action_Boolean gripAction;
void Update()
{
if (gripAction.GetStateDown(SteamVR_Input_Sources.RightHand))
{
SceneManager.LoadScene("TargetScene");
}
}
常见绑定:
- 扳机键(Trigger):选择、射击
- 侧键(Grip):抓取、跳跃
- 菜单键(Menu):暂停、设置
- 触摸板(Trackpad):移动、导航
Unity XR Interaction Toolkit (XRIT)
XRIT 是 Unity 官方的 XR 交互框架,提供标准化的交互组件。
核心架构
- Interactor:交互发起者(手部、控制器、射线)
- Interactable:可交互对象(可抓取、可按压)
- InteractionManager:管理所有交互的全局管理器
- LocomotionProvider:移动系统(传送、连续移动)
关键 API
交互器类型:
XRDirectInteractor:直接接触交互XRRayInteractor:射线交互XRGazeInteractor:凝视交互
可交互物体:
XRGrabInteractable:可抓取物体XRSimpleInteractable:简单交互(点击、悬停)XRSocketInteractor:插槽交互(物品放置)
事件系统:
// 抓取事件监听
var grabInteractable = GetComponent<XRGrabInteractable>();
grabInteractable.selectEntered.AddListener(OnGrab);
grabInteractable.selectExited.AddListener(OnRelease);
void OnGrab(SelectEnterEventArgs args)
{
Debug.Log("物体被抓取");
}
void OnRelease(SelectExitEventArgs args)
{
Debug.Log("物体被释放");
}
版本演进
XRIT 2.x:
- 基础交互框架
- 支持 VR 和 AR
- 标准化输入系统
XRIT 11.x:
- 新增手势识别集成
- 物体组合交互
- 改进的 affordance 系统(视觉反馈)
- 性能优化和 Bug 修复
数据获取(XRIT 11.2)
从 XRIT 11.2 获取数据需关注:
XRInteractionManager的状态查询XRBaseInteractor的选择状态XRGrabInteractable的物理属性- 网络同步时的数据可靠性(局域网 MQTT、TLS)
AR 方案与手势识别
AR 博物馆方案商(云观博、Kivicube、Rokid 等)、Static Hand Gesture 手势识别(含黏手 Bug 修复)、ComfyUI AR 分析工作流等内容已拆分至独立页面:
跨页面参考
- AR博物馆与手势交互方案 — AR 博物馆方案、手势识别、ComfyUI AR 工作流
- Unity开发核心 — Unity 开发基础,XRIT 在 Unity 中的应用
- 室内导航与定位技术 — 室内定位技术,可用于 AR 导航