演習 - 手による対話式操作スクリプトをオブジェクトに追加する
ObjectManipulator スクリプトでは、"手とモーション コントローラー" 入力モデルの "直接操作" モダリティがサポートされています。 このスクリプトをオブジェクトにアタッチすると、ユーザーは手を使ってオブジェクトを移動、拡大縮小、回転させることができます。 この演習では、2 つの立方体を作成して、必要なスクリプトをアタッチし、立方体を動かします。
1 つ目の立方体を追加して調整する
メニュー バーで、GameObject>[3D オブジェクト]>[立方体] を選択します。
この立方体の既定のサイズは 1 平方メートルであり、今回の目的には大きすぎます。 ここでは、サイズを 20x20x20 センチメートルに縮小します。
立方体を選択し、[インスペクター] で、立方体の [変換] および [スケール] 値を次のように変更します。
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
ヒント
立方体を拡大するには、立方体を選択し、[シーン] ウィンドウの上にカーソルがあることを確認してから、F キーを押します。 この方法で、任意のオブジェクトを拡大できます。
スクリプトを立方体に追加する
トラッキングされた手でオブジェクトを "つかめる" ようにするには、オブジェクトに以下の 2 つのコンポーネントをアタッチする必要があります。
- Collider コンポーネント (ここでは何もする必要はなく、Unity の立方体には既定で [ボックス コライダー] が既にあります)
- Object Manipulator (Script) コンポーネント
立方体を選択したまま、[インスペクター] ウィンドウで、[コンポーネントの追加] ボタンを選択し、オブジェクト マニピュレーター スクリプトを検索して選択します。
ObjectManipulator スクリプトを使用すると、片手または両手を使用してオブジェクトを移動、拡大縮小、回転できるようになる。 オブジェクト マニピュレーター スクリプトを追加すると、制約マネージャー スクリプトも自動的に追加されます。これは、オブジェクト マニピュレーター スクリプトがそれに依存しているからです。
キューブの素材を更新する
パフォーマンス上の理由から、既定の Unity 素材ではなく MRTK 素材を使用することをお勧めします。
- 立方体がまだ選択されている状態で、[メッシュ レンダラー] コンポーネントの [マテリアル] セクションを見つけます。
- 既定の素材を、[MRTK 標準アセット]>[素材] の下にある [MRTK_Standard_White] 素材に置き換えます。 [プロジェクト] ペインから [マテリアル] セクションにマテリアルをドラッグ アンド ドロップすることができます。
2 つ目の立方体を追加する
[階層] で、立方体を右クリックし、[複製] を選択します。 複製した立方体が Cube (1) という名前で表示されます。
元の立方体を右クリックし、[名前の変更] を選択して、この立方体に ''近くの立方体'' という名前を付けます。
複製した立方体を右クリックし、[名前の変更] を選択して、この立方体に Far Cube という名前をつけます。
現時点では、[シーン] ビューにある立方体は 1 つだけのように見えます。 これは、近くの立方体と遠くの立方体がまったく同じ場所にあるからです。 遠くの立方体の位置と回転を変更しましょう。
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] に設定する必要があります (これが既定値になっていない場合)。
再生モードで立方体をつかんで動かす
[プレイ] を選択します。 プロジェクトの再生が開始されると、ビューが [ゲーム] ウィンドウに切り替わります。
Note
再生の前に、[プロジェクト設定]>[MRTK3] の下で有効なプロファイルが設定されていることを確認します。
[ゲーム] ウィンドウの右上隅にある [...] ボタンを選択し、[最大化] を選択します。
スペース バーを押して、シミュレートされた右手をビューに表示させます。
立方体の側面または底面に触れるまで、シミュレートされた手を近くの立方体に近づけていきます。
マウスの左ボタンを押して (これによって、手で立方体を "つかむ" ことができます)、シーン内で立方体をドラッグします。
遠くの立方体をつかんで動かすには、シミュレートされた手にアタッチされている 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 の [スタート] メニューで、自分のアプリのアプリ タイルを見つけて、それを選択します。
アプリが起動したら、Near Cube に手を伸ばして、それをつかみ、ドラッグで動かします。
far ポインターを使用して Far Cube をつかみ、それをドラッグで動かします。
ヒント
HoloLens を使うと、Unity でアプリをテストしていたときよりも自由度が増します。 身体的に動き回り、far ポインターを使用して近くの立方体に触れたり、手を伸ばして遠くの立方体をつかんだりすることができます。
ヒント
また、HoloLens Emulator に配置することも、サイドローディング用のアプリ パッケージを作成することもできます。
アプリの内の [診断] プロファイラーにお気づきでしょうか。 音声コマンドの診断の切り替えを使用することで、これのオン/オフを切り替えることができます。 アプリの変更がパフォーマンスにどのような影響を与えるかを理解できるように、開発中はできるだけプロファイラーを表示したままにしておくことをお勧めします。 たとえば、アプリを監視して、フレーム レートが少なくとも 60 FPS であるように確保できます。