こんにちは、 @dz_ こと大平かづみです。
Prologue - はじめに
Microsoft は、Mixed Reality を学習するコンテンツとして、 Mixed Reality Academy と銘打って多数のチュートリアルとサンプルコードを提供してくれています。
このうち、301 ~ 313 の項目は MR and Azure としてカテゴライズされており、HoloLens をはじめとした MR とクラウドの連携が今後視野に入ってくると予想されます。
これは、やってみるっきゃない!ということで、 HoloLens も C# も Visual Studio も初心者な私ですが、Azure とつなげてみたいのでこのチュートリアルと試してみることにしました!
結果としては、無事動きました!(ヾ(。・ω・)ノ
一通りのことに触れられたので、ボリュームは多いですがやってみる価値ありです。
そこで、まだ英語のコンテンツしかないので、簡単な和訳もかねて作業時のメモを掲載します。元のドキュメントと照らし合わせて進めば、最後までできると思います。
ご興味ある方はぜひチャレンジしてみてくださいね!('ω')
References
- Install the tools - Mixed Reality | Microsoft Docs
- Unity development overview - Mixed Reality | Microsoft Docs
How it works
アプリを起動後、青いオブジェクトをタップすると、ボットが起動しユーザーからの音声入力を待機します。
ユーザーの発言を Bot Service に連携させ、その返信をテキストで表示します。
Preparation
開発PC
Unity 2017.4 のインストール
- LTS で推奨されている
- インストールするときは、デフォルトに加え、
Windows Store .NET Scripting Backend
にチェックを入れる
Visual Studio 2017 のインストール
-
Universal Windows Platform development
を選択し、カスタマイズを開く -
Workloads タブで
Game Development with Unity
にチェックを入れる- Unity が既にインストールされている場合は、
Unity 2018.1 64-bit Editor
のチェックを外す
- Unity が既にインストールされている場合は、
-
Workloads タブで
ASP.NET and web development
とAzure development
にチェックを入れる
Developer mode
の有効化
- 開発PCの Settings > Update & Security > For developers で Developer mode にチェックする
Hololens
Microsoft Azure
- 有効なAzureアカウント
- お持ちでない場合は、 こちらから 22,500円のクレジットを含む12か月無料アカウントをご利用ください。
作業メモ(簡単な和訳)
以下、作業メモ、兼簡単な和訳です。チャプター番号はあっていますが、細かい連番は一部省略したりしていてあっていません。元のドキュメント対比しながら進めば問題ないかと思います。
- Visual Studio で Bot Application (C#) を作成する
- Chapter 1 – Create the Bot application
- 新規プロジェクトで、 .NET Core か cloud から、
ASP.NET Core Web Applicaton
を選択して次へ進む。 -
ASP.NET Core 2.1
(ドキュメントでは 2.0 だが、 2.1 しかなかった)でEmpty
を選択し、 Authentication は、No Authentication
を指定して、プロジェクトを作成する。 - Nuget パッケージの管理画面から、Browse タブで、
Include prerelease
にチェックをつけ、Microsoft.Bot.Builder.Integration.AspNet.Core
をインストールする。 -
Solution Exproler のプロジェクトを右クリックし、メニューから Add | Class を実行し、
MyBot
クラスを作成する。 - 同様に、
ConversationContext
クラスを作成する。 -
Sokution Explorer の wwwroot を右クリックして、Add | New Item をクリックする。ASP.NET Core > Web > Content から HTML Page を選択し、
default.html
と名前を付け、 Add をクリックする。 -
ConversationContext
クラスをダブルクリックして開き、ドキュメント 1-10 のように記述する。このクラスには、このボットが会話のコンテキストを管理するために使う変数を持たせる。 -
MyBot
クラスを開き、ドキュメント 1-11 のように記述する。このクラスは、ユーザーのアクティビティを受信して呼ばれるハンドラをホストする。 -
Startup
クラスを開き、ドキュメント 1-12 のように記述する。このクラスは、ボットの初期化を行う。 -
Program
クラスを開き、ドキュメント 1-13 のようになっているか確認する。ただし、 ASP.NET Core 2.1 の場合は、BuildWebHost
からCreateWebHostBuilder
に代わっているので、下記を参考に確認する。
-
すべてのファイルの変更が保存されているか確認する。
-
Azureポータルで Azure Bot Service を準備する
- Chapter 2 - Create the Azure Bot Service
-
Azureポータルで、
Web App Bot
を新規作成する。 -
さくせいできたら、 Channels の Add a featured channel で configure Direct Line channel をクリックする。
-
Secret keys が表示されるので、 Show をクリックして文字列を表示し、コピーしておく。
-
ボットを Azure Bot Service にデプロイする
- Chapter 3 – Publish the Bot to the Azure Web App Bot Service
-
Visual Studio に戻って、作成中のプロジェクトを開く。
-
Solution Explorer の MyBot プロジェクトを右クリックし、 Publish... をクリックする。
-
Pick a public target 画面で、 App Service をクリックし、 Select Existing を選択する。右下の Create の下向き矢印から Create Profile を選択する。
-
Add an account... から Azureアカウントでログインする。
-
App Service 画面で、 Subscription を指定し、 下段のリソース一覧から作成した Bot Service を選択し、 OK をクリックする。
-
Publish ボタンをクリックし、デプロイする。(数分かかる)
-
Unity プロジェクトを準備する
- Chapter 4 – Set up the Unity project
-
Unity を開く。
-
Project name に任意のプロジェクト名を指定する。テンプレートは 3D のままで、必要に応じて Location や Enable Unity nalytics を指定し、 _Create project_ボタン をクリックする。
-
Unity が開いたら、 Edit > Preferences... から Unity Preferences を開き、 External Tools タブの External Script Editor が Visual Studio 2017 (Community) (またはお使いのエディション)に設定されていることを確認する。
-
File > Buid Settings... を開く。
- Universal Windows Platform を選択する。 Switch Platform ボタンをクリックして、反映する。
-
Target Device に
HoloLens
を指定する。 -
Build Type に
D3D
を指定する。 -
SDK に
Latest installed
を指定する。 -
Visual Studio Version に
Latest installed
を指定する。 -
Build and Run に
Local Machine
を指定する。 - この scene を保存してビルドするために、 Add Open Scenes ボタンをクリックすると、Explorer が立ち上がるので、
Scenes
という名前の新しいフォルダを作成する。Scenes
フォルダに移動し、 File name にBotScene
を入力して保存する。
-
ひきつづき Build Settings 画面で、Player Settings ボタンをクリックすると、 Inspector にパネルが表示される。そこで、ドキュメント 4-7 を参考に設定する。
-
Build Settings 画面に戻ると、 Unity C# Prjects という項目が利用可能になっているので、チェックぼっくにチェックする。
-
Build Settings 画面を閉じる。
-
scene とプロジェクトを保存する。
-
Unity プロジェクトでカメラを準備する
- Chapter 5 – Camera setup
-
Hierarchy panel パネルで、 Main Camera を選択する。
-
Inspector パネルに Main Camera のコンポーネント群が表示される。下記を確認、指定する。
-
Camera object (名前?)が
Main Camera
であることを確認する。(空白や大文字などのスペルに注意) -
Tag が
MainCamera
であることを確認する。(空白なしなどスペルに注意) -
Transform Position を
0, 0, 0
に指定する。 -
Clear Flags に
Solid Color
を指定する。 -
Background の色を
Black(Hex Code: #000000), Alpha 0
に指定する。
-
Camera object (名前?)が
-
Unity プロジェクトで、
Newtonsoft
ライブラリをインポートする
- Chapter 6 – Import the Newtonsoft library
-
ドキュメント_Chapter 6_ の compatible version already organized with the correct Unity folder structure here から最適化された Newtonesoft ライブラリをダウンロードする。
-
Unity の Assets > Import Package > Custom Package... をクリックし、上記ライブラリパッケージを読み込む。
-
Import Unity Package 画面で、Plugins 配下の項目にすべ手チェックをつけ、 Import ボタンをクリックする。
-
Project パネルの Plugins > Newtonsot から
Newtonsoft.Json.dll
を選択する。Inspector パネルで、 Any Platform と WSAPlayer のチェックボックスにチェックがついていないことを確認する。 -
Project パネルの WSA フォルダを開き、以下を確認する。
6. Any Platform のチェックボックスにチェックがついていないこと
7. WSAPlayer にのみチェックがついていること
8. Dont process にチェックがついていること -
Unity プロジェクトで
BotTag
を作成する
- Chapter 7 – Create the BotTag
-
Hierarchy パネルの BotScene > Main Camera を選択し、 Inspector の Tag プルダウンから Add Tag... をクリックする。
-
+ 記号をクリックし、 New Tag Name に
BotTag
と入力して Save ボタンをクリックする。( Main Camera には適用しないこと。) -
Unity プロジェクトで、
BotObjects
クラスを作成する
- Chapter 8 – Create the BotObjects class
-
Project パネルで、
Assets
フォルダを選択した後、 Create > Folder をクリックし、Scripts
フォルダを作成する。 -
Scripts フォルダをダブルクリックして開き、右クリックして Create > C# Script をクリックし、
BotObjects
というスクリプトを作成する。 -
BotObjects
スクリプトをダブルクリックがすると、 Visual Studio が開く。Windows Security Alert が表示された場合は、よく確認し Allow access をクリックする。 -
ドキュメント 8-4 に従いスクリプトを記述し、保存する。
-
Unity プロジェクトで、
GazeInput
クラスを作成する
- Chapter 9 – Create the GazeInput class
ゲイズ(HoloLens 内で視線により動くカーソルを一点に固定し注目する動作)をコントロールするクラスを作成する。
-
さきほど作成した
Scripts
フォルダの配下で右クリックし、 Create > C# Script でGazeInput
スクリプトを作成する。 -
GazeInput
スクリプトをダブルクリックし手開き、ドキュメント 9-4 ~ 8 に従い記述し保存する。 -
Unity プロジェクトで
Bot
クラスを作成する
- Chapter 10 – Create the Bot class
Bot Service と連携するコアとなるクラス。
-
Scripts
フォルダにBot
スクリプト(C# Script)を作成する。
1.Bot
スクリプトを ダブルクリックして開き、ドキュメント 10-4 ~ 12 に従い記述し、保存する。
-
botSecret
には、前述でコピーしておいた Secret key の文字列を指定する。
- Unity プロジェクトで
Interactions
クラスを作成する
- Chapter 11 – Create the Interactions class
HoloLens 内でのタップを検出するクラス。
-
Scripts
フォルダ内にInteractions
スクリプトを作成する。(C# Script) -
Interactions
を開き、ドキュメント 11-4 ~ 7 に従って記述し、保存する。 -
Unityプロジェクトで
SceneOrganiser
クラスを作成する
- Chapter 12 – Create the SceneOrganiser class
-
Scripts
フォルダはいかにSceneOrganiser
スクリプトを作成し、開く。 -
ドキュメント 12-4 ~ 7 に従い記述し、保存する。
-
SceneOrganiser` を Hierarchy の Main Camera にドラッグ&ドロップする。 Inspetor パネルの Main Camera のコンポーネントとして、 _Scene organiser (Script) _ が表示されていることを確認する。
-
Unity プロジェクトを確認する
- Chapter 13 – Before building
- ビルドする
- Chapter 14 – Build and Sideload to the HoloLens
-
File から _Build Settings_を開く。
-
Build ボタンをクリックする。
-
保存先を指定するため、 Explorer が開き、プロジェクトフォルダが表示される。
App
フォルダを作成し、選択した状態で Select folder ボタンをクリックする。 -
HoloLens にデプロイする
- Chapter 15 – Deploy to HoloLens
-
HoloLens とリモートデプロイをするため、以下を行う。なお、開発PCと同じ WiFi に接続されているものとする。
- HoloLens で、 Settings を開く。
- Network & Internelt > Wi-Fi > Hardware roperties を開く。
- IPv4 address を確認する。
- つぎに、 Settings > Update & Security_ > For Developers を開き、
On
に設定する。
-
Visual Studio で、先ほどビルドした Unity プロジェクトのソリューションファイルを開く。(
App
フォルダ配下の.sln
ファイル) -
Solution Configuration は、
Debug
を指定する。 -
Solution Platform は、
x86, Remote Machine
を指定する。すると、 Remote Connections ウィンドウが開き、自動検出が開始される。 Auto Detected に該当する HoloLens が表示された場合はそれを選択する。検出されない場合は、先ほど確認したIPアドレスを指定する。 -
Build メニューから、 Deploy Solution をクリックする。
-
PIN の入力を要求された場合は、 HoloLens の_Settings_ > For developers > Pair ボタンをクリックすると、PIN番号が表示されるので、それを入力する。
-
HoloLens Bot アプリを触ってみる
- Chapter 16 – Using the application on the HoloLens
- デプロイが完了したら、HoloLenのメニューからアプリを開く。
- 開いたウィンドウをタップすると起動する。
- Listening... になる際に、マイクの利用可否の確認ウィンドウが出るので、許可する。
動いたー!!!(ヾ(。・ω・)ノ
Epilogue - おわりに
途中でアプリの調子が悪くなった場合は、ブルームすると空のウィンドウが表示されるので閉じることができます。
また、 Deploy Solution ではなく、デバッグを開始するとそのままデバッグできるので何か不備がある場合はお試しください。
Tips
- Visual Studio でコメントアウトするショートカットは、 Ctrl + K, Ctrl + C 。コメント解除は Ctrl + K, Ctrl + U 。
- Visual Studio のインテリジェンスは優秀!
以上です!楽しかった!いろいろカスタマイズしたりして、覚えていきたいです。