環境
- Windows 10 Pro 21H2
- MRTK 2.6.0 から 2.7.3 へ
- Unity 2019.3 LTS から 2021.3 LTS へ
- MixedReality-WebRTC 2.0.2
ご注意
- 古くからあるプロジェクトのため、MixedReality-WebRTCを使っている
- GitHubには、
MR-WebRTC has been deprecated.
と明記されている、利用時は注意 - 筆者の環境では、移行がうまくいったように思えるが、まだ検証段階である、移行の判断は慎重に行うのがよいと思う
背景
- Unity built-in VR(Unityの組み込みのVR機能)が2019で廃止
- 移行するのが億劫で、長らく2019を使ってきたが、2019 LTSが終了するので移行を決意
「Unity built-in VR」形式から 「Unity XR Plug-in」形式への移行
- Hierarchyにある既存の「MixedRealityToolkit」を削除して、公式サイトにある手順を実行したら、特にはまることなくうまくいった
- しかし、別ところで、大きくはまったのでメモ
Unity 2021で、C#エラーチェックが厳格になった
- 未割当の変数を使用する、未割当のout パラメーターを使用する、などをエラーにしてくれるようになった(ありがたい!)
- CS0165: Use of unassigned local variable
- CS0269: Use of unassigned out parameter '’
MRTK 2.7.2(おそらく、これ以前)だと、未割当のエラーが発生する
- (エラーチェックの厳格化は、ありりがたい限りだが、移行のときにエラーが発生すると動揺を隠せない)
Library\PackageCache\com.microsoft.mixedreality.toolkit.tools@8eafd83ed930\MSBuild\Scripts\Utilities.cs(132,17): error CS0269: Use of unassigned out parameter 'guid'
Library\PackageCache\com.microsoft.mixedreality.toolkit.foundation@6e9ce41f130d\SDK\Features\UX\Scripts\BoundsControl\BoundsControl.cs(939,54): error CS0165: Use of unassigned local variable 'colliderByTransform'
Library\PackageCache\com.microsoft.mixedreality.toolkit.foundation@6e9ce41f130d\SDK\Features\UX\Scripts\BoundsControl\BoundsControl.cs(947,54): error CS0165: Use of unassigned local variable 'rendererBoundsByTransform'
Library\PackageCache\com.microsoft.mixedreality.toolkit.foundation@6e9ce41f130d\SDK\Features\UX\Scripts\BoundingBox\BoundingBox.cs(1906,54): error CS0165: Use of unassigned local variable 'colliderByTransform'
Library\PackageCache\com.microsoft.mixedreality.toolkit.foundation@6e9ce41f130d\SDK\Features\UX\Scripts\BoundingBox\BoundingBox.cs(1914,54): error CS0165: Use of unassigned local variable 'rendererBoundsByTransform'
- 以下のコミットで修正されている
- このコミットが取り込まれたバージョンが、MRTK Ver.2.7.3
MRTK 2.7.3のインストール
- MRTK 2.7.3にすれば無事解決なのだが、MRTK 2.7.3のインストールにひと手間必要だった
- 手元にあった「MixedRealityFeatureTool-1.0.2104.4-Beta」を使って、MRTK 2.7.3 をインストールしようとしたが、なぜか2.7.2までしかリストに表示されない(筆者の環境だけかもしれない)
- 本記事執筆時の最新「MixedRealityFeatureTool-1.0.2203.0-Preview」を使うと、MRTK 2.7.3をインストールできた
- 「MixedRealityFeatureTool-1.0.2203.0-Preview」を使うと、MixedReality-WebRTCがリストに表示されない(3回くらい確認したが、やはりないと思う)
- GitHubには、
MR-WebRTC has been deprecated.
と追記されているので、終了ということなのだろう
- GitHubには、
- Beta版とPreview版の両方、使えば無事解決なのだが、そう簡単にいかせてくれない
MixedRealityFeatureToolのBeta版とPreview版の共存
- 一度、Preview版を起動してしまうと、Beta版が正常動作しなくなる(つまり、MixedReality-WebRTCをインストールできなくなる)
- 設定ファイルの構造が違うからと思われる
-
%appdata%\..\Local\MixedRealityFeatureTool
以下にあるファイルをバックアップ取って、削除すると - Beta版が再び正常動作するようになる
- Beta版でMR-WebRTCをインストールして、その後、Preview版でMRTK 2.7.3をインストールという手順でうまくいった
MixedRealityFeatureTool BetaがなくてもMR-WebRTCをインストールできるように
- deprecatedだとしても、デモ制作などで、MixedReality-WebRTCに頼る機会が今後もあるかもしれないので
- 早く代替(Microsoft Meshなど)がリリースされればよいのだが
- MixedRealityFeatureToolがなくても、MixedReality-WebRTCをインストールできるようにメモ
-
com.microsoft.mixedreality.webrtc-2.0.2.tgz
ファイルを保存しておく -
ProjectPath\Packages\MixedReality\
に配置する -
manifest.json
に以下の1行を追加
manifest.json
"com.microsoft.mixedreality.webrtc": "file:MixedReality/com.microsoft.mixedreality.webrtc-2.0.2.tgz",
- パッケージマネージャー(UPM)管理にせずに、tgzファイルを解凍して、Assetsフォルダに入れてもよい
- その場合、Editorの軽微なエラーが発生する、以下に対処方法を書いた
さいごに
-
MR-WebRTC has been deprecated
なので、次は、WebRTC部分の移行を検討しないといけない - 独自に開発するか、Unity WebRTCを待つか、Microsoft Meshを待つか熟考中だが、
- ARM64対応したMicrosoft Meshで快適にリアルタイム通信ができる未来を望む
- MixedReality-WebRTC は、ARM32bitしか対応していなく、いろいろ苦労した