見出し画像

Godot4のOpenXRで指のトラッキング

概要

X(Twitter)を見ているとVirtual Desktopが、OpenXRの指トラッキングに対応したと書かれていました。
Guy Godin on X: "Here’s something members of the Virtual Desktop community have been working on these past few days.. https://t.co/6TSsGgsIX4" / X (twitter.com)
Godot4のOpenXRで指トラッキングに挑戦したときの記録です。
Quest3 -> VirtualDesktop -> Godot4で作るサンプルゲーム の流れで指トラッキング情報を送ります。

Setting up XRを参考にXRの設定

Setting up XR — Godot Engine (4.x)の日本語のドキュメント
を参考に参考に互換性を選びプロジェクトを作りました。
プロジェクト設定のXR->OpenXRとXR->Shadersを有効化しました。
また書かれている通りにXROrigin3D、XRCamera3D、XRController3Dをシーンにたしました。ついでに地面とライトもたしました。

この時点でQuest3/VirturalDesktopで実行すると「OpenXR: No viewport was marked with use_xr, there is no rendered output!」のエラーが出てQuest3からは何も見えませんでした。これは、ルートノードのGDScriptに必要な処理を書き忘れでした。

The OpenXR hand trackingを参考に指トラッキングの設定

Godot4のOpenXR The hand tracking extensionのマニュアルは下記にありました。
The OpenXR hand tracking — Godot Engine (4.x)の日本語のドキュメント
マニュアルに、決まった名前のボーン名が付いたデータが必要と書かれていました。
そのためgodot-xr-toolsからHand_low_L.gltfとHand_low_R.gltfをダウンロードしてファイルシステムに入れました。
godot-xr-tools/addons/godot-xr-tools/hands/model at master · GodotVR/godot-xr-tools (github.com)

メニューの シーン -> 新しい継承シーン でファイルシステムに入れたHand_low_L.gltfを選択して継承シーンを作りました。

ここで今回の目的のOpenXRの指トラッキング情報を受け取るOpenXRHandのノードを追加しました。
そして、インスペクターでLeft/Rightの選択と指トラッキング情報を元に動かすスケルトンを指定しました。

メインシーンで継承して作った手のシーンをコントローラの下に入れました。

また、プロジェクト設定でXR -> OpenXRのExtensions -> Hand Trackingをオンにしました。

ここまでがGodot側の設定でした。

VirtualDesktop側の設定

Questアプリケーション側のVritaulDesktopの設定で、トラッキング情報を送るのようなチェックボックスが有るのでチェックしました。
また、Windows PC側の設定でOpenXR RuntimeにAutomatic/SteamVR/VDXRが選べるのでVDXRを選択しました。(2024/02/18時点だとVDXRだけが指トラッキング情報を扱えるようです)

結果

動かした結果は下記です。
sachi on X: "Boneか何かが変だけどQuest3の指トラッキング情報をVirtualDesktopからPCには送れた https://t.co/aHsk23iNmu" / X (twitter.com)

動いたけど、SteamVRといっしょに使えないから使い道がないです。諦めました。
追記2024年3月10日: VirtualDesktopのBetaバージョンでindexコントローラー互換の情報がSteamVRに送れるようになっています。

この記事が気に入ったらサポートをしてみませんか?