本日はトラブルシューティング枠です。
〇自作アプリのキャプチャができない
HoloLensではMRC(MixedRealityCapture)と呼ばれる機能があり、実機での体験の様子を画像、動画で撮影、保存することができます。
今回自作のアプリケーションをデプロイし、実機で体験中にアプリのキャプチャを撮影しようとした際、アプリケーションが落ちるなど撮影ができない現象が発生しました。
〇問題
今回発生した問題は次の通りです。
・ホームメニューからカメラ、ビデオで撮影・録画を行う際に撮影カウント画面でカメラが停止する。
・ミラーリングを行うことができない。
・ミラーリングを行う際にアプリケーションがクラッシュする
・アプリ起動前からミラーリングを行っている場合アプリケーションのロード画面で画面が固まり、アプリが起動しない。
いずれもHoloLens2のカメラにアクセスする際に発生していることがわかります。
〇環境
・HoloLens 2
・MixedRealityToolkit v2.7
・Untiy2021.1.0f1
・Universal RenderPipeline
〇原因
Universal Render Pipelineの設定に原因がありました。
Unityではレンダリング後の画像の解像度を設定する[Render Scale]と呼ばれる設定項目があります。
[Render Scale]はレンダリング後の画質を設定します。値を上げることで解像度が上がり、よりグラフィックがきれいになりますが、メモリーの使用量が上がります。逆に下げることでFPSなどを担保することができます。
今回の現象が発生しているプロジェクトでは共通してこの[Render Scale]が1以上に設定されていました。
ドキュメントによるとデフォルトの設定でHoloLens2の最大レンダーターゲットサイズである1440x936の解像度が使用されているようです。
実機での使用ではFPSを引き換えにレンダースケールを上げることができますが、このあたりの問題及びメモリーの問題でキャプチャを行うカメラリソースへのアクセスに問題が発生していると考えられます。