跳到正文
Qiita · Unity 开发社区· 来源· Rikuto_q·· 2 小时前AI 评分26

Meta Quest 3 MR盆栽应用开发:基于Unity与Meta XR SDK的手势识别实现

【Part 1】ハンドトラッキングで行う盆栽育成アプリの開発

正文 · AI 翻译

前言

此次,我在株式会社GENEROSITY公司进行了实习,在此期间,我完成了从策划到开发一款通过手部追踪来照料盆栽的MR应用的全过程。以下将记录这一过程。

概要

本次我开发的是“MR盆栽”
这是一款可以在现实空间中放置虚拟盆栽的应用程序,用户通过手部追踪进行照料,盆栽的造型会随之发生变化。
最终制作完成的效果如下所示。

開発環境

  • Windows 11
  • Meta Quest 3
  • Unity 6000.3.26f1
    • Meta XR SDK
    • Meta MR Utility Kit
    • OpenXR 插件
  • Blender 5.2LTS(将在下篇文章中使用)

環境構築

基于 Meta 官方文档:Unity 透视教程 构建。建议通过链接确认详细步骤。

创建新项目

  • 选择模板
    本次将使用 Universal 3D 进行。
    スクリーンショット 2026-11-11 130054.png

「Mixed Reality(MR)」でも問題ありません。

必要なパッケージの導入

  • Meta XR SDK(Meta XR All-in-One SDK)のインポート
    スクリーンショット 2026-11-11 175914.png

  • OpenXR プラグインのインポート
    スクリーンショット 2026-11-12 165416.png

プロジェクト設定

Build Profiles で Android をアクティブにします。
スクリーンショット 2026-11-11 154439.png

Meta XR SDKのProject Setup Toolを開きます。
image.png

image.png

Fix All を押して現在のプロジェクトのXR向けの設定に自動で変更します。
image.png
残っている警告がありますが、これはビルドする際のアプリケーションの名前が設定されていないことを示しています。現状は問題ないです。

適用された設定の確認

Project Settings で XR plug-in Management →OpenXRを開きます。

Androidタブで以下の Meta Quest Supportにチェックが入っているか確認してください。
image.png
私の場合はこのチェックが入っていなくビルド後の動作がXRとしてうまくいかなかったりしました。警告も特に見当たらなく見落とすと後で大変です。

XR用の設定(CameraRig)

场景的基础设置

  • 删除默认的 Main Camera
  • 添加 CameraRig
    スクリーンショット 2026-11-11 154732.png

OVRManager 的设置(透传、追踪、空间显示)

选择 OVRCameraRig,在 Inspector 中打开 OVR Manager 组件。

  • 启用 MR(透视)的步骤
    将 SceneSupport 和 Passthrough 设为 Required。
  • 为了启用手部追踪,请在同组件设置中将
    Hand Tracking Suppor 设置为 Controllers And Hands。
    スクリーンショット 2026-11-11 160057.png

另外在我的文章中,Hand Skeleton version 使用 OpenXR Hands。
スクリーンショット 2026-11-12 163731.png

由于 OVR Hand Skeleton 和 OpenXR Hand Skeleton 的骨骼排列不同,如果不统一,在直接引用特定骨骼位置时可能会出现引用了错误骨骼的情况。
例如,我在使用 OVR Hand Skeleton 时,本应引用食指,结果却引用到了无名指。

  • 背景透明设置
    在 CameraRig 的子对象 CenterEyeAnchor 的 Camera 组件中找到 Environment,将 Background Type 设置为 Solid Color,并将 Alpha 值设为 0。
    スクリーンショット 2026-11-11 160717.png
    稍后为了确认透视功能,建议放置一些对象。

构建

在 Windows 侧需要从以下页面安装“Oculus ADB Drivers”。
https://developers.meta.com/vr/downloads/package/oculus-adb-drivers/

在启用开发者模式的Quest 3上,通过USB-C线缆连接PC时,需在开发者调试授权通知中点击允许。
之后,在Unity的Build Profile中确认,Run Device选项中将可选择已连接的Quest 3。
构建完成后,应在Quest 3上确认了直通(passthrough)功能。

手势检测

关于通过手势触发事件的机制,参考了以下文章中关于手势注册及通过手势调用事件的部分。因此建议阅读该作者的文章。

手势判定实现

本次我准备的是用于MR盆栽养护的
"捏取(Pinch)"动作(闭合拇指与食指)
。

在设置手指时,我最初使用了如下拇指和食指的状态配置。

  • 拇指:Curl(弯曲),is,Closed
  • 食指:Curl(弯曲),is,Closed
  • 其他手指:Nothing(不检测)

スクリーンショット 2026-11-11 164559.png
然而,手指跟踪的检测非常细致,如果不仔细地将手指完全弯曲,通常无法检测到。
在下面的视频中,当检测为ON时,材质会变为红色。

因此,对于"捏合"操作,我决定不是检测"手指闭合的时候",而是检测"手指未张开的时候"。

  • 拇指:Curl(扭转),is Not,Open
  • 食指:Curl(扭转),is Not,Open
  • 其他手指:Nothing(不判定)
    スクリーンショット 2026-11-11 163858.png

スクリーンショット 2026-11-11 163858.png

这样,即使是捏合动作也能进行判定了。

次回

  • [Part2:功能实现篇]
    投稿完成后更新链接

来源:Qiita · Unity 开发社区 · qiita.com