演習 - 手による対話式操作スクリプトをオブジェクトに追加する

完了

ObjectManipulator スクリプトでは、"手とモーション コントローラー" 入力モデルの "直接操作" モダリティがサポートされています。 このスクリプトをオブジェクトにアタッチすると、ユーザーは手を使ってオブジェクトを移動、拡大縮小、回転させることができます。 この演習では、2 つの立方体を作成して、必要なスクリプトをアタッチし、立方体を動かします。

1 つ目の立方体を追加して調整する

  1. メニュー バーで、GameObject>[3D オブジェクト]>[立方体] を選択します。

    キューブを追加するためのメニュー コマンドのスクリーンショット。

    この立方体の既定のサイズは 1 平方メートルであり、今回の目的には大きすぎます。 ここでは、サイズを 20x20x20 センチメートルに縮小します。

  2. 立方体を選択し、[インスペクター] で、立方体の [変換] および [スケール] 値を次のように変更します。

    X = 0.2、Y = 0.2、Z = 0.2

    立方体は、シーンの既定の位置 (0,0,0) に配置されました。 これは、立方体がユーザーのヘッドセットと同じ位置にあることを意味します。ユーザーは後方に移動するまで立方体を見ることができません。 見やすい位置になるように、立方体の位置の値を変更します。

  3. [インスペクター] で、立方体の [変換] および [位置] 値を次のように変更します。

    X = -0.2、Y = 1.6、Z = 0.5

    更新後のキューブの変換コンポーネントのスクリーンショット。

    立方体の 3 つの側面が見えるようにしたいので、立方体の回転も変更します。

    Note

    キューブの高さは、MRTK XR Rigカメラ オフセットの高さに合わせて 1.6 に設定され、ほぼ目の高さに配置されます。

  4. [インスペクター] で、立方体の [変換] および [回転] 値を次のように変更します。

    X = 9、Y = 14、Z = 0 f

    ヒント

    立方体を拡大するには、立方体を選択し、[シーン] ウィンドウの上にカーソルがあることを確認してから、F キーを押します。 この方法で、任意のオブジェクトを拡大できます。

スクリプトを立方体に追加する

トラッキングされた手でオブジェクトを "つかめる" ようにするには、オブジェクトに以下の 2 つのコンポーネントをアタッチする必要があります。

  • Collider コンポーネント (ここでは何もする必要はなく、Unity の立方体には既定で [ボックス コライダー] が既にあります)
  • Object Manipulator (Script) コンポーネント
  1. 立方体を選択したまま、[インスペクター] ウィンドウで、[コンポーネントの追加] ボタンを選択し、オブジェクト マニピュレーター スクリプトを検索して選択します。

    オブジェクト マニピュレーター スクリプトの追加のスクリーンショット。

    ObjectManipulator スクリプトを使用すると、片手または両手を使用してオブジェクトを移動、拡大縮小、回転できるようになる。 オブジェクト マニピュレーター スクリプトを追加すると、制約マネージャー スクリプトも自動的に追加されます。これは、オブジェクト マニピュレーター スクリプトがそれに依存しているからです。

    キューブに追加された Constraint Manager スクリプトのスクリーンショット。

キューブの素材を更新する

パフォーマンス上の理由から、既定の Unity 素材ではなく MRTK 素材を使用することをお勧めします。

  1. 立方体がまだ選択されている状態で、[メッシュ レンダラー] コンポーネントの [マテリアル] セクションを見つけます。
  2. 既定の素材を、[MRTK 標準アセット]>[素材] の下にある [MRTK_Standard_White] 素材に置き換えます。 [プロジェクト] ペインから [マテリアル] セクションにマテリアルをドラッグ アンド ドロップすることができます。

2 つ目の立方体を追加する

  1. [階層] で、立方体を右クリックし、[複製] を選択します。 複製した立方体が Cube (1) という名前で表示されます。

  2. 元の立方体を右クリックし、[名前の変更] を選択して、この立方体に ''近くの立方体'' という名前を付けます。

  3. 複製した立方体を右クリックし、[名前の変更] を選択して、この立方体に Far Cube という名前をつけます。

    現時点では、[シーン] ビューにある立方体は 1 つだけのように見えます。 これは、近くの立方体と遠くの立方体がまったく同じ場所にあるからです。 遠くの立方体の位置と回転を変更しましょう。

  4. Far Cube を選択したままの状態で、[トランスフォーム] コンポーネントで値を以下へと変更します。

    [Position]\(位置\): X = 0.6、Y = 1.6、Z = 1.1

    回転: X = 27、Y = 0、Z = 0

    これで、カメラの左側に Near Cube が、右側の少し奥側に Far Cube が表示されるはずです。 これを確認するには、[階層][メイン カメラ] ([MRTK XR Rig]>[カメラ オフセット] の下) を選択し、[シーン] ウィンドウの [メイン カメラ] ウィンドウを調べます。

    [シーン] ウィンドウのメイン カメラ ビューのスクリーンショット。

    ヒント

    [シーン] ウィンドウの表示をカメラの見え方に近づけたい場合は、[シーン] ウィンドウ内をスクロールします。 カメラの [クリア フラグ][Skybox] に設定する必要があります (これが既定値になっていない場合)。

再生モードで立方体をつかんで動かす

  1. [プレイ] を選択します。 プロジェクトの再生が開始されると、ビューが [ゲーム] ウィンドウに切り替わります。

    プレイ モードに入った後の [ゲーム] ウィンドウのスクリーンショット。

    Note

    再生の前に、[プロジェクト設定]>[MRTK3] の下で有効なプロファイルが設定されていることを確認します。

  2. [ゲーム] ウィンドウの右上隅にある [...] ボタンを選択し、[最大化] を選択します。

    [ゲーム] ウィンドウの Maximize コマンドのスクリーンショット。

  3. スペース バーを押して、シミュレートされた右手をビューに表示させます。

  4. 立方体の側面または底面に触れるまで、シミュレートされた手を近くの立方体に近づけていきます。

    Near キューブに触れているシミュレートされた右手のスクリーンショット。

  5. マウスの左ボタンを押して (これによって、手で立方体を "つかむ" ことができます)、シーン内で立方体をドラッグします。

    [キューブの移動] のスクリーンショット。

    遠くの立方体をつかんで動かすには、シミュレートされた手にアタッチされている far ポインターを使用します。

  6. 必要に応じて、スペース バーをもう一度押して、シミュレートされた右手を表示させます。 手の人さし指の先から伸びる far ポインターに注目します。

    シミュレートされた手の遠くを指すポインターのスクリーンショット。

  7. 立方体にポインターの先端が触れるまで、手を遠くの立方体に近づけていきます。 ポインターの先端を立方体に触れさせるには、何度か円を描くように手を動かす必要がある場合があります。

    キューブに触れる遠くを指すポインターのスクリーンショット。

  8. マウスの左ボタンを押し (これによって、指先が閉じ、"ピンチ ジェスチャ" と呼ばれる形になります)、シーン内で立方体をドラッグします。

Unity エディター内入力シミュレーション

Unity のエディター内入力のシミュレーション機能を使用して、ホログラフィック オブジェクトの動作をテストできます。

シーンのビューを変更する

  • カメラを前/左/後/右に動かすには、W/A/S/D キーを押します。
  • カメラを垂直に動かすには、QE キーを押します。
  • カメラを回転させるには、マウスの右ボタンを押してからドラッグします。

手入力をシミュレートする

  • シミュレートされた右手を有効にするには、スペース バーを長押しします。 手を消すには、スペース バーを離します。
  • シミュレートされた左手を有効にするには、左 Shift キーを長押しします。 手を消すには、キーを離します。
  • シーン内でどちらかの手を動かすには、マウスを動かします。
  • 手を前後に動かすには、マウスのスクロール ホイールを回転させます。
  • ピンチ ジェスチャをシミュレートするには、マウスの左ボタンを押します。
  • 手を回転させるには、スペース バー + Ctrl キー (右手) または左 Shift キー + Ctrl キー (左手) を押したままマウスを動かします。

手を表示したままにする

キーを押し続けなくても手を有効にし、画面に表示したままにするには、[T] (左手) または [Y] (右手) を押します。 手を消すには、これらのキーをもう一度押します。

Unity でアプリケーションをビルドする

  1. [...] ボタンを選択した後、[最大化] のチェックを外すことで、[再生] ウィンドウを最小化します。

  2. メニュー バーで、[ファイル]>[ビルド設定] を選択します。

  3. [ビルド設定] ウィンドウで、[Add Open Scenes]\(開いているシーンを追加\) ボタンを選択して、[ビルド内のシーン] リストに現在のシーンを追加します。

  4. [ビルド] ボタンを選択します。

  5. [ユニバーサル Windows プラットフォームのビルド] ウィンドウで、ビルドを格納するフォルダーに移動するか、新しいフォルダーを作成してそのフォルダーに移動し、[フォルダーの選択] ボタンを選択してビルド プロセスを開始します。

    ビルドを保存する場所のスクリーンショット。

    進行状況バーが表示され、ビルドの進行状況を確認できます。

(オプション) アプリケーションをビルドおよび展開

Note

HoloLens 2 のビルドとテストは必須ではありません。 あるいは、デバイスがない場合、HoloLens 2 Emulator でテストすることもできます。 デバイスは HoloLens.com で購入できます。

  1. ビルド プロセスが完了すると、Windows エクスプローラーが開き、ビルド フォルダーが表示されます。 フォルダー内を移動し、ソリューション ファイルをダブルクリックして Visual Studio で開きます。

    ビルドのフォルダーが表示されているエクスプローラーのスクリーンショット。

  2. マスターまたはリリース構成と ARM64 アーキテクチャを選択して、HoloLens 用に Visual Studio を構成します。

    プロジェクトのビルド オプションがある Visual Studio ウィンドウのスクリーンショット。

    ヒント

    HoloLens (第 1 世代) に配置する場合は、x86 アーキテクチャを選択します。

    Note

    Visual Studio でターゲット オプションとして [デバイス] が表示されない場合は、ソリューションのスタートアップ プロジェクトを IL2CPP プロジェクトから UWP プロジェクトに変更する必要があるかもしれません。 ソリューション エクスプローラーで、[自分のプロジェクト名](ユニバーサル Windows) を右クリックし、[スタートアップ プロジェクトとして設定] を選択します。

    重要

    デバイスへのビルドの前に、デバイスを開発者モードにして、開発用コンピューターとペアリングする必要があります。「開発者モードの有効化」を参照してください。

  3. デプロイ先のドロップダウンを選択し、次のいずれかの操作を行います。

    • Wi-Fi 経由でビルドおよび配置する場合は、[リモート コンピューター] を選択します。

    リモート マシンがターゲットとなっている Visual Studio ウィンドウのスクリーンショット。

    • USB 経由でビルドおよび配置する場合は、[デバイス] を選択します。

    デバイスがターゲットとなっている Visual Studio ウィンドウのスクリーンショット。

  4. リモート接続を設定します。メニュー バーで、[プロジェクト] > [プロパティ] を選択します。

  5. プロジェクトの [プロパティ ページ] ウィンドウで、[構成プロパティ] > [デバッグ] を選択します。

  6. [起動するデバッガー] ドロップダウンを選択した後、[リモート マシン] を選択します (まだ選択されていない場合)。

    重要

    IP アドレスは、"自動検出" 機能に頼るのではなく、手動で入力することをお勧めします。 IP アドレスを見つけるには、HoloLens で [設定] > [更新とセキュリティ] > [開発者向け] に移動します。 IP アドレスは、ウィンドウの下部にある [イーサネット] の下に表示されています。

  7. [マシン名] フィールドに、デバイスの IP アドレスを入力します。

    Visual Studio の [リモート接続] ダイアログのスクリーンショット。

  8. 認証モード[ユニバーサル (暗号化されていないプロトコル)] に設定します。

  9. HoloLens をコンピューターに接続し、Visual Studio で以下のいずれかの操作を行います。

    • アプリを HoloLens に展開し、Visual Studio デバッガーをアタッチせずに自動起動させるには、[デバッグ]>[デバッグなしで開始] を選択します。
    • アプリを HoloLens に展開し、自動起動させないようにするには、[ビルド]>[ソリューションの展開] を選択します。

    [デバッグなしで開始] メニュー項目が表示されている Visual Studio のスクリーンショット。

デバイスのペアリング

PC から HoloLens にアプリを初めて配置するときは、PIN の入力を求められます。 PIN を作成するには、次のようにします。

  1. HoloLens で、[設定] > [更新とセキュリティ] > [開発者向け] に移動します。
  2. [ペア] を選択します。HoloLens に PIN が表示されます。
  3. Visual Studio のダイアログに PIN を入力します。
  4. ペアリングが完了したら、HoloLens で [完了] を選択します。

これで PC が HoloLens とペアリングされ、アプリを自動的にデプロイできるようになりました。 HoloLens にアプリを配置するために使うすべての PC に対して、これらの手順を繰り返します。

HoloLens でアプリを実行する

  1. アプリのビルドが完了したら、HoloLens の [スタート] メニューで、自分のアプリのアプリ タイルを見つけて、それを選択します。

  2. アプリが起動したら、Near Cube に手を伸ばして、それをつかみ、ドラッグで動かします。

  3. far ポインターを使用して Far Cube をつかみ、それをドラッグで動かします。

    ヒント

    HoloLens を使うと、Unity でアプリをテストしていたときよりも自由度が増します。 身体的に動き回り、far ポインターを使用して近くの立方体に触れたり、手を伸ばして遠くの立方体をつかんだりすることができます。

ヒント

  • また、HoloLens Emulator に配置することも、サイドローディング用のアプリ パッケージを作成することもできます。

  • アプリの内の [診断] プロファイラーにお気づきでしょうか。 音声コマンドの診断の切り替えを使用することで、これのオン/オフを切り替えることができます。 アプリの変更がパフォーマンスにどのような影響を与えるかを理解できるように、開発中はできるだけプロファイラーを表示したままにしておくことをお勧めします。 たとえば、アプリを監視して、フレーム レートが少なくとも 60 FPS であるように確保できます。