Hiromuブログ

最近はこちら(https://zenn.dev/hiromu)が本体

Bolt で HoloLens アプリ開発

f:id:HiromuKato:20200724211547p:plain

先日、Unity のビジュアルスクリプティングアセットである Bolt の無料化の発表がありました。Bolt を触るのは初めてですが、HoloLens 開発において使えるかどうか試してみました。

まず先に結論としては、簡単な動作確認程度ではありますが問題なく使えることが分かりました。

開発環境

  • Unity 2019.4.5f1
  • MRTK 2.4.0
  • Bolt 1.4.12

プロジェクト準備

  • Unity のプロジェクトを新規作成します。
  • MRTK をインポートし、HoloLens 用のシーン設定を行います(詳細については省略)。
  • Bolt をインポートします。

  • Bolt をインポートすると、Unityのメニューに Tools -> Install Bolt という項目が追加されるので選択します。

    f:id:HiromuKato:20200724211552p:plain

  • 以下の画面が出たので Api Compatibility Level を .NET Standard 2.0 にしたら動かないかもしれません(未確認)。ここでは素直に .NET 4.x で進めることにします。

    f:id:HiromuKato:20200724211555p:plain

    f:id:HiromuKato:20200724211617p:plain

  • Setup Wizard が表示されますがすべてデフォルト(およびお好みの設定)で進めます。

  • Assembly Options の項目については、MRTK の機能を Bolt で使う場合には必要になるものだと思いますが、こちらも後から設定ができるので変更なしで進めます。

    f:id:HiromuKato:20200724211604p:plain

サンプルプロジェクトの作成

キューブを Bolt により回転させるサンプルを作ります。

  1. まずは Cube を配置します。

  2. Cube に Flow Machine コンポーネントを追加します。
    f:id:HiromuKato:20200724211621p:plain

  3. Flow Machine の New ボタンを押します。
    f:id:HiromuKato:20200724211623p:plain

  4. エラーが表示されますが無視して続けます。
    f:id:HiromuKato:20200724211626p:plain

  5. Flow Machine の Edit Graph ボタンを押します。
    f:id:HiromuKato:20200724211630p:plain

  6. 以下のような画面が表示されます。
    f:id:HiromuKato:20200724211633p:plain

  7. 右クリックをして Rotate で検索をして、Rotate(xAngle, yAngle, zAngle, relativeTo) を選択します。 f:id:HiromuKato:20200724211648p:plain

  8. Update と Rotate をマウスドラッグでつなぎます。また yAngle に 1 を設定します。
    f:id:HiromuKato:20200724211651p:plain

  9. 以上で Play ボタンを押すとキューブが回転していることが確認できます。 f:id:HiromuKato:20200724211655g:plain

  10. UnityEditor で動作することが確認できるので、実機にデプロイしてみます。
    動きません。。
    以下は、PC で実行したものですが以下のようなエラーが出ました。
    f:id:HiromuKato:20200724211640p:plain

  11. 調べたところ、AOT Pre-Build というものが必要なようです。メニューにあるので実行します。
    f:id:HiromuKato:20200724211645p:plain

  12. 再度ビルドしなおして、デプロイしてみます。
    動きました!

まとめ

Bolt を利用して HoloLens アプリを開発できることがわかりました。

まだあまり詳しく触ってはいませんが、MRTK の機能を Bolt から使うには Setup Wizard で表示された Assembly Options での設定が必要になると思います。MRTK は dll が機能ごとに分割されているのですべて登録するのは大変かもしれませんが、今後そのあたりも見てみたいと思います。

参考サイト

light11.hatenadiary.com