考慮事項

Unity、OpenXR、WebXR には、没入型エクスペリエンスで多様なインタラクションを作成するための多目的なツールキットが用意されています。目的は、ユーザーが既存の学習体験を使用して操作できる没入型アプリを開発することです。シンプルなジェスチャーから複雑な物理ベースのシミュレーションまで、あらゆるものを設計できます。

Unity、OpenXR、WebXR アプリは、フルスペースでのみ動作します。

Android XR の設計原則について学習する

入力

XR アプリには、手、目、顔のトラッキング、ジェスチャー、音声コマンド、キーボード、マウス、コントローラなどの従来の入力デバイスによる操作を含めることができます。自然でアクセスしやすいユーザー エクスペリエンスを提供するために、アプリに必要な入力を検討します。

  • 使い慣れたジェスチャーをサポートして、アプリの習得時間を短縮します。2D UI を操作する場合は、ピンチなどの標準のシステム ジェスチャーを使用します。ボールを拾ったり投げたりといった 3D 操作の場合は、現実世界での操作を模倣したジェスチャーで設計する必要があります。これにより、ユーザーの既存の知識を活用し、チュートリアルの必要性を軽減できます。
  • 追加のジェスチャーが必要な場合は、学習、記憶、実行が容易なものにしてください。不快感や疲労につながる可能性がある、複雑な複数ステップの操作や不自然な姿勢は避けてください。手ジェスチャーの使用方法をユーザーに説明するガイドを用意することを検討してください。
  • 左手または右手で操作できるようにしてください。それができない場合は、システムの利き手設定に従います。
  • 両手での操作は没入感を高めることができますが、身体の自由が利かないユーザーにとっては難しい場合があります。重要なアクションについては、片手操作を優先します。両手での操作が必要な場合は、同じ結果を得られる片手操作の方法を用意します。
  • Unity、OpenXR、WebXR アプリは、Android のバックスタックを自動的に利用できません。バックスタックを実装して、ユーザーが Android XR の戻るジェスチャーにアクセスし、操作を元に戻したり、ジェスチャー ナビゲーションを使用して戻ったりできるようにすることを検討してください。

ジェスチャー ナビゲーションを使用している両手。

UI

ボタン、パネル、テキストなどのユーザー インターフェース要素は、XR アプリでの自然な操作に不可欠です。シームレスで直感的なユーザー エクスペリエンスを優先する必要があります。具体的な UI デザインの選択は、アプリ固有の要件によって異なります。

  • 主なインタラクティブな要素と重要なコンテンツは、ユーザーの自然な視線と視野内に配置します。これにより、視認性が向上し、快適なエクスペリエンスが実現します。ユーザーがインターフェースをどのように操作するかを検討して、インターフェースを配置する距離を決定します。たとえば、レーザー ポインタで照準を合わせているのか、指でボタンを直接タップしているのかなどです。ユーザーから想定される距離に基づいて、インターフェースのサイズを構成します。Android XR のサイズとスケールのガイドを参照してください。
  • ボタンなどのインタラクティブな UI 要素を設計する場合は、ユーザーがどのように操作することを想定しているか、各入力方法(ハンド トラッキングとマウス)に必要な精度レベルを検討し、ターゲット サイズや間隔などの要素を適宜調整します。UI の位置が快適な操作を可能にしていることを確認します。ユーザーの操作に対する視覚的なフィードバックを提供します。Android XR スタイルガイドを参照する
  • パネルなどの 2D UI は、メニューベースの操作に適しています。物理的なボタン、レバー、スイッチなどの 3D UI は、空間環境を操作する際に没入感を高めることができます。読みやすさを重視したパネルベースのインタラクションと、世界に焦点を当てたインタラクションのための 3D オブジェクトを慎重にバランスよく組み合わせることで、臨場感あふれるエクスペリエンスを実現できます。
  • 適切なフォントサイズ、種類、コントラストを使用して、テキストを読みやすくします。ユーザーがテキストを閲覧する距離に基づいて UI を配置します。さまざまなフォントサイズでスムーズなテキスト レンダリングを行うには、Signed Distance Field フォントを使用します。Android XR タイポグラフィ ガイドを参照する

非常に大きな画面で空間環境に完全に没入している人物。岩の上に立ち、UI コントロールが手の届く範囲にある。

空間インタラクション

XR で最も豊かなインタラクションの一部は、ユーザーが 3D オブジェクトを直接操作できることです。たとえば、オブジェクトを拾い上げて検査し、投げるといった単純な動作も含まれます。また、レバーを引く、ボタンを押す、ユーザーがすでに保持している要素を操作する(スプレーボトルをスプレーするなど)など、より複雑な操作も含まれます。3D オブジェクトを直感的に操作するには、ユーザーがすでに持っている世界に関する知識に基づいて設計します。

  • リアルなアクションを作成する場合は、物理エンジンの統合を検討してください。Unity でビルドする場合は、物理エンジンが組み込まれています。物理エンジンが消費する処理能力に注意し、パフォーマンスを重視して最適化します。
  • リアリティよりも信憑性が重要です。たとえば、ユーザーがボールを強く投げたと判断した場合、アプリはデバイスのセンサーが示す以上の力をボールに加える必要があります。
  • オブジェクトは、アフォーダンスに合わせて作成する必要があります。つまり、ユーザーがオブジェクトに対して実行できるすべての操作をアプリで考慮する必要があります。たとえば、ドーナツは拾ったり、投げたり、食べたりできます。アプリは、ドーナツを食べずに「今はお腹が空いていません」というナレーションを流すことができます。これらのソリューションは、ユーザーがドーナツで実行することを想定しているアクションに対応しています。
  • オブジェクトは、ペアレント設定、物理ジョイント、追従、物理力など、さまざまな手法で保持できます。各手法にはそれぞれメリットとデメリットがあります。カスタム グラブ メソッドを実装する前に、さまざまなアプローチを調査してテストし、最も適したものを決定することが重要です。
  • 3D 環境で設計する際は、人間工学が重要です。ユーザーが快適な高さに調整できるように、フラットな面にハンドルを追加することを検討してください。人の体はそれぞれ異なるため、空間内の各オブジェクトをさまざまなユーザーでテストしてください。

Job Simulator: オフィスの個室でビンテージ パソコンの前に座っているユーザーが登場する、没入感あふれる VR ゲーム。このゲームには、3D オブジェクトを操作できる仮想の手があります。

シーンのデザイン

シーンは、完全に没入型の仮想世界から、仮想要素をユーザーの実際の周囲環境と融合させる拡張現実のエクスペリエンスまで、多岐にわたります。快適で機能的で、XR の独自の機能を活用したシーンを設計します。

  • 飛行など、ユーザーの周囲を移動するシーンを制限します。これは、特にユーザーの身体が動かない場合、不快感を覚える可能性があります。トンネル ビジョン(次のセクションで説明)などの移動手法は、不快感を軽減するのに役立ちます。
  • 複合現実のエクスペリエンスを作成するには、Android XR のシーン認識機能を使用して、仮想オブジェクトをユーザーの物理環境に統合します。
  • バーチャル リアリティ アプリケーションでは、バーチャル空間内に現実世界の限定的なビューを組み込む場合があります。これにより、ユーザーは没入型エクスペリエンスを終了することなく、周囲の状況を把握し、物理的なオブジェクトを操作できます。

移動

Android XR エクスペリエンスでは、設定された境界で定義された物理空間内をユーザーが自由に移動できるようにすることをおすすめします。たとえば、動かない作成済み空間を中心に設計されたバーチャル エクスペリエンスは、没入感が増すと感じるユーザーもいます。ユーザーが境界で許可されているよりも大きな仮想空間を移動すると予想される場合は、テレポートなど、移動を増幅する移動技術の使用を検討してください。

テレポートでは、ユーザーが指で選択するか、コントローラを使用して新しい場所に瞬時に移動します。長距離をすばやく移動するのに適しており、多くの場合、酔いが少なくなる移動方法です。遷移中に画面を短時間ぼかすことで、不快感をさらに軽減できます。

その他の移動方法

他の移動方法を使用している場合は、テレポートも代替手段として提供することを検討してください。

  • 腕を振ってその場で歩く: 腕を振ったり、コントローラを上下に動かしたりすることで、歩行をシミュレートします。一部のユーザーは、この操作が疲労を伴う、または直感的ではないと感じるかもしれません。
  • 連続した移動: コントローラのジョイスティックまたはサムスティックで、仮想の自分を環境内を移動させます。ほとんどの場合、この方法は酔いの一般的な原因となるため、避けてください。

エクスペリエンスで移動を使用する場合は、個々の好みに合わせて複数のオプションを提供し、ユーザー エクスペリエンスを向上させます。

ユーザーの身体的な動きと仮想体験の間に不一致があると、酔いが発生することがあります。移動中のユーザーの快適性を最適化するには:

  • 仮想水平線が安定して水平であることを確認します。
  • 連続した動きが必要な場合は、徐々に加速または減速しないでください。速度を一定に保つ。
  • トンネル ビジョンは、移動中のユーザーの視野を狭め、周辺領域で知覚される動きを制限するビネット効果により、乗り物酔いを軽減できます。
  • 回転の場合は、ユーザーの視点が特定の角度にスナップされるようにします。方向感覚が失われる可能性がありますが、酔いが少なくなります。
  • ユーザーの許容度はそれぞれ異なります。移動方法の選択、トンネルビジョンのオンとオフの切り替え、移動速度の調整など、ユーザーが好みに合わせて快適性設定を調整できるようにします。

空間オーディオ

音は、ユーザーを別の世界に連れて行き、特定の感情を呼び起こす没入型のサウンドスケープを作成するための強力なツールです。空間オーディオは、仮想環境内の音声を正確に配置します。

  • アンビソニックスは、音声のスカイボックスのようなもので、ユーザーに没入型のサウンドスケープを提供します。アンビソニックスは、背景の環境音や、リスナーを取り囲む完全球状の音場を再現する必要があるその他のシナリオに使用します。
  • 空間化された音声キューは、ユーザーの注意を引くことができます。
  • 効果音を空間化することで、没入感を高めることができます。
  • 音声オーディオをスピーカーの位置に空間化すると、ユーザーがスピーカーに直接向き合っていない場合でも、臨場感を味わうことができます。
  • ユーザーが音声を調整できるようにします。たとえば、バックグラウンド ミュージック、効果音、ナレーションの無効化や音量の変更などです。
  • 聴覚障がいのある人や難聴の人向けに字幕を追加することを検討してください。

快適性に関するその他の考慮事項

ユーザー補助を優先するには、さまざまな能力や設定に対応したカスタマイズ可能なオプションを提供します。これにより、幅広いユーザーが没入型の体験を楽しむことができます。

  • アプリケーションを 72 フレーム/秒で実行する: これにより、視覚的なジャダーを最小限に抑え、吐き気を防ぐことができます。
  • ユーザーが管理できるようにする: XR に対する親和性のレベルが異なるユーザーにとってアプリを使いやすくするには、カスタマイズ可能な設定でユーザーがエクスペリエンスを調整できるようにします。ユーザーが物理的なニーズや好みに合わせてコントローラのボタンやジェスチャーを再マッピングできるようにすることを検討してください。たとえば、手の可動性が制限されているユーザーには、ボタンのレイアウトの変更や、大きくてシンプルな入力コントロールが役立ちます。

特定のプラットフォームに関するガイダンスについては、以下をご覧ください。

OpenXR 向けに開発する

Unity での開発

WebXR のドキュメント