← チュートリアル目次へ戻る | ← 第11章: Humanoid Compiler(Document からの Pure Humanoid 生成と確認)
本章では、第11章で作成した Pure Humanoid(BasicFemale.prefab および ShapeSyncDocumentA.asset)を引き継ぎ、Atlas Editor を使用して複数のパーツテクスチャやマテリアルを統合する Atlas Schema を作成し、描画負荷(Draw Call)と VRAM 使用量を低減したモデルを再生成する手順を解説します。
Assets/ShapeSync/Generated/BasicFemale.prefab)と Document A(Assets/ShapeSync/ShapeSyncDocumentA.asset)を使用します。Assets/ShapeSync/Compiler/AtlasA/ を使用します。page 0, page 1 等)に分けて割り当てます。Tools > zgock > ShapeSync > Atlas Editor をクリックして開きます。Figure: Project ウィンドウの Assets/ShapeSync/Generated/BasicFemale.prefab をドラッグ&ドロップして指定します。Document: 第10章で保存した Assets/ShapeSync/ShapeSyncDocumentA.asset をドラッグ&ドロップして指定します。Page Size: ポップアップで 2048 が選択されていることを確認します(既定値: 2048)。
▲図 12-1: Atlas Editor ウィンドウで Figure(BasicFemale)、Document(ShapeSyncDocumentA)、および Page Size(2048)を指定した初期状態
List Entries ボタンをクリックします。Entries)と、各パーツの元テクスチャサイズが読み込まれて表示されます(初期状態では全 Entry が Page: 0、Occupancy: ignore となっています)。
[!IMPORTANT] スナップショット仕様について:
List Entriesの結果はクリック時点のスナップショットです。以後、プロジェクト側で Document や元アセットを変更しても自動更新されません。元アセットを変更した場合は、再度List Entriesをクリックしてください。
▲図 12-2: List Entries 実行後に読み込まれた Document A 由来の Entry 一覧と各パーツの元テクスチャサイズ
各 Entry に対してどのページ(Page)のどれくらいの面積・向き(Occupancy)を割り当てるかを設定します。
素体側の各パーツを Page 0 にまとめます。各 Entry の Page 欄に 0 を入力し、Occupancy ポップアップから以下の専有面積を選択します。
| Entry 名 | 元サイズ | Page | Occupancy(専有面積・向き) |
|---|---|---|---|
Body |
2048 x 2048 |
0 |
1/4 |
Brow |
1024 x 256 |
0 |
1/16 Horizontal |
EyeWhite |
1024 x 512 |
0 |
1/32 Horizontal |
Eyelash |
1024 x 256 |
0 |
1/16 Horizontal |
Eyeline |
1024 x 256 |
0 |
1/16 Horizontal |
Face |
1024 x 1024 |
0 |
1/4 |
Highlight |
1024 x 512 |
0 |
1/8 Horizontal |
Iris |
1024 x 512 |
0 |
1/8 Horizontal |
Mouth |
512 x 512 |
0 |
1/64 |
▲図 12-3-1: Page 0(素体パーツ前半: Body, Brow, EyeWhite, Eyelash, Eyeline)の Page 番号および Occupancy 設定
▲図 12-3-2: Page 0(素体パーツ後半: Face, Highlight, Iris, Mouth)の Page 番号および Occupancy 設定
衣装側の各パーツを Page 1 にまとめます。各 Entry の Page 欄に 1 を入力し、Occupancy を設定します。
| Entry 名 | 元サイズ | Page | Occupancy(専有面積・向き) |
|---|---|---|---|
Shoes1/Shoes1 |
512 x 1024 |
1 |
1/8 Vertical |
Skirt1/Skirt1 |
1024 x 512 |
1 |
1/8 Horizontal |
Tops1/Tops1 |
2048 x 2048 |
1 |
1/4 |
Hair1_*)髪型パーツは UV 構造の都合上、アトラス統合を行うと UV 交錯エラーが発生するため、統合対象外(ignore)に設定します。
| Entry 名 | 元サイズ | Page | Occupancy |
|---|---|---|---|
Hair1/Hair1 |
512 x 1024 |
0 |
ignore |
Hair1/Hair2 |
512 x 1024 |
0 |
ignore |
 *▲図 12-4: Page 1(衣装パーツ群: Shoes1, Skirt1, Tops1)の割当と Hair1(Hair1/Hair1, Hair1/Hair2)の ignore(対象外)設定
Dry Run ボタンをクリックします。Layout Preview(Page Extent 2048 および各パーツの配置座標・サイズ一覧)が表示され、情報ボックスに Atlas Dry Run succeeded. と表示されます。Generate Atlas ボタンが有効化されます。
[!NOTE] 設定変更時の再 Dry Run について:
Dry Runは配置の検証のみを行い、アセットの作成は行いません。OccupancyやPage Sizeなどの設定を変更するとGenerate Atlasボタンは再び無効化されます。変更後は必ず再度Dry Runをクリックしてください。
▲図 12-7: Dry Run 実行後に Layout Preview が生成され「Atlas Dry Run succeeded.」と表示され Generate Atlas ボタンが有効化した状態
Dry Run 成功後、ウィンドウ下部の Generate Atlas ボタンをクリックします。Save Atlas Schema ダイアログが表示されたら、Assets > ShapeSync フォルダー内にファイル名 AtlasSchema.asset として保存します。Atlas Schema saved. と表示され、Project ウィンドウの Assets/ShapeSync/ 直下に AtlasSchema.asset が生成されたことを確認します。
▲図 12-8-1: Save Atlas Schema ダイアログで Assets/ShapeSync/ 直下に AtlasSchema.asset を指定して保存する操作
▲図 12-8-2: Atlas Schema saved. メッセージの表示と Project ウィンドウ内での AtlasSchema.asset 生成確認
作成した Atlas Schema を使用して、Humanoid Compiler で Pure Humanoid を再生成します。
Tools > zgock > ShapeSync > Humanoid Compiler を開きます。Figure: Assets/ShapeSync/Generated/BasicFemale.prefabDocument: Assets/ShapeSync/ShapeSyncDocumentA.assetAtlas Schema (Optional): 手順 4 で保存した Assets/ShapeSync/AtlasSchema.asset を指定します。Transport VRM Physics: VRM 連携環境の場合は ON(VRM Asset Relative Folder: VRM)にします。
▲図 12-9: Humanoid Compiler で Figure、Document、および Atlas Schema(AtlasSchema)を指定し VRM Physics を ON に設定した状態
Generate ボタンをクリックします。Select Empty Pure Humanoid Output Folder ダイアログで、新規または空のフォルダー Assets/ShapeSync/Compiler/AtlasA を選択します。
[!IMPORTANT] 第11章で使用した
DocumentAフォルダーとは混ざらないよう、必ず別の空フォルダーAtlasAを指定してください。
Progress: Completed、Output: Assets/ShapeSync/Compiler/AtlasA と表示されたことを確認します。
▲図 12-10-1: Select Empty Pure Humanoid Output Folder ダイアログでの新規空フォルダー AtlasA の選択
▲図 12-10-2: Humanoid Compiler でのコンパイル完了(Completed)表示と Project ビューに出力された AtlasA 接頭語のアセット群
Assets > ShapeSync > Compiler > AtlasA を開きます。AtlasA)を接頭語とする以下の生成物を確認します。
AtlasA.prefabAtlasA.assetAtlasA_avatar.assetAtlasA_atlas0_basecolor.png、AtlasA_atlas0_normal.png、AtlasA_atlas1_basecolor.png などHair1 由来のテクスチャなど
▲図 12-11-1: Project ビューの AtlasA_atlas0_basecolor(Page 0 アトラス画像: 素体パーツ群)のプレビュー表示と Scene 上の AtlasA モデル
▲図 12-11-2: Project ビューの AtlasA_atlas1_basecolor(Page 1 アトラス画像: 衣装パーツ群)のプレビュー表示と Scene 上の AtlasA モデル
Assets/ShapeSync/Compiler/AtlasA/AtlasA.prefab を Scene ビューにドラッグ&ドロップして配置します。Animator に Walking.controller を割り当て、Play Mode で再生します。歩行アニメーションおよび SpringBone 揺れ物が破綻なく滑らかに連動動作することを確認します。
▲図 12-12: Play Mode 中に Walking.controller による歩行アニメーションおよび VRM Physics(髪・スカートの揺れ物)が正常に連動動作している状態
Shoes1/Shoes1: source 512 x 1024 does not match Atlas cell 1024 x 1024. PLACE will resample the source into this cell.Occupancy で指定したセルの向き(Horizontal / Vertical / 正方形 1/4 等)が一致していない場合に表示されます。1/8 Vertical、横長なら 1/8 Horizontal)を選び直してください。
▲図 12-5: Shoes1/Shoes1 に 1/4 を指定したことで表示されたアスペクト比率不一致・リサンプルに関する警告(黄色 HelpBox)
AtlasUv0OutOfRange エラーが表示されるAtlas UV0 must be finite and within [0,1]. owner=Hair1;materialId=Hair1/Hair1;submesh=0;pageIndex=1;cause=Hair1/Hair1 や Hair1/Hair2)など、UV タイリングや交錯を持つマテリアルを Atlas 対象に含めて Dry Run を実行した場合に発生します。Hair1/Hair1 および Hair1/Hair2 の Occupancy を ignore に設定し、再度 Dry Run を実行してください。
▲図 12-6: Hair1/Hair1 を Atlas 対象に含めたことで Dry Run 時に発生した AtlasUv0OutOfRange エラー(赤色 HelpBox)
Occupancy や Page Size などの設定値を変更すると直前の Dry Run 検証状態が無効化される仕様です。Dry Run ボタンをクリックして配置を検証してください。Dry Run が成功すると Generate Atlas ボタンが再び有効化されます。← チュートリアル目次へ戻る | ← 第11章: Humanoid Compiler(Document からの Pure Humanoid 生成と確認)