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

完了

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

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

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

    Screenshot of menu commands for adding the cube.

    キューブの既定のサイズは 1 平方メートルです。これは、今回の目的には大きすぎます。 サイズを 20x20x20 cm に縮小します。

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

    X = 0.2、Y = 0.2、Z = 0.2

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

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

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

    Screenshot of the cube's transform component after updates.

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

    Note

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

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

    X = 9、Y = 14、Z = 0

    ヒント

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

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

追跡対象の手でオブジェクトを "つかめる" ようにするには、3 つのコンポーネントをアタッチする必要があります。

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

    Screenshot of adding the Object Manipulator script.

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

    Screenshot of the Constraint Manager script added to the cube.

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

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

  1. キューブがまだ選択されている状態で、メッシュ レンダラー コンポーネントの [素材] セクションを見つけます。
  2. 既定の素材を、[MRTK 標準アセット]>[素材] の下にある [MRTK_Standard_White] 素材に置き換えます。

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

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

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

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

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

  4. 遠くの立方体を選択したまま、[変換] コンポーネントの値を次のように変更します。

    位置: X = 0.6、Y = 1.6、Z = 1.1

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

    これで、カメラには左側に近くの立方体、少し離れた右側に遠くの立方体が見えるはずです。 これを確認するには、[階層][メイン カメラ] ([MRTK XR Rig]>[カメラ オフセット] の下) を選択し、[シーン] ウィンドウの [メイン カメラ] ウィンドウを調べます。

    Screenshot of the Main Camera view in the Scene window.

    ヒント

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

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

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

    Screenshot of the Game window after entering Play mode.

    Note

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

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

    Screenshot of Maximize command for the Game window.

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

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

    Screenshot of the simulated right hand touching the Near Cube.

  5. マウスの左ボタンを選択して (こうすると、手が立方体を "つかむ" ようになります)、シーンの立方体をぐるぐる回します。

    Screenshot of Move the cube.

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

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

    Screenshot of simulated hand's far pointer.

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

    Screenshot of the far pointer touching the cube.

  8. マウスの左ボタンを選択し (こうすると、指先でつまむ形の "ピンチ ジェスチャ" になります)、シーンの立方体をぐるぐる回します。

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

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

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

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

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

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

手を表示したままにする

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

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

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

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

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

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

    Screenshot of the location to save your build.

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

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

Note

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

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

    Screenshot of File Explorer with the builds folder displayed.

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

    Screenshot of Visual Studio window with the build options for the project.

    ヒント

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

    Note

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

    重要

    デバイスに対してビルドする前に、デバイスが開発者モードになっており、かつ、開発コンピューターとペアリングされている必要があります。 こちらのページの「開発者モードを有効にする」というセクションを参照してください。

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

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

    Screenshot of Visual Studio window with Remote Machine as the target.

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

    Screenshot of Visual Studio window with Device as the target.

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

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

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

    重要

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

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

    Remote connection dialog in Visual Studio

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

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

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

    Screenshot of Visual Studio with the Start Without Debugging menu item displayed.

デバイスのペアリング

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

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

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

HoloLens でアプリを実行する

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

  2. アプリが起動したら、近くの立方体に手を伸ばしてつかみ、ぐるぐる回します。

  3. far ポインターを使用して遠くの立方体をつかみ、ぐるぐる回します。

    ヒント

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

ヒント

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

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