はじめに

Asset Transformer Toolkit(旧Pixyz)とは主に産業用のCADデータをそのままUnityにインポートして、
アプリで使用できるようにするツールです。CADに限らず、BIM、PointCloud、Meshなどあらゆるモデルをインポートして最適化することができます。
今回は、そのままでは動かないCADデータを最適化し、Meta Quest 3実機で動かす過程を紹介したいと思います。

使用するには、Unity Industryに加入する必要があります。

開発環境

  • Unity 6000 1.2f1
  • Asset Transformer Toolkit ex Pixyz v3.1.2
  • Meta XR Core SDK v77.0.0
  • Meta XR Interaction SDK v77.0.0

注意事項

SkinnedMeshRendererに対応していない

背景やCADデータ等静的な大きいファイルを扱うことを目的としているため、
アニメーション付きのモデルには対応していません。
その場合は有料アセットのMeshBaker等を使用する必要があります。

1,000個を超えるゲームオブジェクトの選択を適切に処理できない

Unityエディターの性質上、1,000個を超えるGameObjectの選択を適切に処理ができないです。
この場合はまとめて、親オブジェクトを選択するか、後述するRule Engineを使用してください。

動的な最適化は恐らくできない

ScriptのAPIが用意されていないため、アプリの中でモデルを読みこんで最適化というのは出来ないです。あくまでUnityエディター上のツールだと思います。

Unity Version Control を推奨

大きいファイルを扱うため、バージョン管理にはGitよりUnity Version Controlを使用することを推奨されています。
参考リンク

インポート方法

Package Manager -> Unity Registry -> Asset Transformer Toolkit ex Pixyz をインストール

PCがUnity Industryのアクティベートをしていないとエラーがでます。

インストールすると、SceneViewに赤枠で囲った部分が追加されます。
これがツールになります。

  1. モデルのインポート
  2. 法線、向きの調整
  3. ポリゴンのリダクション
  4. メッシュのリダクション
  5. GameObjectのマージ、解体
  6. ピボットの調整
  7. UV作成
  8. コライダー作成

サンプル使用モデル

CADデータを配布してるサイトは主に以下のようなものがあります。

今回はCRAB CADからKF-21という戦闘機のモデルを使用します。
インポートは import Model をクリックして、ダウンロードしたモデルを選択するとできます。

Inspectorにインポート設定が表示されます。
座標系、インポートする情報、UVの作成等を設定したら Import をクリック。

インポートしてみると、なんとポリゴン数は873万もありました。
GameObjectも2041あります。
当然そのままでは動かなかったので、これからこれを最適化してQuest3で動くようにします。

ポリゴン数の削減

六角形アイコン右の三角の部分をクリック。Decimateを選択。

任意のGameObjectを選択した状態で六角形のアイコンをクリック。
削除方法が複数用意されているので、任意のやり方を選択してRunをクリックで削除実行されます。

  • 用意されている品質を選択
  • 比率を指定
  • ポリゴン数を直接指定

ポリゴン数調整結果

全体を見渡すと、837万も10万もあまり違いがわかりませんが、
近くの文字を見ると10万の時に崩れているのが分かります。(※この文字はTextureではありません)
FPSは50万でも72でていました。

GameObjectのマージ

GameObjectが2041もあるので、マージして1つのGameObjectにし、ドローコールを減らします。

四角いアイコン右の三角の部分をクリック。Mergeを選択。

四角形のアイコンをクリック。複数のGameObjectを選択する必要はなく、親オブジェクトを選択して、
Runをクリックすると子オブジェクト群がマージされます。

マージ前

マージ後

Batchesが759 -> 61に減っていて、効果が確認できます。見た目も全体を見渡すとあまり気になりません。

実機確認動画

これで、Quest3実機でも快適に動くようになったと思います。

Rule Engine

ポリゴン数の削減とGameObjectのマージを紹介しましたが、それらの最適化を予め設定しておいて、
モデルのインポート時に実行してくれる機能があります。それがRuleEngineです。
モデルをインポートした時のInspectorからRuleEngineタブをクリックで開くことができます。

ポリゴン数の削減

Add Action -> Optimize -> Decimate

以下の設定で、対象のポリゴン数を10万にします。

GameObjectのマージ

Add Action -> Hierarchy -> Merge

以下の設定で、GameObjectを1つにします。

最終的には以下のようになります。

まとめ

いろいろな最適化ツールを触ったことがありますが、これはUnity操作に慣れていれば、直感的に作業ができて最適化しやすいツールだと感じました。ドキュメントをあまり読まなくてもやり方が分かりました。Unity Industryの加入という条件がありますが、環境がある方は触ってみて下さい。



ギャップロを運営しているアップフロンティア株式会社では、一緒に働いてくれる仲間を随時、募集しています。 興味がある!一緒に働いてみたい!という方は下記よりご応募お待ちしております。
採用情報をみる