はじめに
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に赤枠で囲った部分が追加されます。
これがツールになります。

- モデルのインポート
- 法線、向きの調整
- ポリゴンのリダクション
- メッシュのリダクション
- GameObjectのマージ、解体
- ピボットの調整
- UV作成
- コライダー作成
サンプル使用モデル
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の加入という条件がありますが、環境がある方は触ってみて下さい。








