夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

HoloLens 2開発の基本 22年版

本日はHoloLens 2のいろは記事です。

 明日22年2月11日はOsaka HoloLens Hackathon And Hackwalk 2022 チームビルドが行われます。

osaka-driven-dev.connpass.com

  このイベントでは20日までの一週間ほどの期間でHoloLensアプリを開発するイベントでオンライン上で開催されます。

 今回のイベントではHoloLens実機を持っていなくても、開発未経験でもチームで一つの作品を作ることができます。

 今回はOsaka HoloLens Hackathon And Hackwalk開催に向けてHoloLens開発のイロハを簡単にまとめていきます。

〇Hackathon Hackwalkとは?

 Hackathonとはハック(Hack)マラソン(Marathon)が合体した言葉で決められたイベント期間中に何かをハック(生み出す)ことを指すIT業界のイベントです。

 実際のマラソンのように技能を競うことなどのコンテスト的な要素もありますが、何かを作り上げるというゴールすることを目的に交流や、学びの場でもあります。

 Hakcwalkとは、ハック(Hack)ウォーク(Walk)が合体した言葉で、関西で生まれた概念です。

 Hackathonとは異なり、ウォーキングのようにイベント期間中開発にふれて気づきや学び、交流を大切にするイベントです。

 今回のイベントではHackathonとHackwalkの両方が同時に開催されます。

〇HoloLens の開発環境

HoloLens 2の開発には次のような方法があります。いずれもアプリを作る段階ではHoloLens 2実機は必要ありません。

いずれの方法でも開発できますが、難易度や使用するプログラム言語が異なるため自分のレベルに合わせて選ぶとよいと思います。

〇Unity

UnityはUnityによって提供されるゲームエンジンです。

Unityの開発環境を使用する場合は以下の記事を参考にしてください。

redhologerbera.hatenablog.com

個人利用では無料で使用することができます。

HoloLens の場合多くのアプリはUnityで作成されています。

UnityではC#言語を使用してアプリケーションを開発することができます。

〇UnrealEngine(UE)

UEはフォートナイトなどのゲームを開発しているEpicGamesによって提供されているゲームエンジンです。

正直筆者もまだ使いこなせていませんが導入は過去の記事を参考にしてください。

redhologerbera.hatenablog.com

UEはUnityに比べグラフィックがきれいなど評価されることがあります。

こちらはC++の言語で作成することができますが、ブループリントと呼ばれるノンプログラミングで開発を行えるツールがあります。

〇DirectX

DirectXは前述のゲームエンジンを使用しないネイティブの開発になります。(コードオンリー)

VisualStudioを使用することでC++の言語で記述することができます。

redhologerbera.hatenablog.com

非常に高速で動くアプリケーションを作成できますが、熟年度と経験が必要になります。

筆者はCubeを配置するだけで1日時間を溶かしてしまいました。

〇StereoKit

StereoKitはDirectX同様ゲームエンジンを用いないネイティブの開発方法になります。

redhologerbera.hatenablog.com

redhologerbera.hatenablog.com

redhologerbera.hatenablog.com

DirectXと比較してC#で作成できるため難易度はやや下がっていますが、基本的なC#の開発スキルが必要になっています。

以上が22年2月現在のHoloLensアプリ開発方法になります。

初心者の方は情報が比較的多いUnityを使用されることをお勧めしますが、経験と好みで使い分けるとよいと思います。

〇HoloLens 2の開発ツール

HoloLens 2ではデバイス開発元のMicrosoft社によってSDK(アプリを開発するためのツール)が提供されています。

Unity、UnrealEngineではこのツールをMixedRealityToolkit(MRTK)と呼びます。

f:id:Holomoto-Sumire:20220210201511p:plain

MRTKを使用することでUnityからHoloLens向けにアプリが作れるようになりますが、加えて次のようなメリットがあります。

・ノンコーディングでアプリ作成可能

 MRTKではExamplesと呼ばれるサンプル集が提供されています。

 Examplesのシーンではそのまま動かしても一つのアプリとして成立していますが、各機能を自身のプロジェクトに導入することでノンコーディングでアプリ開発ができます。

youtu.be]

Examplesではボタンなどのアプリケーションの基本となるパーツも提供されており、少し改造するだけでオリジナルのボタンなども作成することもできます。

  redhologerbera.hatenablog.com

・HoloLens 以外にも対応

MRTKでは初代HoloLens、HoloLens 2、Oculus Quest、PCVR、iOS、Androidに対応しています。

これは同じプログラムでいくつかの操作だけでそれぞれのプラットフォームへ切り替えることができるため、マルチプラットフォームなアプリを開発できます。

DirectX、StereoKitではそれぞれVisualStudioのテンプレートとして開発ツールが提供されています。

HoloLens 2のアプリを開発することでOculus Questなどほかのデバイス開発のスキルも身に付きます。

〇Azure

AzureはMicorosfの提供するクラウドサービスです。

ネットワーク上で遠くにあるつよつよパソコンとHoloLensを接続して、HoloLensだけでは処理できない高度な処理も行うことができます。

Azure Remote RenderingではHoloLens2 単機では不可能な1000万ポリゴンなどのハイクオリティの3Dモデルを見ることができるようになります。

redhologerbera.hatenablog.com

redhologerbera.hatenablog.com

〇初めての開発者へのアドバイス

11日のイベントでは筆者もスタッフとして参加します。

筆者がHoloLens を開発し始めた当初、C#もUnityも経験がなかったためどうしてよいのかわかりませんでしたが、MMDやCRS(UnityJapanが提供しているユニティちゃんのダンスプロジェクト)をHoloLensでただ見るというところから始めました。

www.youtube.com

 ダンスなどはすでにほかの開発者さんや公開している方が作成しているものを流用してボタンなどMRTKで提供されている機能を使用してダンスを操作できるようにするというものが筆者が最初にHoloLensで作成したコンテンツでした。

 HoloLensは3Dモデルを見るだけでもとても素晴らしい体験ができます。 まずはどんどん何かを作る、そしてみるという体験から入ってみることをお勧めします。