mcpField
H
hz-unity-meta-core-sdk

hz-unity-meta-core-sdk

github.com/meta-quest開発241218 回インストール5 週間前に更新
リポジトリ

hz-unity-meta-core-sdk について

Meta XR Core SDK を使い、Meta デバイス向け Unity VR/MR アプリを開発するためのスキルです。デバイス、入力、パススルー、空間機能を扱い、unity-cli による Editor 操作も案内します。

主な機能

  1. 01OVRCameraRig とデバイス管理
  2. 02コントローラー入力とトラッキング
  3. 03パススルーとハンドトラッキング設定
  4. 04空間アンカーとシーン認識
  5. 05プロジェクト設定の確認と修正
  6. 06unity-cli による Editor 操作

活用シーン

  1. 01Unity VR/MR プロジェクトの XR 機能設定
  2. 02Meta プロジェクト設定の問題確認と修正
  3. 03シーンコンポーネントの編集と保存確認
  4. 04Android マニフェストの生成と検証

MCP 対応

主に unity-cli を使った Unity Editor の操作を案内します。Unity MCP の利用にも触れていますが、別途制約が記載されています。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/meta-quest/agentic-tools --skill hz-unity-meta-core-sdk

インストール後、Claude Code で/hz-unity-meta-core-sdkを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
android-manifest.md
boundaryless.md
controller-input.md
hand-tracking.md
ovr-camera-rig.md
ovr-manager.md
ovr-overlay.md
passthrough.md
project-setup-tool.md
project-setup-workflow.md
scene-api.md
spatial-anchors.md
unity-mcp-fallback.md

詳細

Meta XR Core SDK(com.meta.xr.sdk.core)

Meta XR Core SDK は、Meta の VR デバイスを対象とした VR および MR アプリケーションを開発するための、基盤となる Unity パッケージです。コア XR リグ、デバイス管理、入力処理に加え、パススルー、ハンドトラッキング、空間アンカー、シーン理解などのプラットフォーム機能へのアクセスを提供します。

パッケージ:com.meta.xr.sdk.core

SDK コードの実行 — unity-cli で実行中の Editor を操作する

ここに記載されているのはすべて Editor 専用の C# です。シーン、マニフェスト、設定ファイルを手動で編集するのではなく、開いている Editor に対して実行してください。接続方法、--project-path、Safe Mode からの復旧については、unity-cli スキルを参照してください。

unity status --format json          # look for state "ready"
unity command run_script --project-path <proj> --file AgentScripts/Setup.cs --entry Setup.Run --format json

eval よりも run_script を優先してください。.cs を Assets/ の外に置くことで(パスはプロジェクトルートを基準に解決されます)、書き込みによるインポートやドメインのリロードを防ぎ、シェルの引用符によって C# のリテラルが壊れることもありません。

SDK 固有の注意点:

  • 型を検索するためのリフレクションは不要です。 run_script は読み込まれているすべてのアセンブリを参照するため、OVRProjectSetup、OVRManifestPreprocessor などを直接コンパイルできます。内部機能(_principalRegistry、GetTasks)には using System.Reflection; と BindingFlags を使用できます。
  • EditorUtility.DisplayDialog を開く可能性のある処理には、silentMode: true を渡してください。モーダルダイアログがリクエストをブロックし、タイムアウトする原因になります。
  • 非同期処理(FixAllAsync、Client.Add)はスクリプトの戻り後に実行されます。別の run_script で確認してください。メインスレッドで Task.Wait() を呼び出さないでください。
  • シーンを編集した場合は、MarkSceneDirty + SaveScene(および AssetDatabase.SaveAssets())を実行してから、値を読み戻してください。
  • CLI ではなく Unity の MCP を操作する場合は、その制約により上記の方法は使えません。references/unity-mcp-fallback.md を参照してください。

SDK のソースを探す

プロジェクトの設定によって、パッケージ com.meta.xr.sdk.core の場所は異なる場合があります。

  • Library/PackageCache/com.meta.xr.sdk.core@<hash>/(レジストリからキャッシュされている場合)
  • Packages/com.meta.xr.sdk.core/(ローカルパッケージ参照の場合)
  • ディスク上のカスタムパス(埋め込みパッケージまたはローカルフォルダー)

SDK のソースを検索する前に、まずファイル名のパターンを使って既知のファイルを検索し、パッケージのルートを特定してください。

**/com.meta.xr.sdk.core*/Scripts/OVRManager.cs

その後、以降のすべての検索操作で、特定した親パスを使用してください。

重要:OVRProjectConfig または OVRManager の機能を変更した後

OVRProjectConfig または OVRManager の機能設定(ハンドトラッキング、パススルー、境界なし、対象デバイスなど)を変更した場合は必ず、GenerateOrUpdateAndroidManifest() を呼び出し、結果を確認してください。 ワークフローの詳細は references/android-manifest.md を参照してください。

クイックリファレンス

コンポーネント目的
OVRCameraRigUnity の Main Camera を置き換える、主要な XR リグのプレハブ
OVRManagerデバイスの状態、機能、設定を管理するシングルトン
OVRInputコントローラー入力とトラッキングの統合 API
OVROverlayテキスト、UI、動画をより鮮明に表示するコンポジターレイヤー
OVRPassthroughLayerパススルー表示を有効にする
OVRSpatialAnchorワールドに固定された空間アンカー
OVRBoundaryGuardian 境界システムへのアクセス
OVRProjectSetup設定タスク用の Project Setup Tool

OVRCameraRig:主要な XR リグ

OVRCameraRig プレハブは、VR/MR シーンを作成する際に追加する主要な GameObject です。Unity の標準的な Main Camera を置き換え、以下を提供します。

  • 左右の目のステレオレンダリング
  • TrackingSpace 階層を介した頭部および位置のトラッキング
  • 目のアンカー(CenterEyeAnchor、LeftEyeAnchor、RightEyeAnchor)
  • 手/コントローラーのアンカー(LeftHandAnchor、RightHandAnchor)
階層構造

OVRCameraRig の階層には、目のアンカー、手/コントローラーのアンカー、マルチモーダルアンカーが含まれます。現在の構造を確認するには、OVRCameraRig プレハブを調べるか、シーンにインスタンス化して TrackingSpace の子要素を確認してください。

シーンへの OVRCameraRig の追加

XR サポートが必要なシーンで作業する場合:

  1. 現在のシーンに OVRCameraRig があるか確認します
  2. 見つからない場合、エージェントは次のいずれかを行います:
    • オプション A:OVRCameraRig が含まれるシーンをユーザーに尋ねます(OVRCameraRig prefab instance の一部です)
    • オプション B:OVRCameraRig があると把握しているシーンを開きます
    • オプション C:現在のシーンに OVRCameraRig prefab を追加するか、ユーザーに尋ねます
  3. OVRCameraRig を追加する場合は、references/ovr-camera-rig.md のセットアップ手順に従います。

OVRManager:機能の設定

OVRManager(OVRManager.cs)は、VR ハードウェアへの主要なインターフェースです。OVRCameraRig prefab にアタッチされたシングルトンで、Meta XR SDK を Unity に公開します。次の項目を制御します:

  • ターゲットデバイス - 対象とする Meta VR デバイス
  • パフォーマンスと品質 - MSAA、適応型解像度、動的解像度
  • トラッキング - トラッキング原点の種類(目の高さ、床の高さ、ステージ、固定)
  • ディスプレイ - 色域の設定
  • Quest の機能 - ハンドトラッキング、パススルー、キーボード、フォーカス認識、セキュリティ、実験的機能
  • 複合現実キャプチャ - 現実世界との合成
機能を確認するための OVRManager の分析

利用可能な機能とその設定方法を把握するには、シーン内の OVRCameraRig にある OVRManager コンポーネントを分析します。OVRManager Inspector では、設定可能なすべての XR 機能がセクションごとに表示されます。

設定の詳細なリファレンス(トラッキング原点、パススルー、境界、OVRProjectConfig のハンドトラッキングなど)については、references/ovr-manager.md を参照してください。

重要:シリアライズされたフィールドの変更には、Reflection ではなく SerializedObject を使用する

コンポーネントのシリアライズされたフィールドを変更するには、SerializedObject + FindProperty(name) + ApplyModifiedProperties() を使用して編集してください。Reflection(FieldInfo/PropertyInfo.SetValue)は使用しないでください。Reflection はメモリ上のオブジェクトを変更しますが、シリアライズを経由しません。そのため、prefab instance 上のコンポーネント(例:OVRCameraRig 上の OVRManager)では、変更が prefab override として記録されず、保存時にひそかに破棄されます(SaveScene は true を返しますが、フィールドは prefab のデフォルト値に戻ります)。

  • コンポーネントは UnityEngine.Object として取得します(FindObjectOfType / GetComponent)。SerializedObject/FindProperty は名前で動作するため、asmref は不要です。
  • シリアライズ名は [SerializeField] のバッキングフィールド(多くの場合 _camelCase)であり、公開プロパティではありません。FindProperty が null を返す場合は、so.GetIterator() を反復処理し(Next(true) → propertyPath を記録)、名前を特定します。
  • ApplyModifiedProperties() の後に MarkSceneDirty → SaveScene → SaveAssets を呼び出し、フィールドを読み戻して変更が保持されたことを確認します。
// component obtained as UnityEngine.Object (e.g. FindObjectOfType(type) as Object)
var so = new SerializedObject(component);
so.FindProperty("_SERIALIZED_FIELD_NAME").boolValue = true;   // typed accessor: boolValue/floatValue/intValue/...
so.ApplyModifiedProperties();                                 // records the prefab-instance override + marks dirty

var scene = EditorSceneManager.GetActiveScene();
EditorSceneManager.MarkSceneDirty(scene);
EditorSceneManager.SaveScene(scene);
AssetDatabase.SaveAssets();

// verify before declaring success
var check = new SerializedObject(component).FindProperty("_SERIALIZED_FIELD_NAME").boolValue;

OVRProjectSetup(UPST):プロジェクトの問題の一覧表示と修正

Unity Project Setup Tool(UPST)(OVRProjectSetup)は、Meta VR 向けのプロジェクト設定を検証する Unity Editor 拡張機能です。Configuration Tasks のレジストリを管理し、各タスクが特定の設定を確認して、要件を満たしているか、未対応かを報告します。

主な用途:現在のプラットフォームで未対応の問題をすべて一覧表示し、修正します。

  • 問題を一覧表示する — すべてのタスクを照会し、プラットフォームや有効性で絞り込み、IsDone が false のものを報告します。各問題にはレベル(Required、Recommended、Optional)、グループ(Compatibility、Rendering、Features など)、修正タイプ(自動修正または手動)があります。
  • 問題を修正する — FixAllAsync(BuildTargetGroup) を使って修正可能な問題をすべて自動修正するか、個々の FixAction デリゲートを直接呼び出します。

実行中の Editor に対して unity-cli からプログラムで UPST を操作します(API 全体、タスクレジストリへのアクセス、プロパティの読み取り、修正の実行パターンについては、references/project-setup-tool.md を参照してください)。

UI からのアクセス:Meta > Tools > Project Setup Tool。

UPST が緑色になったら、実機で動作を確認してください。APK をビルドし、metavr app install <apk> を実行して、metavr log --tag Unity のスナップショットで想定される機能が初期化されていることを確認します。

重要:AndroidManifest の更新

OVRProjectConfig が管理する機能について、AndroidManifest.xml を直接編集しないでください。 マニフェストの更新手順とルール全体については、references/android-manifest.md を参照してください。

主な機能

Passthrough(複合現実)

Passthrough は、ヘッドセット内に物理世界をリアルタイムで表示し、複合現実体験を実現します。セットアップ手順と設定については、references/passthrough.md を参照してください。

ハンドトラッキング

ハンドトラッキングを使うと、コントローラーを使わずに自然な手の操作ができます。セットアップと設定については、references/hand-tracking.md を参照してください。

空間アンカー

空間アンカーは、セッションをまたいで維持される現実世界の場所に仮想コンテンツを固定します。

空間アンカーの詳細については、references/spatial-anchors.md を参照してください。

Scene API

Scene を使うと、ユーザーの物理環境モデル(壁、床、家具)にアクセスでき、シーン認識型の MR 体験を実現できます。

Scene API の詳細については、references/scene-api.md を参照してください。

Boundaryless Mode

Boundaryless mode は、物理世界が見える MR 体験で Guardian の境界を無効にします。

Boundaryless のセットアップについては、references/boundaryless.md を参照してください。

コンポジターレイヤー(OVROverlay)

OVROverlay は VR コンポジターを介してテクスチャを直接レンダリングし、アイバッファーのリサンプリングを回避することで、テキスト、UI、動画をより鮮明に表示します。シーンごとに最大 15 個のオーバーレイレイヤーをサポートし、クアッド、シリンダー、キューブマップ、正距円筒図法、魚眼の形状を利用できます。

コンポジターレイヤーの詳細については、references/ovr-overlay.md を参照してください。

コントローラー入力(OVRInput)

OVRInput は、コントローラーのボタン、トリガー、サムスティック、トラッキングへの統一されたアクセスを提供します。

コントローラー入力の詳細については、references/controller-input.md を参照してください。

プロジェクトセットアップのワークフロー

プロジェクトのセットアップワークフロー全体(SDK のインストール、ビルドプラットフォームの設定、XR プロバイダーの構成、OVRCameraRig の追加、OVRManager の構成、AndroidManifest の生成)については、references/project-setup-workflow.md を参照してください。

ドキュメントへのリンク

ドキュメントへの参照先はすべて、developers.meta.com の Meta 公式開発者ドキュメントです。

最新のドキュメントで metavr ツールを使用する

metavr MCP サーバーを利用できる場合は、Meta SDK のドキュメントが頻繁に更新されるため、mcp__metavr__vr_docs_search および mcp__metavr__vr_docs_get_page ツールを使って最新の API 詳細を確認してください。OVRManager、OVRCameraRig、OVRInput などのクラスの正確なメソッドシグネチャを調べるには、engine='unity' を指定して mcp__metavr__vr_api_search を使用してください。

関連スキル

  • unity-cli — 実行中の Editor の操作、Editor のインストール、ビルド/テスト
  • hz-unity-meta-interaction-sdk — インタラクションレイヤー(つかむ、つつく、テレポート、インタラクションリグ)
  • hz-xr-simulator-install-and-configure / hz-vr-debug — Play モード以外での実行とデバッグ

コメント