MRが楽しい

MRやVRについて学習したことを書き残す

HoloLens2でホロモンアプリを作る その1

本日はアプリ作成枠です。
HoloLens2でホロモンアプリを作る進捗を書き留めていきます。
f:id:bluebirdofoz:20210102232243j:plain

本記事はやりたいことと作成物の書き出しです。

アプリでホロモンとしたいこと

したいこと 完了チェック
名前を呼ぶと反応する
呼ぶと付いてきてくれる
お肉をあげると喜ぶ
ジャンケンで勝負して勝ち負けで喜んだり悲しんだりする
うんちする
夜に寝る

作るもの

ホロモンモデルのアニメーション作成

作るモーション 完了チェック
歩き
走り
咆哮  
歌う  
待機
空腹
発見  
お座り
食事
遊び待機
ジャンケン前振り
グー
チョキ
パー
勝ち
負け
引き分け
うんち
眠たい  
就寝  
睡眠中
起床  

アプリUIの作成

作るUI 完了チェック
食事ボタン
遊びボタン
掃除ボタン
お休みボタン
呼び出しボタン

アプリロジックの作成

作るロジック 完了チェック
待機モード
付いてくモード
食事イベント
じゃんけんイベント
うんちイベント
睡眠イベント

設計や作り込みを考えると時間がかかってしまいそうなので、まずはホロモンを呼ぶと付いてくる機能を今月中頃を目標に作成します。

2020年を振り返る

本日は2020年の振り返りです。
ブログの記事を元に、2020年の自身の動きをまとめてみました。
f:id:bluebirdofoz:20210101215404j:plain

1月

Blender2.8 の Python スクリプトに関する記事が中心です。
高精細なホロモンモデル作成の効率化と自動化を目的として、BlenderPython API を2019年から勉強し始めていました。
Blender のバージョンが2.8に上がり、APIが一部変更となった事を契機に改めて BlenderPython API を勉強し直しました。
bluebirdofoz.hatenablog.com

2月

MRTK v2 に関する記事が中心です。
会社で HoloLens2 が入手できたのでアプリケーション開発の知見を深めるため、MRTK v2 のドキュメントを読み解いてました。
Hdg Remote Debug などアプリケーション開発に役立つツールの調査も行いました。
bluebirdofoz.hatenablog.com

3月

HoloLens2 のアプリケーション開発の勉強を継続していたため、引き続き MRTK v2 に関する記事が中心です。
xRLT vol.3 に登壇し、HoloLens2 の視線追従機能とホロモンモデルを使ったアプリケーションを発表用に作成しました。
コロナの影響で xRLT vol.3 はオンラインイベントとなり、初のオンラインイベント登壇でした。
bluebirdofoz.hatenablog.com

4月

BlenderPython API や MRTK v2 に関する記事が中心です。
4月には HoloLens ミートアップが cluster で開催されたため、その環境構築やアバター登録の記事も作成しています。
Blender の自動化を活用してハイポリゴンなホロモンモデルの作成にも着手しました。
bluebirdofoz.hatenablog.com

5月

先月の cluster に続き、Spatial や AltspaceVR などのxRのリモート会議アプリを試しています。
オンラインイベントが多く開催され、VRのイベントアプリを色々利用することとなった時期でした。
他には Microsoft Maquette でVR空間でのお絵描きを試したり、イベント以外にも色々なVRアプリを試した月でした。
bluebirdofoz.hatenablog.com

6月

MRTK v2 を使った開発記事や、ホロモンモデルの作成記事を書いています。
特にホロモンの毛並みオブジェクトを作成するため、Blender の自動化を活用しました。
Blender の自動化はホロモンの毛並みオブジェクトのポリゴンレベル切り替えを作ることが目的だったので力が入ってます。
bluebirdofoz.hatenablog.com

7月

HoloLens ミートアップ vol.21 に自作の ChannelMap 作成アドオンの紹介LTで登壇しました。
こちらのアドオンもモデルを軽量化しつつ、ホロモンのテクスチャをより精細なものにするために作成したものです。
最終的にはあまり効果が得られるものではありませんでしたが、BlenderPython API の勉強にもなりました。
bluebirdofoz.hatenablog.com

8月

xR Developers Community Conference に3Dモデルの軽量化テクニックのテーマで登壇しました。
ホロモンモデルを精細化できたので、次に HoloLens2 上で動作するようにモデルの軽量化に着手した時期です。
MeshBaker や NVIDIA Nsight Graphics など軽量化に役立つツールを色々調査しました。
bluebirdofoz.hatenablog.com

9月

インバースキネマティクスやスカルプトモデリングなどの Blender に関する記事が中心です。
ホロモンモデルのアニメーション作成を簡略化してアニメーションの種類を増やすため、IK を学習しました。
IK の活用でアニメーションにかなり複雑なアニメーションが作成できるようにできました。
bluebirdofoz.hatenablog.com

10月

Kobe HoloLens Meetup! vol.3 に3Dモデルのインポートのテーマで登壇しました。
筆者は関西出身なのですが、関西コミュニティに登壇したのはこれが初めてでした。オンラインイベントの恩恵です。
その他の記事は先月学習した IK を活用するため、Unity のリグアニメーションに関する記事が中心です。
bluebirdofoz.hatenablog.com

11月

Blenderモデリング以外の機能に関する記事を色々書きました。
作成した高精細なホロモンモデルを使って綺麗な一枚絵を作成するため、レンダリングに関する機能を調べました。
機能を学ぶほど Blender の認識がモデリングツールからお絵描きツールになり、楽しく学習できました。
bluebirdofoz.hatenablog.com

12月

cluster のワールド作成に関する記事が中心です。
VR用のワールド作成では HoloLens のアプリ開発では利用しない機能が多々あり、Unity 自体の勉強にもなりました。
特に魅力的な空間作成にはライトベイクやライトプローブなどライティングに関する知識が重要でした。
bluebirdofoz.hatenablog.com

まとめ

HoloLens2 が来たことによる MRTK を使ったアプリ開発に関する学習と、ホロモンモデルの高精細化を目標とした Blender の学習が中心の1年でした。
高精細なホロモンモデルの作成は達成できたものの、そのモデルを活用した HoloLens2 アプリ開発には着手できないままでした。

去年は学習の1年だったので、今年はアプリケーション作成の1年にします。
ホロモンモデルを使ったアプリケーション開発の進捗に関する記事を増やしていこうと思います。

XR Pluginを使ってHolographic Remoting Playerに接続する その2(MRTKのインポート)

本日は HoloLens2 の小ネタ枠です。
XR Pluginを使ってHolographic Remoting Playerに接続する手順を記事にします。

前提条件

前回記事の続きです。
bluebirdofoz.hatenablog.com

今回はプロジェクトに MRTK をインポートして Remoting Player でポジショントラッキングやハンドトラッキングを利用します。

MRTKのインポート

以下のページから unitypackage を取得して MRTK をインポートします。
github.com

または以下の手順で UnityPackageManager から取得することもできます。
bluebirdofoz.hatenablog.com

前回作成したプロジェクトに Foundation のパッケージを[Import]します。
f:id:bluebirdofoz:20201231043756j:plain

インポートが完了すると[MRTK Project Configurator]ダイアログが表示されるので[Apply]を実行します。
f:id:bluebirdofoz:20201231043808j:plain

これで MRTK のインポートは完了です。

シーンの設定

MRTK をインポートすると、メニューに[Mixed Reality Toolkit]が追加されます。
[Mixed Reality Toolkit -> Add to Scene and Configure..]を実行します。
f:id:bluebirdofoz:20201231043822j:plain

シーンに[MixedRealityToolkit]と[MixedRealityPlayspace]オブジェクトが追加されます。
f:id:bluebirdofoz:20201231043832j:plain

[MixedRealityToolkit]オブジェクトの[Inspector]ビューを開きます。
プロファイルのプルダウンを開き、[DefaultXRSDKConfigurationProfile]のプロファイルを指定します。
f:id:bluebirdofoz:20201231043845j:plain

これでシーンの設定が完了しました。

Editor実行時の背景設定

このままでも動作確認が可能ですが、UnityEditor でアプリを実行した場合は背景にスカイボックスが表示されます。
背景に黒の透過色を設定しておくことで、Remoting Player で HoloLens2 に投影した時、背景を透過させることができます。
f:id:bluebirdofoz:20201231043859j:plain

[DefaultXRSDKConfigurationProfile]のプロファイルを元に、[Copy & Customize]で新規プロファイルを作成します。
[Clone Profile]ダイアログが開くので、任意のプロファイル名を設定して[Clone]を実行します。
f:id:bluebirdofoz:20201231043918j:plain

更に[Camera]タブを開き、[CameraProfile]のプロファイルを[Clone]して新規プロファイルを作成します。
[Clone Profile]ダイアログが開くので、任意のプロファイル名を設定して[Clone]を実行します。
f:id:bluebirdofoz:20201231043934j:plain

これで[Display Settings]の設定が編集できるようになります。
UnityEditor での実行では[Opaque]の設定項目が参照されるため、[Skybox]が表示されています。
f:id:bluebirdofoz:20201231043948j:plain

[ClerFlags]を[Color]に変更して単一の背景色を設定します。
[Background Color]には黒の透過色を設定します。
f:id:bluebirdofoz:20201231043958j:plain

これで Editor 実行時の背景設定は完了です。

Holographic Remoting Playerに接続する

前回と同様に[Window -> XR -> Windows XR Plugin Remoting]から接続を行います。
f:id:bluebirdofoz:20201231044011j:plain

HoloLens2 側で UnityEditor 上で動作中のアプリケーションが表示され、ポジショントラッキングにカメラが追従すれば成功です。
f:id:bluebirdofoz:20201231044024j:plain

更にオブジェクトに[Object Manipulator]を設定すると、ハンドトラッキングも正常に動作することを確認できます。
f:id:bluebirdofoz:20201231044034j:plain

XR Pluginを使ってHolographic Remoting Playerに接続する その1(XR Pluginのインストール)

本日は HoloLens2 の小ネタ枠です。
XR Pluginを使ってHolographic Remoting Playerに接続する手順を記事にします。

前提条件

前回記事の続きです。
bluebirdofoz.hatenablog.com

Windows XR Plugin Remoting

Holographic Emulation は Unity 2019.3 以降 Deprecated の注意書きが追加されています。
Unity 2020.1 以降は Windows XR Plugin Remoting を利用する形になります。
f:id:bluebirdofoz:20201230210053j:plain

Windows XR Plugin Remoting を有効化するには XR Plugin Management でプラグインのインストールを行います。
メニューから[Edit -> Project Settings..]を選択します。
f:id:bluebirdofoz:20201230210108j:plain

[Project Settings]ダイアログが開くので、[XR Plugin Management]タブを開きます。
[Install XR Plugin Management]をクリックして実行します。
f:id:bluebirdofoz:20201230210122j:plain

インポートが完了したらプラグインの一覧が表示されます。
Remoting Player を利用したい環境の[PC]、[UWP]タブそれぞれで[Windows Mixed Reality]を有効化します。
f:id:bluebirdofoz:20201230210134j:plain
f:id:bluebirdofoz:20201230210148j:plain

なお、XR SDK をインストールすると、Legacy XR は利用できません。
Legacy XR の設定を利用したい場合は XR SDK を削除する必要があります。
f:id:bluebirdofoz:20201230210240j:plain
f:id:bluebirdofoz:20201230210219j:plain

Holographic Remoting Playerに接続する

同一ネットワークに接続した HoloLens2 で Holographic Remoting Player を起動します。
HoloLens2 のIPアドレスを確認します。
f:id:bluebirdofoz:20201230210313j:plain

メニューから[Window -> XR -> Windows XR Plugin Remoting]を選択します。
[Windows Mixed Reality]ダイアログが開きます。
f:id:bluebirdofoz:20201230210327j:plain

[Emulation Mode]を[Remote to Device]に切り替えます。
f:id:bluebirdofoz:20201230210338j:plain

[Remote Machine]に先ほど確認したIPアドレスを入力して[Connect]ボタンで接続します。
f:id:bluebirdofoz:20201230210348j:plain

接続に成功すると[Connection Status]が[Connected]になります。
[再生]ボタンをクリックすると、ストリーミングが開始します。
f:id:bluebirdofoz:20201230210359j:plain

HoloLens2 側で UnityEditor 上で動作中のアプリケーションが表示されれば成功です。
f:id:bluebirdofoz:20201230210412j:plain

ただし、このままだとポジショントラッキングにカメラが追従しない問題が発生します。
Remoting Player でポジショントラッキングやハンドトラッキングを利用するには、更に MRTK のインポートと設定を行います。
bluebirdofoz.hatenablog.com

参照ページ

xrdnk.hateblo.jp
github.com

USB接続でHolographic Remoting Playerを実行する

本日は HoloLens2 の小ネタ枠です。
USB接続でHolographic Remoting Playerを実行する手順を記事にします。

前提条件

前回記事の続きです。
bluebirdofoz.hatenablog.com

USB接続でHolographic Remoting Playerを起動する

USB接続で Holographic Remoting Player を利用する場合、予め Wifi 接続は切っておく必要があります。
メニューから[インターネットなし]の状態になっていることを確認します。
f:id:bluebirdofoz:20201229224950j:plain

この状態で、HoloLens2 と PC をUSB接続して Holographic Remoting Player を起動します。
すると、画面に 169.254.~ から始まるIPアドレスが表示されます。
f:id:bluebirdofoz:20201229225002j:plain

後は前回記事と同様に、Unity プロジェクト側から接続を行います。
メニューから[Window -> XR -> Holographic Emulation]で[Holographic]ダイアログを開き、IPアドレスを指定して接続します。
f:id:bluebirdofoz:20201229225013j:plain

接続に成功すると[Connection Status]が[Connected]になります。
[再生]ボタンをクリックすると、ストリーミングが開始します。
f:id:bluebirdofoz:20201229225022j:plain

HoloLens2 側で UnityEditor 上で動作中のアプリケーションが表示されれば成功です。
f:id:bluebirdofoz:20201229225031j:plain

Holographic Remoting Playerを使ってアプリのデバッグをHoloLens2で実行する

本日は HoloLens2 の小ネタ枠です。
Holographic Remoting Playerを使ってアプリのデバッグをHoloLens2で実行する手順を記事にします。
f:id:bluebirdofoz:20201228231313j:plain

Holographic Remoting Player

Holographic RemotingはWi-Fi接続を使用して、アプリケーションをPCからHoloLensにリアルタイムでストリーミングする機能です。
HoloLens(第1世代)とHoloLens 2の両方で使用できます。本記事では HoloLens2 への接続を試します。
docs.microsoft.com

HoloLens2側のセットアップ

Holographic Remoting Player のクライアントアプリを HoloLens2 にインストールします。
メニューを開き、Microsoft Store を起動します。
f:id:bluebirdofoz:20201228231332j:plain

パネルが開くので[検索]ボタンから「Holographic Remoting Player」を検索します。
f:id:bluebirdofoz:20201228231342j:plain

[Holographic Remoting Player]のアプリページを開いたら[インストール]ボタンをクリックしてインストールを実行します。
これで HoloLens2 側のアプリインストールは完了です。
f:id:bluebirdofoz:20201228231352j:plain

インストールしたアプリを開くと、3Dランチャが表示されるのでタップして起動します。
f:id:bluebirdofoz:20201228231401j:plain

アプリを起動すると、接続待ちの状態になります。
HoloLens2 のIPアドレスが表示されるので、Unity 側でこのIPアドレスを指定します。
f:id:bluebirdofoz:20201228231411j:plain

Unity側のセットアップ

HoloLens2 と同じネットワーク上のPCで、動作させたいアプリの Unity プロジェクトを開きます。
Unity で Holographic Remoting Player と連携するには Vurtual Reality Support の設定を有効化する必要があります。
f:id:bluebirdofoz:20201228231419j:plain

メニューから[Edit -> Project Settings...]で[Project Settings]ダイアログを開きます。
[Player -> XR Settings]の設定項目を開き、[Virtual Reality Supported]にチェックを入れて[Windows Mixed Reality]を設定します。
f:id:bluebirdofoz:20201228231429j:plain

メニューから[Window -> XR -> Holographic Emulation]で[Holographic]ダイアログを開きます。
f:id:bluebirdofoz:20201228231439j:plain

[Emulation Mode]を[Remote to Device]に変更します。
f:id:bluebirdofoz:20201228231449j:plain

接続設定の欄が表示されるので[Device Version]に[HoloLens2]、[Remote Machine]に先ほど表示されたIPアドレスを指定します。
この状態で[Connect]ボタンをクリックします。
f:id:bluebirdofoz:20201228231459j:plain

接続に成功すると[Connection Status]が[Connected]になります。
f:id:bluebirdofoz:20201228231509j:plain

[再生]ボタンをクリックすると、ストリーミングが開始します。
f:id:bluebirdofoz:20201228231527j:plain

HoloLens2 側で UnityEditor 上で動作中のアプリケーションが表示されます。
f:id:bluebirdofoz:20201228231536j:plain

Holographic Remoting Player ではポジショントラッキングやハンドトラッキングによる HoloLens2 のフィードバックもアプリケーションの動作に反映されます。
f:id:bluebirdofoz:20201228231557j:plain

Blender2.9で別のblendファイルで作成したポーズアニメーションをblendファイルに取り込む

本日は Blender2.9 の小ネタ枠です。
Blender2.9で別のblendファイルで作成したアニメーションデータをblendファイルに取り込む手順を記事にします。
f:id:bluebirdofoz:20201227231009j:plain

ポーズアニメーションを互換できるblendファイル

ポーズアニメーションの共有は同じ名称を持つボーン構成のポーズアニメーション間で可能です。
以下のように編集用のオリジナルのblendファイルから、アニメーション作成用にボーン構成はそのままに簡略化したblendファイルを作成しました。

・元blendファイル
f:id:bluebirdofoz:20201227231018j:plain

・簡略化blendファイル
f:id:bluebirdofoz:20201227231311j:plain

ポーズアニメーションの作成する

簡略化blendファイルでポーズアニメーション(アクション)を作成します。
f:id:bluebirdofoz:20201227231034j:plain

同じ名称のボーンにキーが設定されていることを確認します。
f:id:bluebirdofoz:20201227231043j:plain

オリジナルのblendファイルでアクションを取り込む

オリジナルのblendファイルを開きます。
このblendファイルにアクションを取り込みます。
f:id:bluebirdofoz:20201227231054j:plain

blendファイルからデータを取り込むにはメニューから[ファイル -> Append]を選択します。
f:id:bluebirdofoz:20201227231106j:plain

[Blenderファイルビュー]ダイアログが開くので、アクションが含まれるblendファイルを選択します。
f:id:bluebirdofoz:20201227231118j:plain

内部のデータ一覧が表示されるので、[Action]を選択します。
f:id:bluebirdofoz:20201227231132j:plain

blendファイルに含まれるアクションの一覧が表示されます。
取り込みたいデータを選択して[アペンド]を実行します。
f:id:bluebirdofoz:20201227231147j:plain

これでアクションを取り込むことができました。
f:id:bluebirdofoz:20201227231156j:plain

アクションを再生して、正しく再生されることを確認します。
f:id:bluebirdofoz:20201227231206j:plain