演習 - 手による対話式操作スクリプトをオブジェクトに追加する
ObjectManipulator スクリプトでは、"手とモーション コントローラー" 入力モデルの "直接操作" モダリティがサポートされています。 このスクリプトをオブジェクトにアタッチすると、ユーザーは手を使ってオブジェクトを移動、拡大縮小、回転させることができます。 この演習では、2 つの立方体を作成して、必要なスクリプトをアタッチし、立方体を動かします。
1 つ目の立方体を追加して調整する
メニュー バーで、GameObject>[3D オブジェクト]>[立方体] を選択します。
キューブの既定のサイズは 1 平方メートルです。これは、今回の目的には大きすぎます。 サイズを 20x20x20 cm に縮小します。
立方体を選択し、[インスペクター] で、立方体の [変換] および [スケール] 値を次のように変更します。
X = 0.2、Y = 0.2、Z = 0.2
立方体は、シーンの既定の位置 (0,0,0) に配置されました。 これは、立方体がユーザーのヘッドセットと同じ位置にあることを意味します。ユーザーは後方に移動するまで立方体を見ることができません。 見やすい位置になるように、立方体の位置の値を変更します。
[インスペクター] で、立方体の [変換] および [位置] 値を次のように変更します。
X = -0.2、Y = 1.6、Z = 0.5
立方体の 3 つの側面が見えるようにしたいので、立方体の回転も変更します。
Note
キューブの高さは、MRTK XR Rig のカメラ オフセットの高さに合わせて 1.6 に設定され、ほぼ目の高さに配置されます。
[インスペクター] で、立方体の [変換] および [回転] 値を次のように変更します。
X = 9、Y = 14、Z = 0
ヒント
立方体を拡大するには、立方体を選択し、[シーン] ウィンドウの上にカーソルがあることを確認してから、F キーを押します。 この方法で、任意のオブジェクトを拡大できます。
スクリプトを立方体に追加する
追跡対象の手でオブジェクトを "つかめる" ようにするには、3 つのコンポーネントをアタッチする必要があります。
- Collider コンポーネント (ここでは何もする必要はなく、Unity の立方体には既定の [ボックス コライダー] が既にあります)
- Object Manipulator (Script) コンポーネント
立方体を選択したまま、[インスペクター] ウィンドウで、[コンポーネントの追加] ボタンを選択し、オブジェクト マニピュレーター スクリプトを検索して選択します。
ObjectManipulator スクリプトを使用すると、片手または両手を使用してオブジェクトを移動、拡大縮小、回転できるようになる。 オブジェクト マニピュレーター スクリプトを追加すると、制約マネージャー スクリプトも自動的に追加されます。これは、オブジェクト マニピュレーター スクリプトがそれに依存しているからです。
キューブの素材を更新する
パフォーマンス上の理由から、既定の Unity 素材ではなく MRTK 素材を使用することをお勧めします。
- キューブがまだ選択されている状態で、メッシュ レンダラー コンポーネントの [素材] セクションを見つけます。
- 既定の素材を、[MRTK 標準アセット]>[素材] の下にある [MRTK_Standard_White] 素材に置き換えます。
2 つ目の立方体を追加する
[階層] で、立方体を右クリックし、[複製] を選択します。 複製した立方体が "Cube (1)" という名前で表示されます。
元の立方体を右クリックし、[名前の変更] を選択して、この立方体に「近くの立方体」という名前を付けます。
複製した立方体を右クリックし、[名前の変更] を選択して、この立方体に「遠くの立方体」という名前を付けます。
現時点では、[シーン] ビューにある立方体は 1 つだけのように見えます。 これは、近くの立方体と遠くの立方体がまったく同じ場所にあるからです。 遠くの立方体の位置と回転を変更しましょう。
遠くの立方体を選択したまま、[変換] コンポーネントの値を次のように変更します。
位置: X = 0.6、Y = 1.6、Z = 1.1
回転: X = 27、Y = 0、Z = 0
これで、カメラには左側に近くの立方体、少し離れた右側に遠くの立方体が見えるはずです。 これを確認するには、[階層] で [メイン カメラ] ([MRTK XR Rig]>[カメラ オフセット] の下) を選択し、[シーン] ウィンドウの [メイン カメラ] ウィンドウを調べます。
ヒント
[シーン] ウィンドウの表示をカメラの見え方に近づけたい場合は、[シーン] ウィンドウ内をスクロールします。 カメラの [フラグをクリア] が既定で [Skybox] に設定されていない場合は、設定することが必要な場合があります。
再生モードで立方体をつかんで動かす
[プレイ] を選択します。 プロジェクトの再生が開始されると、ビューが [ゲーム] ウィンドウに切り替わります。
Note
再生する前に、[プロジェクト設定]>[MRTK3] の下に有効なプロファイル セットがあることを確認します。
[ゲーム] ウィンドウの右上隅にある 3 つのドットボタンを選択し、[最大化] を選択します。
スペース バーを押して、シミュレートされた右手をビューに表示させます。
立方体の側面または底面に触れるまで、シミュレートされた手を近くの立方体に近づけていきます。
マウスの左ボタンを選択して (こうすると、手が立方体を "つかむ" ようになります)、シーンの立方体をぐるぐる回します。
遠くの立方体をつかんで動かすには、シミュレートされた手にアタッチされている far ポインターを使用します。
必要に応じて、スペース バーをもう一度押して、シミュレートされた右手を表示させます。 手の人さし指の先から伸びる far ポインターに注目します。
立方体にポインターの先端が触れるまで、手を遠くの立方体に近づけていきます。 ポインターの先端を立方体に触れさせるには、何度か円を描くように手を動かす必要があるかもしれません。
マウスの左ボタンを選択し (こうすると、指先でつまむ形の "ピンチ ジェスチャ" になります)、シーンの立方体をぐるぐる回します。
Unity エディター内入力シミュレーション
Unity のエディター内入力のシミュレーション機能を使用して、ホログラフィック オブジェクトの動作をテストできます。
シーンのビューを変更する
- カメラを前/左/後/右に動かすには、W/A/S/D キーを使用します。
- カメラを垂直に動かすには、Q キーと E キーを押します。
- カメラを回転させるには、マウスの右ボタンを押してからドラッグします。
手入力をシミュレートする
- シミュレートされた右手を有効にするには、スペース バーを押したままにします。 手を消すには、スペース バーを離します。
- シミュレートされた左手を有効にするには、左 Shift キーを押したままにします。 手を消すには、キーを離します。
- シーン内でどちらかの手を動かすには、マウスを動かします。
- 手を前後に動かすには、マウスのスクロール ホイールを回転させます。
- ピンチ ジェスチャをシミュレートするには、マウスの左ボタンを選択します。
- 手を回転させるには、スペース バー + Ctrl キー (右手) または左 Shift キー + Ctrl キー (左手) を押したままマウスを動かします。
手を表示したままにする
- キーを押し続けなくても手を有効にし、画面に表示したままにするには、[T] (左手) または [Y] (右手) を押します。 手を消すには、これらのキーをもう一度押します。
Unity でアプリケーションをビルドする
メニュー バーで、[ファイル]>[ビルド設定] を選択します。
[ビルド設定] ウィンドウで、[Add Open Scenes]\(開いているシーンを追加\) ボタンを選択して、[ビルド内のシーン] リストに現在のシーンを追加します。
[ビルド] ボタンを選択します。
[ユニバーサル Windows プラットフォームのビルド] ウィンドウで、ビルドを格納するフォルダーに移動するか、新しいフォルダーを作成してそのフォルダーに移動し、[フォルダーの選択] ボタンを選択してビルド プロセスを開始します。
進行状況バーが表示され、ビルドの進行状況を確認できます。
(オプション) アプリケーションをビルドおよび展開
Note
HoloLens 2 のビルドとテストは必須ではありません。 あるいは、デバイスがない場合、HoloLens 2 Emulator でテストすることもできます。 デバイスは HoloLens.com で購入できます。
ビルド プロセスが完了すると、Windows エクスプローラーが開き、ビルド フォルダーが表示されます。 フォルダー内を移動し、ソリューション ファイルをダブルクリックして Visual Studio で開きます。
マスターまたはリリース構成と ARM64 アーキテクチャを選択して、HoloLens 用に Visual Studio を構成します。
ヒント
HoloLens (第 1 世代) に配置する場合は、x86 アーキテクチャを選択します。
Note
Visual Studio でターゲット オプションとして [デバイス] が表示されない場合は、ソリューションのスタートアップ プロジェクトを IL2CPP プロジェクトから UWP プロジェクトに変更する必要があるかもしれません。 これを行うには、ソリューション エクスプローラーで、ご自分のプロジェクト名(ユニバーサル Windows) を右クリックし、[スタートアップ プロジェクトに設定] を選択します。
重要
デバイスに対してビルドする前に、デバイスが開発者モードになっており、かつ、開発コンピューターとペアリングされている必要があります。 こちらのページの「開発者モードを有効にする」というセクションを参照してください。
デプロイ先のドロップダウンを選択し、次のいずれかの操作を行います。
- Wi-Fi 経由でビルドおよび配置する場合は、[リモート コンピューター] を選択します。
- USB 経由でビルドおよび配置する場合は、[デバイス] を選択します。
リモート接続を設定します。メニュー バーで、[プロジェクト] > [プロパティ] を選択します。
プロジェクトの [プロパティ ページ] ウィンドウで、[構成プロパティ] > [デバッグ] を選択します。
[起動するデバッガー] ドロップダウンを選択し、[リモート マシン] を選択します (まだ選択されていない場合)。
重要
IP アドレスは、"自動検出" 機能に頼るのではなく、手動で入力することをお勧めします。 IP アドレスを見つけるには、HoloLens で [設定] > [更新とセキュリティ] > [開発者向け] に移動します。 IP アドレスは、ウィンドウの下部にある [イーサネット] の下に表示されています。
[コンピューター名] フィールドに、デバイスの IP アドレスを入力します。
認証モードを [ユニバーサル (暗号化されていないプロトコル)] に設定します。
HoloLens をご自分のコンピューターに接続し、Visual Studio で次のいずれかの操作を行います。
- アプリを HoloLens に展開し、Visual Studio デバッガーをアタッチせずに自動起動させるには、[デバッグ]>[デバッグなしで開始] を選択します。
- アプリを HoloLens に展開し、自動起動させないようにするには、[ビルド]>[ソリューションの展開] を選択します。
デバイスのペアリング
PC から HoloLens にアプリを初めて配置するときは、PIN の入力を求められます。 PIN を作成するには、次のようにします。
- HoloLens で、[設定] > [更新とセキュリティ] > [開発者向け] に移動します。
- [ペア] を選択します。HoloLens に PIN が表示されます。
- Visual Studio のダイアログに PIN を入力します。
- ペアリングが完了したら HoloLens で[完了] を選択します。
ご自分の PC が HoloLens とペアリングされ、アプリを自動的に展開できます。 HoloLens にアプリを配置するために使うすべての PC に対して、これらの手順を繰り返します。
HoloLens でアプリを実行する
アプリのビルドが完了したら、HoloLens の [スタート] メニューで、ご自分のアプリのアプリ タイルを見つけて選択します。
アプリが起動したら、近くの立方体に手を伸ばしてつかみ、ぐるぐる回します。
far ポインターを使用して遠くの立方体をつかみ、ぐるぐる回します。
ヒント
HoloLens を使うと、Unity でアプリをテストしていたときよりも自由度が増します。 身体的に動き回り、far ポインターを使用して近くの立方体に触れたり、手を伸ばして遠くの立方体をつかんだりすることができます。
ヒント
また、HoloLens Emulator に配置することも、サイドローディング用のアプリ パッケージを作成することもできます。
アプリの中に診断プロファイラーがあることにお気付きかもしれません。 音声コマンド "診断を切り替え" を使用して、オン/オフを切り替えることができます。 アプリの変更がパフォーマンスにどのような影響を与えるかを理解できるように、開発中はできるだけプロファイラーを表示したままにしておくことをお勧めします。 たとえば、アプリを監視して、フレーム レートが少なくとも 60 FPS であるように確保できます。