atali Blog

Loading

J:COM Quest 移植

こんにちは。開発の樋口です。

今回は、過去に納品したハイエンドPCでのVR(HTC VIVE&VIVE Pro)を3コンテンツを1つに纏め OculusQuestへ移植する工程を(苦労話を交え)説明したいとおもいます。

元々、このVRコンテンツはOculusQuestに移植する前提で設計されていません。そのため、PCのスペックを出し切るべく、比較的リッチなリソースで作られていました。加えて、元々3つのソフトに別れていたものを1つのアプリに統合する過程で、数々の問題が噴出しました。

手始めに行ったのがUnityのバージョン合わせからです。Windows版はv5.6~2017.2作成時代に合わせ複数のバージョンで制作されていましたが、すべてを統合するためにまず比較的新しいv2019.2に統一しました。バージョンが上がった事により、動画再生周りの機能等に変更があり、まずはその辺を最新バージョンへ対応、移植する地道な作業に、結構悩まされました。

またWindows → Android(Questの中身はAndroidなので)にOSが変更になるわけですが、アセットストアで購入したエフェクトなどが対応しておらず、似たものを作成しなおしました。加えてSteamVRからOculus Integrationに変え操作周りをQuestに対応し

合体、ビルドするも… まったく通りませんでした。原因は、上述の通り、リッチなリソースの多用によるものです。

怒涛のリソース削減へ

ということで、リソースの削減を実行することになった訳ですが、とはいえ、闇雲に削っても埒が明かないので、まずはMemoryProfilerを導入し、各リソースを可視化しました。

(本ツール、リソース的に大きいものが視覚的に大きく表示されるのでとても直感的で分かりやすいのでお勧めです…)

さて、可視化された画像から負荷の元凶となっている犯人を捜していきます。

  • 無意味に大きなテクスチャサイズを小さくし、カメラに近い部分のみ解像度を確保。
  • 効果が確認できないようなnormalマップなど削除。
  • ポリゴン数の多いものを削減。ゴミモデルも多く、それもその弊害の一つ)。
  • サウンド周辺もデフォルトでは結構メモリ食うので極力ストリーミングへ逃がし、メモリ圧迫を回避。

などなど、凶悪犯だらけ…ひたすら上位に上がったリソース削減を繰り返し、いつしか動くようになりました。 ただ、動くには動くようになったものの、未だ不完全…表示に関し、シェーダーが対応不能であったり、重かったり、未だメモリも不安で途中で落ちる… ということで、さらなる削減が必要でした。行ったことは、

  • 動的ライトの数を削減。
  • ポストエフェクト等、見直し削減。
  • リフレクションプローブなどもベイクしリアルタイムに反映させる事は諦めた。
  • Texture QualityをHalf Resに指定。
  • シーンを細分化のうえ逐次ロード・解放。

といった地道な工程を経て、ついに、 5.25Gbyte→280Mbyteに減量する事ができました!

ここまで削減した割には、表示の印象もさほど変わらずに移植できたかと思います。

以上、今回は移植は楽しい!的に思えて、実は結構大変だった話でした。

まとめ

ということで、今回は移植作業の話がメインでしたが、J:COM Questは、様々なエンタメコンテンツはもちろん、イーラーニングや、将来的にはEC等への応用が可能です。 ご興味、ご質問があれば、

contact@atali.jp

まで、お問い合わせください。お待ちしております。

Related article