次の方法で共有


Mixed Reality を前提とした設計

Mixed Reality で適切に表示するようにアプリを設計し、新しい入力メソッドを利用します。

概要

Mixed Reality は、物理世界とデジタル世界を融合した結果です。 Mixed Reality エクスペリエンスの範囲には、HoloLens (コンピューターで生成されたコンテンツを現実世界と混在させるデバイス) などの 1 つの極端なデバイスと、Virtual Reality の完全にイマーシブなビュー (Windows Mixed Reality ヘッドセットで見た場合) が含まれます。 エクスペリエンスの変化の例については、「 Mixed Reality アプリの種類 」を参照してください。

ほとんどの既存の UWP アプリは、変更なしで 2D アプリとして Mixed Reality 環境で実行されますが、このトピックのガイダンスの一部に従うことで、ユーザーのエクスペリエンスを向上させることができます。

Mixed Reality ビューの

HoloLens ヘッドセットと Windows Mixed Reality ヘッドセットはどちらも、UWP プラットフォームで実行されているアプリケーションをサポートしており、両方とも 2 種類のエクスペリエンスをサポートしています。

2D とイマーシブ エクスペリエンス

イマーシブ アプリは、ユーザーが表示しているディスプレイ全体を占有し、アプリによって作成されたビューの中央にユーザーを配置します。 たとえば、イマーシブ ゲームでは、ユーザーをエイリアンの惑星の表面に配置したり、ツアー ガイド アプリによってユーザーが南アメリカの村に配置されたりすることがあります。 イマーシブ アプリを作成するには、3D グラフィックスまたはキャプチャされたステレオグラフィック ビデオが必要です。 イマーシブ アプリは、多くの場合、Unity などのサード パーティ製ゲーム エンジンまたは DirectX を使用して開発されます。

イマーシブ アプリを作成する場合は、 Windows Mixed Reality デベロッパー センター にアクセスして詳細を確認してください。

2D アプリは、ユーザーのビュー内で従来のフラット ウィンドウとして実行されます。 HoloLens では、ユーザー自身の実際のリビングルームまたはオフィスの壁または空間内のポイントにピン留めされたビューを意味します。 Windows Mixed Reality ヘッドセットでは、アプリは Mixed Reality ホーム ( クリフ ハウスとも呼ばれます) の壁に固定されます。

Mixed Reality で実行されている複数のアプリを

これらの 2D アプリはビュー全体を引き継ぐのではなく、ビュー内に配置されます。 環境内に複数の 2D アプリを一度に存在させることができます。

このトピックの残りの部分では、2D エクスペリエンスの設計上の考慮事項について説明します。

2D アプリの起動

Mixed Reality スタートメニュー

すべてのアプリはスタート メニューから起動されますが、アプリ起動ツールとして機能する 3D オブジェクトを作成することもできます。 詳細については、 Windows Mixed Reality 用の 3D アプリ起動ツールの作成に関 するビデオを参照してください。

2D アプリ入力の概要

キーボードとマウスは、HoloLens プラットフォームと Mixed Reality プラットフォームの両方でサポートされています。 キーボードとマウスを Bluetooth で HoloLens と直接ペアリングできます。 Mixed Reality アプリは、ホスト コンピューターに接続されているマウスとキーボードをサポートします。 どちらも、細かいレベルの制御が必要な場合に役立ちます。

その他、より自然な入力方法もサポートされており、ユーザーが実際のキーボードを前面に置いてデスクに座っていない場合や、細かい制御が必要な場合に特に便利な場合があります。

追加のハードウェアやコーディングがなければ、アプリは視線入力 (ユーザーが見ているベクトル) を 2D アプリを操作するときにマウス ポインターとして使用します。 これは、仮想シーン内の何かにカーソルを合わせているかのように実装されます。

一般的な操作では、ユーザーがアプリ内のコントロールを見ると、それが強調表示されます。 ユーザーは、ジェスチャ (HoloLens) またはコントローラーを使用するか、音声コマンドを指定して、アクションをトリガーします。 ユーザーがテキスト入力フィールドを選択すると、ソフトウェア キーボードが表示されます。

Mixed Reality のポップアップ キーボード

これらの操作はすべて、UWP プラットフォームで実行した結果として、追加のコーディングなしで自動的に行われる点に注意することが重要です。 HoloLens と Mixed Reality ヘッドセットからの入力は、2D アプリへのタッチ入力として表示されます。 つまり、多くの UWP アプリが既定で実行され、Mixed Reality で使用できるようになります。

とは言え、余分な作業を行うと、エクスペリエンスを大幅に改善できます。 たとえば、 音声制御 は特に効果的です。 HoloLens 環境と Mixed Reality 環境はどちらも、アプリを起動および操作するための音声コマンドをサポートしており、音声サポートを含めると、このアプローチの自然な拡張機能として表示されます。 UWP アプリ に音声サポートを 追加する方法の詳細については、「音声操作」を参照してください。

適切なコントローラーの選択

混合現実モーションコントローラー

いくつかの新しい入力方法は、特に Mixed Reality で使用するために特に設計されています。

これらのコントローラーは、仮想オブジェクトとの対話を自然で正確に見えるようにします。 一部のやり取りは無料で行えます。 たとえば、HoloLens でジェスチャを選択したり、モーション コントローラーの Windows キーまたはトリガーをクリックすると、予期される入力応答が生成されます。この場合も、コーディングは行われません。

それ以外の場合は、追加の情報と使用可能な入力を利用するコードを追加する必要があります。 たとえば、モーション コントローラーを使用すると、位置とボタンの押下を考慮に入れたコードを記述する場合に、適切なレベルのコントロールでオブジェクトを操作できます。

要約すると、ガイド プリンシパルは、常にユーザーに可能な限り自然で摩擦のない入力メソッドを提供する必要があります。

2D アプリの設計に関する考慮事項: 機能

Mixed Reality プラットフォームで使用される可能性のある UWP アプリを作成する場合は、いくつかの点に留意する必要があります。

  • モーション コントローラー、ゲームパッド、ジェスチャで使用すると、ドラッグ アンド ドロップがうまく機能しない場合があります。 アプリケーションがドラッグ アンド ドロップに大きく依存している場合は、オブジェクトを新しい場所に移動するかどうかを確認するダイアログを表示するなど、このアクションをサポートする別の方法を提供する必要があります。

  • サウンドがどのように変化するかに注意してください。 アプリでサウンド エフェクトが生成された場合、サウンドのソースは、仮想世界におけるアプリのピン留めされた場所と見なされます。 ユーザーがアプリから離れると、サウンドが減少します。 詳細については、空間サウンド を参照してください。

  • 視野を考慮し、アフォーダンスを提供します。 すべてのデバイスが、コンピューター モニターほど大きな視野を提供するわけではありません。 ホログラフィックフレーム の詳細については参照してください。 さらに、ユーザーは実行中のアプリからある程度離れている可能性があります。 つまり、アプリは、世界の別の場所 (実際または仮想) の壁に固定されているように見える場合があります。 アプリでは、ユーザーの注意を引くか、ビュー全体が常に表示されないことを考慮する必要がある場合があります。 トースト通知は利用できますが、ユーザーの注意を引く別の方法として、音を鳴らしたり、スピーチ アラートを生成したりする手段があります。

  • 2D アプリには、ユーザーが仮想環境でそれらを移動およびスケーリングできるようにするための アプリ バー が自動的に与えられます。 ビューのサイズを垂直方向に変更することも、同じ縦横比を維持してサイズを変更することもできます。

2D アプリの設計に関する考慮事項: UI/UX

  • ナビゲーション ビューなどの Fluent Design System を実装する XAML コントロールと、アクリルなどの効果はすべて、2D Mixed Reality アプリで特にうまく機能します。

  • Mixed Reality デバイスまたは少なくとも Mixed Reality シミュレーターで、アプリのテキストとウィンドウのサイズをテストします。 アプリの既定のウィンドウ サイズは 853 x 480 有効ピクセルです。 より大きなフォント サイズ (ポイント サイズは約 32 をお勧めします) を使用し、「 Windows Mixed Reality 用の 2D UWP アプリの更新」を参照してください。 記事「タイポグラフィ」はこのトピックについて詳しく説明しています。 Visual Studio で作業する場合、57 インチ HoloLens 2D アプリ用の XAML デザイン エディター設定があり、適切なスケールとディメンションでビューを提供します。

Mixed Reality アプリに表示されるテキストは大きくする必要があります。

  • あなたの視線がマウスです。 ユーザーが何かを見ると、 タッチ ホバー イベントとして機能するため、オブジェクトを見るだけで、不注意によるポップアップやその他の不要な操作がトリガーされる可能性があります。 アプリが現在 Mixed Reality で実行されているかどうかを検出し、この動作を変更することが必要な場合があります。 以下の ランタイムのサポートを参照してください。

  • ユーザーがモーション コントローラーを使用して何かポイントを見つめると、 タッチ ホバー イベントが発生します。 これは、TouchPointerType を持つ PointerPoint で構成されていますが、IsInContactfalseです。 何らかの形式のコミットが発生すると (たとえば、ゲームパッド A ボタンが押された場合、クリッカー デバイスが押された場合、モーション コントローラー トリガーが押された場合、または音声認識ヘッドが "選択" されると)、タッチ押下 が発生し、PointerPoint が IsInContact trueになります。 これらの入力イベントの詳細については、「 タッチ操作 」を参照してください。

  • 視線入力はマウスポインターほど正確ではないことに注意してください。 マウスのターゲットまたはボタンが小さいと、ユーザーに不満が生じる可能性があるため、それに応じてコントロールのサイズを変更します。 タッチ用に設計されている場合は、Mixed Reality で動作しますが、実行時にいくつかのボタンを拡大することもできます。 Windows Mixed Reality 用の 2D UWP アプリの更新に関するページを参照してください。

  • アプリケーションでは、混乱を引き起こす可能性があるため、黒を使用しないでください。 HoloLens は、黒を光の欠如として定義して単にレンダリングせず、「現実世界」が見えるようにします。 Mixed Reality ヘッドセットでは、黒は黒でレンダリングされます。

  • HoloLens はアプリの色テーマをサポートしていません。ユーザーにとって最適なエクスペリエンスを確保するために、既定では青が使用されます。 色の選択に関する詳細なアドバイスについては、Mixed Reality デザインでの色と素材の使用について説明する このトピック を参照してください。

他に考慮する点

  • デスクトップ ブリッジは、既存の (Win32) デスクトップ アプリを Windows と Microsoft Store に持ち込むのに役立ちますが、現時点では HoloLens で実行されるアプリを作成することはできません。 Windows 10 バージョン 1903 以降、Win32 Desktop アプリは Mixed Reality ヘッドセットで実行できます。

ランタイムのサポート

アプリが実行時に Mixed Reality デバイスで実行されているかどうかを判断し、これをコントロールのサイズを変更したり、ヘッドセットで使用するようにアプリを最適化したりする機会として使用できます。

アプリが Mixed Reality デバイスで使用されている場合にのみ、XAML TextBlock コントロール内のテキストのサイズを変更する短いコードを次に示します。


bool isViewingInMR = Windows.ApplicationModel.Preview.Holographic.HolographicApplicationPreview.IsCurrentViewPresentedOnHolographicDisplay();

            if (isViewingInMR)
            {
                // Running on headset, resize the XAML text
                textBlock.Text = "I'm running in Mixed Reality!";
                textBlock.FontSize = 32;
            }
            else
            {
                // Running on desktop
                textBlock.Text = "I'm running on the desktop.";
                textBlock.FontSize = 14;
            }