カテゴリ別 3Dモデリング最適化ガイド
本ガイドラインは、クリエイターの皆様のアイテムがZEPETO内で品質エラーなく円滑に実装されるようサポートし、レンダリング効率を最大化するために作成されました。「必須事項」と「推奨事項」に分けて適用されますので、アイテム制作前に必ず以下の内容をご確認ください。
📌 必須遵守事項
- 新しい必須規定が新設されたり基準が変更されたりする場合、クリエイターの皆様に十分認知していただけるよう事前にお知らせいたします。また、新規規定の強制が必要な場合、正確な強制適用の時期は事前にお伝えする予定です。(例:URP環境の変化に伴う Built-in Shader の使用ガイドなど)
💡 推奨事項
- 推奨事項は、ZEPETOアプリ内でアイテムがエラーなく正常に動作するためにご提案する最適化の基準です。ただし、推奨範囲を逸脱し、実際のアプリ環境で正常な着用や動作が難しいと判断された場合、事後却下処理や販売禁止などの制裁措置を受ける可能性がありますので、可能な限り推奨ガイドを考慮して制作していただきますようお願いいたします。
また、本ガイドラインはより快適なサービス環境のための最適化の推奨基準であり、必ず守らなければならない強制規制事項ではありません。
💡 共通:モデリングの最適化
ㅣ✔️ 全てのカテゴリーでBlendshapeの使用を控えることを推奨
ZEPETOにアップロードされる全てのアイテムには、Blendshapeデータを含めないことを推奨します。これはクリエイターの皆様の精巧な表現を制限しようとするものではなく、全てのユーザーが快適にワールドを楽しめるよう、モバイル環境を最適化するための推奨事項です。
- データ容量の指数関数的な増加(ファイルの過負荷)
- 隠れた座標データの蓄積:ブレンドシェイプは、メッシュの動きや形状の変化を記録するために、多数の頂点(Vertex)の位置移動座標データを内部に追加で記憶する必要があります。
- レイヤーの蓄積現象:このデータは、FBXファイル内部にアニメーションレイヤーが幾重にも積み重なったような構造を持っています。これにより、アセット全体のデータ容量が過度に肥大化してしまいます。
- リアルタイム演算の過負荷(デバイスの発熱およびラグの発生)
- モバイルにおけるリアルタイム演算の限界:複数のアバターが同時に集まる3Dワールド空間において、モバイル端末がこうしたブレンドシェイプデータをリアルタイムで処理することは、非常に大きな負担となります。
- ハードウェア性能の低下:結果としてハードウェアに深刻な過負荷がかかり、これがユーザー端末の極端な発熱やフレームドロップ(ラグ)につながります。
- メモリ不足およびアプリの強制終了(クラッシュ)
- メモリ(RAM)不足現象:ブレンドシェイプを含むアイテムがワールド内に同時に読み込まれると、モバイル端末の限られたRAM容量が瞬時に埋まってしまいます。
- 致命的な OOM エラー:これにより、容量を超える OOM(Out Of Memory)現象が発生し、スマートフォンのシステム(iOS/Android)がデバイスを保護するために Zepeto アプリを強制終了(クラッシュ)させるという最悪の不具合を引き起こします。
- ポリカウント(Polycount)
- Triangle 単位基準:すべてのカテゴリーにおけるトポロジー演算およびデータ制限の基準は、クワッド(Quads)ではなくトライアングル(Triangles)です。
- エクスポート(Export)前の確認:Blender、Maya、3ds MaxなどのツールでFBXエクスポートを行う前に、3Dビューポート内のレイアウトにてTri(Triangle)カウントが カテゴリー別の推奨最大数値以下であるか確認してください。

- バックフェイスカリング(Backface Culling)対応のモデリング
- Backface Culling環境への対応:Zepetoエンジンは、レンダリング演算の最適化のため、基本的にバックフェースカリング方式を採用しています。
- 構造的な仕上げ処理の推奨:アニメーションの再生時に内部が露出する可能性がある衣装の袖の内側、スカートの内部、襟(Collar)などは、Face Normalの方向が裏返って透明に透けて見える現象を防ぐため、面を完全に閉じるか、物理的な厚みを生成するオブジェクトの仕上げモデリングで作業することを推奨します。

- 不良メッシュデータの整理(クリーンアップ)
モデリングデータ内に「不良な部分」が残っていると、グラフィック処理エラーを引き起こし、エンジンのクラッシュ(Crash)の原因となります。提出前に「クリーンアップ(Clean Up)」を行い、こうした不要なデータを必ず整理してください。
- 面(Face)を形成せずに宙に浮いている頂点(Isolated Vertices)や、長さが0のエッジ(Edge)は、不要な演算コストを発生させるため、事前に削除してください。
- Non-Manifold構造の回避:数学的には計算可能ですが、現実世界には存在し得ない構造です。以下の4つの主要なタイプを確認し、モデリング作業の際にクリーンアップを行ってください。 *ノンマニフォールドの4大不具合タイプ
- 1本のエッジ(線)に3つ以上の面が幾何学的に噛み合って隣接しているY字型またはT字型の構造
- 2つ以上の独立した面が、面を共有せず、頂点(Vertex)をたった1つだけ共有して交差して接続された砂時計状の構造
- 完全に閉じたメッシュ空間の内部に、外部からは見えないゴースト面が横切っている構造(主にメッシュの結合・抽出エラーによって発生)
- 連続したメッシュの流れの中で、特定の面の法線ベクトル(Normal Vector)の方向だけが逆に反転し、隣接する面と方向が一致しない状態

- 見えない面の削除
- Base Body Mesh Culling:衣装の表面や装飾品アイテムの付着により内側に配置され、基本アバターボディ(Base Body)によって完全に隠れるMesh面は思い切って削除することを推奨します。
- リソースの確保:不要な内部メッシュを削除すると、GPUへの負荷が軽減され、レンダリング性能が向上します。これはゲームの快適なプレイを助け、メモリ使用率の削減に大きく寄与します。

- 関節部のトポロジー密度の最適化
- 膝、肘、肩のように動きの多い関節部位は、スキニング後にメッシュが自然に曲がるよう、**最低3本以上のループエッジ(Loop Edge)**を配置してください。逆に、形状の変化がほとんどない固定された部位は、不必要に面を細かく分割せず、できるだけシンプルに整理することで、アバターの動作性能を向上させることができます。

ㅣ✔️ 衣類類 (DR, TOP, OTR, BTM)
- 最大トライアングル数 モデリング仕様
- DR(1着の衣装):最大 10,000 トライアングル
- TOP(トップス)/OTR(アウター):最大6,000トライアングル
- BTM(パンツ、スカート):最大5,000トライアングル
- モデリングガイド
- シームライン(Seam Line)の頂点整合:トップス(TOP)とボトムス(BTM)が接するウエストの境界線は、アバターが動く際に最も変形しやすい部分です。そのため、トップスとボトムスの境界面に位置する頂点の数と線の流れ(トポロジー)を、互いに完全に一致させてください。 もし境界面の頂点構造や法線(Normal)の方向がずれていると、アバターが動く際に服の間に隙間ができたり、内部が透けて見える不具合が発生します。境界面のメッシュが1枚の服のように自然に繋がるよう、入念に調整することが重要です。
- 関節部の3-Loopエッジ構造:膝、肘、骨盤のように動きの大きい関節部位は、曲がる際にメッシュがねじれたり歪んだりしやすくなります。このような現象を防ぎ、滑らかに動くようにするため、関節が曲がる部分に3~4本以上のエッジ(Edge)を密に、均等に配置してください。

- 服の端部分の仕上げ(厚みをつける):袖口や裾のような服の端部分は、単に一本の線で終わらせず、内側に布を重ねて、実際の服のように厚みのある仕上がりにしてください。 ただし、服の奥深くに入り込んで外部からは絶対に見えない面は、あえて残しておく必要はありません。こうした隠れた面はきれいに切り取ったり整理したりして、ゲームのパフォーマンスを低下させる不要なポリゴンの浪費を必ず防いでください。

ㅣ✔️ ヘア類 (F_HAIR, M_HAIR)
- 最大トライアングル数 モデリング仕様
- F_HAIR(女性用ヘア):最大 10,000 トライアングル
- M_HAIR(男性用ヘア):最大10,000トライアングル
- モデリングガイド
- 二重構造モデリング(Solid Base Mesh + Alpha plane Mesh):視覚的な完成度とモバイル機器のパフォーマンスの最適化を両立させるため、ポリゴン全体の70%は頭蓋骨を覆う形の閉じた構造の不透明メッシュとしてモデリングし、ボリュームを確保します。 残りの30%のポリゴンは、髪の毛の先端部分、産毛、サイドの髪などを表現するためのアルファプレーン(Alpha plane)形式で、外周に配置してください。
- Z-Fighting防止のための間隔の確保:3Dグラフィックエンジンには、透明な平面が複数重なっていると、カメラの視点によってどの平面が前、後ろにあるかを計算する順序が混乱してしまうという根深い問題があります。 アルファプレーン間の距離が近すぎたり、メッシュの束が互いに交差したりすると、カメラの角度によっては透明な面がちらつくソートの問題が発生します。アルファプレーンメッシュ間には、物理的に最低限の距離を保つようにモデリングしてください。

ㅣ✔️ 体に密着する小道具および変形する小道具類(SOX、GLOVE、NAIL、TAIL、WING、SHOULDER)
- 最大トライアングル数
- SHOULDER(ショルダー):最大 5,000 トライアングル
- GLOVE(手袋)/BAG(バッグ):最大4,500トライアングル
- WING(翼):最大 4,000 トライアングル
- SOX(靴下):最大 3,500 トライアングル
- TAIL (しっぽ): 最大 2,000 トライアングル
- NAIL (ネイルアート): 最大 1,500 トライ
- モデリングガイド
- 指のトポロジー同期:グローブ(GLOVE)およびネイル(NAIL)のモデリングにおいて、指の関節が曲がる位置は、ゼペットのデフォルトガイドダミーのフィンガー ジョイントのオフセット座標と、わずかな誤差もなく一致している必要があります。関節ごとに最低3本のエッジを維持してください。
- 接触面の最適化:ネイルアートや手袋の内側など、指の皮膚に完全に密着し、物理的に100%埋め込まれる内側面は、最適化のために完全に削除してください。

ㅣ✔️ 装着型小物類 (SH、HEADWEAR、EYEMASK、GLASSES、BRACELET、NECKLACE、EARRING、RING)
- 最大トライアングル数
- SH(靴)/HEADWEAR(ヘッドウェア):最大4,000 Tris
- EYEMASK(マスク):最大 3,000 トライアングル
- GLASSES ~ RING(メガネ、ブレスレット、ネックレス、イヤリング、指輪):最大 2,000 トライアングル
- モデリングガイド
- 円柱型モデリングの最適化:指輪(RING)、ブレスレット(BRACELET)、メガネフレーム(GLASSES)など、曲線状のリジッド小道具を作成する際は、最初の円柱型基本形状の側面数(Sides)を6~8個に制限し、ローポリゴン構造を確立してください。 不足している曲面のシルエットは、ソフトエッジおよび法線マップを用いて補う必要があります。

ㅣ✔️ 特殊体型類(MASK、BODY)
基本アバターの固有の外形(頭部および全身メッシュ)そのものを完全に上書きしたり、体型変化を誘導したりする、最高難易度のテクニカルカテゴリーです。
- 最大トライアングル数
- BODY(特殊体型・胴体):最大 10,000 トライアングル
- MASK(特殊体型・顔):最大 5,000 トライアングル
- モデリングガイド
- ネックシームライン(Neck Seam Line)のマッチング:顔マスク(MASK)と体(BODY)が接する首の境界線領域は、ゼペットのデフォルトボディモデリングの頂点インデックス番号、絶対3D座標値、そして頂点法線方向まで完全に一致している必要があります。この溶接ラインが0.001mmでもずれると、首が分離して隙間が見える不具合が発生します。
参考)アイテムの最適化に向けたカテゴリー別データ
すべてのデータは上限値(Maximum Limit)を基準としています。
*DR(セットアップ)を除くすべてのカテゴリーは、テクスチャ1枚を基準とします。
| | Max Triangle Count (Tris) 推奨 / MAX | Max Texture Resolution (Map size) 推奨 / MAX | Max Material (属性ごとの追加シェーダーを許可) |
|---|---|---|---|---|
DR | One-piece outfit | 10,000 | 512x512 (2 images) | 4(推奨) |
TOP | Top | 6,000 | 512x512 | 3(推奨) |
OTR | Outerwear | 6,000 | 512x512 | 3(推奨) |
BTM | Pants, Skirts | 5,000 | 512x512 | 3(推奨) |
SOX | Socks | 3,500 / 4500 | 256x256 / 512x512 | 3(推奨) |
SH | Shoes | 4,000 | 256x256 / 512x512 | 3(推奨) |
F_HAIR | Women's Hair | 10,000 | 256x256 / 512x512 | 3(推奨) |
M_HAIR | Men's Hair | 10,000 | 256x256 / 512x512 | 3(推奨) |
HEADWEAR | Headwear | 4,000 | 256x256 / 512x512 | 3(推奨) |
SHOULDER | Shoulder | 5,000 | 512x512 | 3(推奨) |
GLASSES | Glasses | 2,000 | 256x256 / 512x512 | 3(推奨) |
BRACELET | Bracelet | 2,000 | 256x256 / 512x512 | 3(推奨) |
NECKLACE | Necklace | 2,000 | 256x256 / 512x512 | 3(推奨) |
EARRING | Earrings | 2,000 | 256x256 / 512x512 | 3(推奨) |
BAG | Bag | 4,500 | 256x256 / 512x512 | 3(推奨) |
GLOVE | Glove | 4,500 | 256x256 / 512x512 | 3(推奨) |
RING | Ring | 2,000 | 256x256 / 512x512 | 3(推奨) |
NAIL | Nail Art | 1,500 / 2000 | 256x256 / 512x512 | 3(推奨) |
EYEMASK | Mask | 3,000 | 512x512 | 3(推奨) |
WING | Wing | 4,000 | 512x512 | 3(推奨) |
MASK | Special Face Shapes | 5,000 | 512x512 | 3(推奨) |
BODY | Special Body Types | 10,000 | 512x512 | 3(推奨) |
TAIL | Tail | 2,000 / 3000 | 256x256 / 512x512 | 3(推奨) |