nyarla/アバター改変と軽量化の流れ
nyarla.iconがいつもやっているアバター改変と軽量化の流れです
更新情報
2026年2月25日 - 全面的な書き直し
2025年12月16日 - 初版
前提
アバターを改変する環境に Linux(NixOS)を利用している
アバターを改変する Unity の Project 管理には ALCOM を用いる
現在のところ利用するアバターはキプフェルのみ
事前準備
アバターの Project 関係のファイルは Git を使ってバージョン管理する
Git を利用するのは、ファイルの変更の追跡やファイルへの変更取り消しなどを容易に行うため
Windows で Git を利用する場合、Git for windows や MSYS2 などの導入が必要
Unity のプロジェクトを Git で管理する場合、Git で管理しないファイルは .gitignore で管理対象から外す
アバターを管理するディレクトリは noexec フラグを立てていないマウントポイントを用いる
noexec が設定されたマウントポイントに作業ディレクトリを作ると、アバターのビルド時に一部の処理が失敗する
これについては Linux VR Advenctures Wiki のこの項目に書かれている
これが引き起されると立体視が崩れ、VR モードで見ると左右へ二重に分裂したアバターが発生する
nyarla.icon はこの罠に引っ掛かりアバター改変珍百景として記念撮影されました
-
アバター作成の流れ(キプフェル)
まず Kipfel_kisekae をベースに、デフォルトの服と髪型、アクセサリーなどをすべて無効化した全裸の素体を作る
この際、髪や尻尾などについていた Physbone や Phybone Colider も非表示にした上で EditorOnly に設定する
次に全裸アバタの Prefab Variant を作り、そこへ着せたい衣装や髪型を追加していく
この際に Moduler Avatar を適用し、衣装の位置合わせなどを行なう
最期に一通りの調整が終わったら、作業ディレクトリのファイル状態を git commit する
こうすることで次に行なう軽量化での作業失敗に対してもリカバリーが出来るようになる
アバターの軽量化の事前準備
まず事前準備として下記のパッケージを導入しておく
編集作業の効率化
lilAvatarUtils
anatawa12's gists pack
軽量化のためのコンポーネント
AAO: Avatar Optimizer
Meshia Mesh Simplification
TexTransTool
アバターのルートの Game Object に追加するコンポーネント
AAO Trace And Optimize を追加する
設定はほぼデフォルトのままで スキンメッシュレンダラーの統合する のチェックは外している
参考画像
https://scrapbox.io/files/699ea76bf1c53c1732153d54.png
スキンメッシュレンダラーの統合する のチェックを外す理由は、スキンメッシュの統合を手動で行なっているため
また メッシュ統合のために MA Mesh Settings を追加している
参考画像
https://scrapbox.io/files/699ea7eef1c53c1732154080.png
これが抜けていると NDMF Console などでエラーが報告されるため、それ用の対策
ルートボーンとアンカーオーバーライドの基準点については、Body の Skinned Mesh Renderer を参考に参考にした
参考画像
https://scrapbox.io/files/699ea8a0f1c53c1732154268.png
上記が Body の Skined Mesh Renderer 設定
各種 Game Object
原則として、利用しない Game Object については EditorOnly にして非表示にする
また各 Game Object に Blendshape がある場合、不要なものは AAO Remove Mesh By BlendShape で削除している
参考画像
https://scrapbox.io/files/699ea998f1c53c17321543f7.png
AvatarDynamics の最適化
基本は使わない PhysBone と Physbone Colider を非表示にして EditorOnly にする
参考画像
https://scrapbox.io/files/699eaa72f1c53c1732154576.png
メッシュとマテリアルのマージ
これについては AAO Merge Skinned Mesh と TTT Atlas Texture を併用する
各種ゲームオブジェクトはアバターのルート以下に設定する
参考画像
https://scrapbox.io/files/699eae34f1c53c1732154de7.png
まず AAO Merge Skinned Mesh にはすべての Skined Mesh Renderer と Mesh Renderer を追加する
また マテリアルの統合 にはすべてチェックを入れる
参考画像
https://scrapbox.io/files/699eb0a1f1c53c173215551d.png
次に TTT Atlas Texture ですべてのマテリアル を編集対象にして、マージ可能なマテリアルを一つにまとめていく
参考画像
https://scrapbox.io/files/699eac29f1c53c17321548db.png
まとめる際の基準は次の通り
共通のシェーダー設定を持っても問題のないマテリアルをグループする
これは例えば同系色の服をまとめたり、体や顔、髪の毛などをまとめる
基準としては、Liltoon のシェーダー名が同じものをまとめるイメージ
なお、アウトラインを含む場合、同一色のアウトラインでも問題ない場合はまとめる対象となる
次にグループ化したマテリアルに MergeReferenceMaterial を設定する
この MergeReferenceMaterial は既存のマテリアルを複製し、テクスチャを空にしたものを用いる
参考画像
https://scrapbox.io/files/699eadbff1c53c1732154cfa.png
最期に ForceSetTexture にチェックを入れる
参考画像
https://scrapbox.io/files/699eb181f1c53c173215568c.png
これが抜けていると、アバターのビルド時にアバターのテクスチャが全部抜けますnyarla.icon
その他
テクスチャ画像については今のところテクスチャサイズを変える程度の変更のみです
Avatar Compressor を使うと良さそうな気がしますが、今のところ使っていません