ピンクの警報発令中

多分VR転職しました。関連する技術系の話と、アイドルの話をします。技術の話、めちゃゆるい。

HoloLens 2 とのいろいろ

はい、毎日HL2と戯れています。

わざわざ1つの記事にするほどのことじゃないけど勉強になったことが溜まってきたので備忘録です。

目次

ざっくりとこんな内容を書きます。
なお、非常に雑です。

MRTK2.5.0で解決?UIRaycastCameraの失踪

めちゃくちゃ苦しめられたUIRaycastCameraのお話。
どうやって苦しめられたかというと、Prefab化しているCanvasのパーツにClick動作をつけてると、これがまぁ押せない。
Scene移動でPrefab化しているやつらはスポーン(言ってみたかった)されるんだけど、CanvasのEventCameraがMissingになってるっぽいんですよ。
HL2で実機確認したときだけな!
悲しみ。

f:id:samy_hrin:20200929154605p:plain
Canvas

本題に戻りますが、問題は以下です。

  • シーン移動して
  • UIRaycastCameraが再生成されたら
  • CanvasのEventCameraがMissingする

この問題、かみ砕きまくるとシーンごとにProfileを持っていて、Profileを削除->生成したらおかしくなるよね?ってことみたいです。

First set of active profile change fixes by davidkline-ms · Pull Request #8050 · microsoft/MixedRealityToolkit-Unity · GitHub

やっぱり困ってた人がいたみたいで、MRTK2.5.0に対して修正が入っているようです。

もうプレリリースも出てきてますし、そろそろリリースされそうな2.5.0で解決しているといいなぁと思っています。

類件も上がっているようですが、こちらは動きがなく。
スクリーンショットで上がっているシーンはSceneSystemのデモにあったと思うので、そちらで動かせば問題ないはず。

Active Profile Switching - Unity UI is not responding · Issue #6061 · microsoft/MixedRealityToolkit-Unity · GitHub

※そもそもUIRaycastって?
EventSystem - what is UIRaycastCamera? · Issue #1442 · microsoft/MixedRealityToolkit-Unity · GitHub
日本語での解説もあるんだけど、これが好きです。

Scene System を使ってみよう

前のUIRaycast繋がりなのですが、MRTKにはProfileを1つだけにしてシーン遷移できるScene Systemというものがあります。
Profileの削除・生成が嫌なら、しなければいい。
そんな感じですね。

f:id:samy_hrin:20200929155238p:plain

もうたくさんシーンがあって今更移行なんて出来ないよ!
なんて心配もないくらい、とっても簡単なScene System.
絶対大丈夫、私が言うから誰でもできる。

そして方法については、takabrz1@MRTKV2とAzure Spatial Anchorsと格闘中 (@takabrz1) | Twitter さんが懇切丁寧に書いてくれています。

www.slideshare.net

追記するとすれば、私は自前でDefaultにあたるSceneを作成したので、その時に以下のWarningが出ました。

The active profile of the instance in your manager scene is different from the profile that loaded your scene. This is not recommended.

Active Profileが違うよ、というメッセージの通りです。
ProfileでSceneSystemを有効にするとDefaultManagerSceneが生成されますが、自前で作っていたSceneもいたせいですね。
Scene Systemの設定からManager Scene Settingsのチェックを外して、Hierarchy上からもDefaultManagerSceneのシーンを消せば解決します。

こんな方法で、UIRaycastCameraの件を解決させました。

NewtonesoftとHololens 2

JSON
みんな大好き。じぇいそん。
シリアライズ、デシリアライズが面倒でライブラリも各言語ありますが、NewtonesoftはHL2じゃ使えないんだって!
ちなみに、HL1は使えてたんだけど…っていうのを見ました。
早くHL2でも使えるようになればいいな。
Newtonesoftが使えないのは分かった。じゃあどうしたらいいんだ?
その答えは、UnityのJsonUtilityを使いましょう。らしいです。

ちなみに、これはMRTKが悪いからとかではなくて、IL2CPPとかなんか私の理解の至っていない部分の問題みたいです。

~追加情報~


いつもHololens関連で助けて頂いている広務さんから情報が!!
本当にありがとうございます!

yotiky.hatenablog.com

私のプロジェクトに入っていたのはAssetStoreからの古いバージョンのようで、手順に沿えば使えることがわかりました!
いつも本当に助かってます(-人-)感謝

全天球の大きさってみんなどうしてるの?

どうしてるの!?
そもそもMRで全天球使ったりしないかもだけど。
Oculus Questも2が出てきて、コードレスで自由なxRができるじゃないですか。
全天球のサイズを5とかにしてると、普通に歩いて出ちゃうんだよね。
でも100だと映してる映像みえなくなっちゃう(そんなことある?)
みんなどうしてるのかなーって。
答えのない問いかけです。
なお、私は50にしてる。

ログってここにあったんだ!

ここ最近一番の発見。
HLの実機のログの場所!
いや、そんなの知ってて当たり前だしwww
となるとは思うんですけどね。。。
これ本当に私的には奇跡で、こいつのおかげで問題も解決出来たくらいなの、、、ありがとう。。。

ログはデバイスポータルから引っ張れます。

System > File explorer > LocalAppData > 見たいアプリ > TempState
もちのろんですが、ストアからインストールしたアプリは見れません。

f:id:samy_hrin:20200929163946p:plain

おわりに

f:id:samy_hrin:20200929164223p:plain

気付いたら100%になってた!(スクショはその前にした)