Unity WebGLでのスマホARに役立ちそうなアセットのレビュー


はじめに

この投稿はWebXR ( WebVR/WebAR ) Advent Calendar 2021の11日目です。
昨日はいとー@ALAKI_WebXRさんの実務で使うWebARのチェックポイントでした。

みなさん、Unity WebGLでスマホARやってますか?
2021/12現在、Unity WebGLはスマホの環境には公式対応を謳っていません
ですが、最近はスマホの処理能力の向上とUnity WebGLの動作が安定してきている事により、将来は有力な選択肢になりそうです。実際に動かす手順はUnityの安原さんの記事などをご参照ください。
この記事では私が実際に使ってみたWebGL関連のUnityアセットをご紹介しますので、購入を検討している方は参考にしてみてください。
アフィリエイト等は特になく、正直ベースの記事で掲載します。

DeviceCameraWebGL


DeviceCameraWebGLのサンプルプロジェクト

iOS Safariに対応したARアプリをUnity WebGLで開発する場合、現状ではカメラをパススルーした3DoFアプリになる事が殆どだと思われます。しかしこのカメラが曲者で、怪しい動きをしては開発者を苦しめる事があります。
このDeviceCameraWebGLはJavaScriptのプラグインを用意してnavigator.mediaDevices.getUserMediaを呼び出す堅牢な実装がされています。コスパ的には微妙なアセットではありますが、実装の勉強になるのと、トラブル時の作者の対応が早くて信用はできそうです。
なお、Unity 2021.2のベータでは.jspreが読み込めないバグがあり、このアセットもその影響を受け肝を冷やしましたが、最新のリリースでは修正されています。
Unity 2021.2からはWebGLでのスマホのカメラもきちんと対応していく方針の様なので、それまでの繋ぎになれば良さそうです。


GyroscopeAccelerometerWebGL


GyroscopeAccelerometerWebGLのサンプルプロジェクト

なんかスマホのWebブラウザだとジャイロが使えたり使えなかったり不安定!といった場合に役立つアセットがGyroscopeAccelerometerWebGLです。
こちらで実装すると、相当安定したジャイロアクセスが実現できます。
特にパーミッション周りの注意点などがまとめられており勉強になりました。
このアセットもDeviceCameraWebGLと同じ作者のアセットです。
こちらもJavaScriptのプラグインでジャイロにアクセスしており、相変わらずコスパは微妙ですが、めんどくさいところを実装してくれているおかげで安定した動作になっています。iOS15で問題が発生してもマッハで対応するなど、作者の対応は良好です。
なお、Unity2021.2からはWebGLでスマホのジャイロや加速度センサーなどの対応が始まりました。これが安定してくれば、今後はもしかしたら不要になるかもしれません。


WebGL FPS Accelerator


WebGL FPS Acceleratorのサンプルプロジェクト

うーんWebGLで作ったプロジェクトは重い!でもARは軽さが命!もたつくと違和感が大きくなるため、少しでも動作を軽くしたい!という時に試してみたくなるのがこのアセットWebGL FPS Acceleratorです。仕掛けとしてはFPSを監視し必要に応じてダイナミックに解像度やDPIを変更することで、高負荷なシーンでもFPSを維持しようというものです。
使ってみると顕著に効果が表れる場合もあれば、殆ど変わらない場合もあり、手放しでお勧めできるほど万能ではないですが、プレファブを投げ込むだけで動き、導入が非常に簡単なので、重めのプロジェクトでは入れておいて損はないかもしれません。

おわりに

徐々にスマホ正式対応に向かいつつあるUnity WebGLですが、まだまだ過渡期の苦しみがあると思われます。知見はなるべく共有できたらと思います。


この記事が気に入ったらサポートをしてみませんか?