ゼファーネットのロゴ

「Myst」におけるハンドトラッキングの設計と実装

日付:

使い方 Presence Platform のアップグレードされた Hand Tracking API、最新のアップデートでハンドトラッキングを導入しました ミスト 「Hands & More」というタイトルの Meta Quest プラットフォームで。 ついに人々にプレイしてもらえることにとても興奮しています ミスト 物理コントローラーなしでクエストで! この投稿では、ハンド トラッキングの実装の進化と反復について説明します。 ミスト—特に、Unreal Engine 4.27.2 でのサポートの追加。

ハンナ・ガミエルによるゲスト記事

ハンナ・ガミエルは開発ディレクターです シアン—オリジナルの背後にあるスタジオ 'ミスト ゲーム—そして新しいゲームの開発を支援しました ミスト (2020)'VRサポートが含まれています。 元々純粋に技術的なバックグラウンドを持っていた彼女は、現在、すべてのタイトルの制作をリードし、Cyan でビジネスと技術の取り組みを管理しています。 彼女は、「Myst」(2020)、「The Witness」、「Braid, Anniversary Edition」、「Obduction」、「Firmament」(近日公開予定) などのタイトルに取り組んできました。

設計段階と考慮事項

ハンド トラッキング用のナビゲーションの設計

行きたい場所を示す画像。 あなたはおそらく指さすことを考えましたよね? そのため、移動に「ポインティング」方式を使用することにしました。 ミスト.

テレポート モードでは、行きたい場所をポイントすると、目的地にテレポート リングが表示されます。 「ポイントを外す」(残りの指を伸ばすか、単に人差し指を手のひらに戻す) と、テレポートが実行されます。

スムーズな移動モードの場合、自由に動かせる利き手 (コントロール設定で構成できますが、デフォルトでは左手です) でポイントすると、ポイントしている方向にスムーズに移動し始めます。

ポインティングを使用して動作をプレイテストしたところ、手の残りの部分によって人差し指と中指が遮られていると、ハンド トラッキングが信頼できない場合があることがわかりました。 これらの指が完全に指を指しているのか、それとも手に完全に「囲まれている」のか、システムは判断できません。 この面でより安定した動きの開始/実行を説明するために、コードに少し「ごまかす」要素を追加しました。 Unreal Engine でのサポート。

ターニング

「ポイント」メソッドは、すべてのナビゲーション用途で機能するわけではありません。 回転に関しては、最初はポインティングと手首の回転を組み合わせました。 プレイヤーの手首とカメラの前方ベクトルを比較すると、ターンの方向 (およびターンの大きさ) が示されます。すべてのモード間でナビゲーションの「ポイント」テーマを維持することは直感的であると思われたため、最初はこれを試しました。

ただし、快適性テストでは問題が発生しました。 プレイテストでは、ほとんどのプレイヤーは手のひらを地面に向けて前方を指します。これは、ゲーム以外でも何かを指そうとする場合と同様です。 手のひらを地面に向けた状態で手首を左右に (手首の上軸を中心に) 回転させるのは難しく、特に胸から背を向けようとすると、可動範囲が非常に制限されます。

この問題は、プレイヤーに手のひらを内側に向けて目の前の何かを指すように依頼した場合でも同じです。 手首を曲げることができます に向かって しかし、手首を体から離すときと同じ可動範囲は得られません。

では、これをどのように解決したのでしょうか。 最終的に、ポインターを指さすジェスチャではなく、「親指を立てる」ジェスチャに向きを変えることにしました。

親指を立てることを想像してみてください。 次に、手首を左右に回します。 可動域はそれほど大きくありませんが、このジェスチャでは、親指で「左」と「右」のどちらかを指しているのとかなり一貫していることに注意してください。

これが、ハンド トラッキング モードをオンにすることに決めたものです。 親指でポイントするのは最も直感的な方法ではないように思えますが、 した そうするための最も快適で一貫した方法になります。

スナップ ターンでは、手首を親指を立てた位置から左または右に回転させると、XNUMX 回のスナップ ターンが開始されます。 次に、スナップをリセットするために手を「中央」(真上) の位置に戻す必要があります。さらに、非常に短いクールダウンが発生してスナップ ターンを再び開始するのを待つ必要があります。

スムーズな回転では、親指を立てた状態で手首を回すと、左または右に回転し始めます。しきい値を超えるまで回転が発生しない「デッド ゾーン」を離れるとです。

動きとオブジェクトの相互作用ポーズ間の競合の処理

もちろん、指を指すことは、単にナビゲーションに使用されると見なすには広すぎるジェスチャーです。 人々は、習慣や自分の期待から、ボタンを押したり、世界の他のものとやり取りしたりするために、同じポインティング ジェスチャを行います。 歩いて行くのはかなり耳障りでしょう(しかしそうではありません 指でボタンを押してから、ゲーム内で突然 (そして意図せずに) そのボタンに近づきます (または意図せずにテレポートを開始します)。

プレイヤーが何かを操作しているときに動きが発生しないようにする方法は、「移動」ジェスチャを行う手が操作可能なオブジェクトの特定の範囲内にあるときに、移動コードが発火するのを防ぐことです。 この範囲は、プレイテストに基づいて適切な「スイート スポット」を得るために何度も微調整されています。

このスイート スポットは、人差し指の先端の骨のワールド空間位置から約 25 cm であることがわかりました。 ミスト は、さまざまなサイズ (小さなボタンから非常に大きなレバーまですべて) のインタラクティブなオブジェクトでいっぱいで、広いスペースと狭い廊下の両方に配置されているため、この数に落ち着くまでにかなりのテストが必要でした. 最初は 60 cm (約 25 フィート) を試しましたが、プレイヤーがまだオブジェクトに近づく必要があるときに動きが発生しませんでした。 同様に、XNUMX cm 未満のものは、プレイヤーがオブジェクトをつかんだり触れたりしようとしたときに、望ましくないプレイヤーの動きを引き起こしました。

私たちの最高のテスト エリアの XNUMX つは、ミスト アイランドのジェネレーター ルームでした。狭い入り口を通り抜けると、すぐにボタンでいっぱいのパネルが表示されます。 インタラクション テスト エリアが大きすぎると、人差し指の範囲内でボタンが検出されたため、プレイヤーはエントリを通過してパネルに向かって移動できませんでした。

とはいえ、25cmは特に ミスト. 他のゲームでは、独自の基準を念頭に置いて同様のものを実装したい場合、この数を調整する必要があるかもしれません.

ハンド トラッキングのためのオブジェクト インタラクションの設計

現在、グラブ可能なインタラクションはすべて ミスト バルブを回す、ドアを開ける、ボタンを押す、本のページをめくるなど、ハンド トラッキングで動作するように構築されています。

インタラクションは、すでに設定したものをピギーバックします ミスト タッチコントローラー付き。 そこでは、グリップ ボタンを押すと、手のゲーム内メッシュ表現が自動的に「つかまれた」ポーズにブレンドされ、手を握りこぶしにするか (空の場合)、オブジェクトをつかみます。 ハンド トラッキングでは、何かを「つかむ」のに十分なほど指を曲げて、前に述べたのと同じロジックを開始するタイミングを限定的に推測するコードを追加しました。

たとえば、ハンド トラッキングを使用していて、つかむことができるものの上に手を置いた場合、手の色がオレンジ色に変わります (これは、 ミスト VRも)。 指を握りこぶしに巻き始めて操作可能なオブジェクトをつかむと、オレンジ色の球が手のメッシュに置き換わり、手がオブジェクトに取り付けられている場所を表します。

カスタムのポーズ可能なメッシュを作成する代わりにこの方法を使用した理由、または手/指がこれらのオブジェクトの一部と物理的に相互作用するように見えるようにするのは、相互作用が私たちが提供するものと同等であることを望んでいたからです。とりあえずタッチコントローラー側。

ただし、ボタンを押すと動作が異なります。 ボタンはグラブ可能なオブジェクトではないため、抽象化の必要はありません。代わりに、ポーズ可能な手のメッシュの各指の関節の間に生成されたカプセル コライダーを使用してボタンを押すだけで済みます。 このため、あらゆる種類の奇妙で楽しいことができます。本当にやりたい場合は、小指または薬指の指関節だけを使用してゲームのすべてのボタンを操作するなどです。

この実装は、Touch コントローラーがゲーム内のボタンと対話する方法とは少し異なります。通常、プレイヤーはコントローラーのグリップ ボタンを使用して、ポーズをとった「指差し」メッシュに手を設定し、正確なゲーム内ボタンを取得することを期待しています。彼らの端を押してください。 ハンド トラッキングを使用すると、手で作成できるポーズの柔軟性が明らかに大幅に向上するため、同じレベルの精度でボタンを押す方法が大幅に増えます。

メニュー/UI インタラクション

メニューの操作については、Meta が Quest プラットフォームに使用するのと同じ操作パラダイムを採用することになりました。どちらかの手で、親指と人差し指の間で XNUMX 本の指でつまむというものです。 これは、ゲーム内メニューを開いたり、メニュー内の要素を操作したりするために使用できます。 プレイヤーが Quest で最初にハンド トラッキングを有効にするときに、OS レベルのメニューでこれを行うように既に教えられている場合、ここで車輪を再発明しても意味がありません!

これらすべてをプレイヤーに伝える

ハンド トラッキングは Quest での入力として Touch コントローラーほど一般的ではなく、プレイしている人がいる可能性があるためです。 ミスト 初めて (または彼らの最初の VR ゲームをプレイすることさえあります!)、ハンド トラッキングに関するこのすべての情報をプレイヤーに伝える方法を考慮しました。 ハンドトラッキングの相互作用を説明するために特別に調整された「コントローラー図」の別のバージョンを含めるようにしました( ミスト)、そしてプレイヤーに特化した通知を表示して、手で動き回る方法を正確に伝えます。

さらに、ハンド トラッキングが有効になったら、スムーズなハンド トラッキング エクスペリエンスを実現する方法をプレーヤーに思い出させることが重要であると考えました。 プレーヤーに通知されます ミスト明るい部屋にいることを確認し、視野内に手を置いておくと、手の追跡の安定性がはるかに向上します。

メタはまた、これらが十分に追跡されたハンド トラッキング環境の鍵であることをプレーヤーに通知しますが、一部のプレーヤーがこれに関するメタの通知を最初に解析せずにゲームに飛び込む可能性があることを認識しているため、忘れた場合に備えて通知することを選択しました.

ページ 2 に進む: Unreal で行われたエンジンの変更 »

スポット画像

最新のインテリジェンス

スポット画像