カテゴリ別 3Dテクスチャ最適化ガイド
16 分
ㅣ✔️ pot(power of two)規格の遵守 2の累乗解像度の推奨 プラットフォーム内のすべてのテクスチャ資産は、ハードウェアアクセラレーション最適化のために、水平および垂直解像度が2の累乗規格(256×256または512×512)を満たすことを推奨します。 npotの使用を控えることを推奨 2の累乗ではないサイズ(npot)の画像を使用すると、gpuが内部的に最も近い2の累乗サイズに画像を変換してメモリにコピーするため、メモリ容量が2倍無駄になる可能性があります。 ㅣ✔️ テクスチャ密度の一貫性およびuvレイアウト 均一な解像度配分 アバターが服を着た際、特定の部位だけ画質が著しく劣化したりぼやけて見えたりする現象を防ぐ必要があります。そのため、 アセット全体の「テクセル密度(texel density)」を均一に 保ってください。3dモデリングの実際の面積とuvマップ上のサイズ比率が一定であることで、ゲーム内で特定の箇所が歪むことなく、均一で鮮明な画質を維持できます。 視覚的な優先順位の適用 高解像度が求められるディテール部分のuv領域は広く割り当て、露出頻度の低い下部や裏地部分はuv領域を縮小して最適化してください。 ㅣ✔️ テクスチャカテゴリごとに1枚ずつ使用可能 💡 ガイドに明記された「テクスチャ1枚」の基準は、base color 1枚に使用を制限するという意味ではなく、diffuse、normal、channel mapなどをそれぞれ活用することができます。zepetoのテクスチャ審査基準は枚数ではなく 「総容量1mb以下(1mb = 1024kb)」 であるため、1mbの容量以内であれば解像度を調整して複数枚のテクスチャを組み合わせて使用することができます。同様に、toon shaderの補助マップ(normal map、shadow threshold、mask、emissionなど)も全体の1mb容量制限内に含まれていれば使用可能です。 テクスチャ1枚の最大サイズは512x512です。1024の使用は控えることを推奨します。 テクスチャは横と縦の面積(ピクセル数)で計算されます。 512 × 512 = 262,144 ピクセル 1024 × 1024 = 1,048,576 ピクセル(512の正確に4 倍 ) 数値上は2倍のように見えますが、3dエンジンやスマートフォンのグラフィックメモリ(vram)が処理しなければならない データトラフィックと容量は、実に4倍に 急増します。圧縮プラグイン「 」を通しても、メモリ占有率の4倍という差はそのまま維持されます。 最大512の解像度は、データ転送効率を最大化することで、通信環境が良くないユーザーでもスムーズにゲームを楽しめるようにします。 スマートフォンの画面は、pcモニターやテレビに比べて非常に小さいです。小さな画面の中で、自分のアバターが着ている上着やズボンが占める実際の画面ピクセル面積は、それほど大きくありません。 画質が低下するのではないかと心配なら、テクスチャサイズを大きくする代わりに、「 テクセル密度(texel density) 」を活用すべきです。 裏地や服の裾など、見えない部分のuv領域を大胆に削減し、ロゴやボタンといったディテール部分にuv領域を集中させる「視覚的優先順位の配分」をうまく行えば、512解像度の中でも十分に鮮明で高品質な衣装を完成させることができます。 ㅣ✔️ dr(1着の衣装)カテゴリーの例外 テクスチャ2枚まで許可 1着の衣装(dr)カテゴリに限り、 512×512解像度のテクスチャを最大2枚まで 使用できます。 ㅣ✔️ シェーダーおよびマテリアルの最適化 (shader & material) マテリアルの数制限 提出する各カテゴリー의 asset에는、最大1つのmaterialを使用することを推奨します。textureを最大2枚使用できるdr(一着衣装)カテゴリーは、最大2つのmaterialが使用可能です。基本として1つのmaterialを使用し、transparentやfurのような 属性が異なるshaderを使用する場合のみ、追加で使用してください。 材質別のmaterial使用を控えることを推奨 材質別のmaterial使用は控えることを推奨します。属性が同じ(透明、ファーなど)な複数の材質については、チャンネルマスクマップを使用してテクスチャを表現してください。テクスチャを表現するmetallic、smoothness、ambient occlusionテクスチャのrgbaチャンネルマップをご利用ください。 チャンネル (channel) 割り当てデータ (packed data) 説明 red metallic(メタリック) 数値が1(white)に近いほど金属、0(black)に近いほど非金属として表現される green ambient occlusion (ao) 構造的な陰影および隅々の固定影の表現 blue x x alpha smoothness 面の滑らかさの制御 ㅣ ⚠️ 最適化ガイドラインを推奨する理由 単一のassetをローカル環境でテストする際は、些細なblendshapeデータやガイドラインを超過したtexture解像度がシステムパフォーマンスに与える影響は微々たるものに見えるかもしれません。しかし、zepetoは数多くのユーザーが仮想空間に同時多発的に参加する「リアルタイムマルチプラットフォーム環境」であることを一緒に考慮していただきますようお願いいたします。 3dリソースの演算負荷の累積的な増加 データの複製および多重読み込みの負荷: 1つのワールドに30人のプレイヤーが参加し、各アバターが平均5~6個のパーツ(衣装、ヘア、アクセサリーなど)を装備していると仮定した場合、1つの画面でリアルタイムに処理しなければならない独立したアセットデータは数百個に達します。 オーバーヘッドの累積: 1人のクリエイターが妥協して設定したわずかなオーバースペックが、多くのプレイヤーを経由して 数百倍に増幅され、アプリの実行中にシステムに負荷をかけます。 システムの限界値超過とハードウェアのボトルネック 全体的なパフォーマンスの低下 :個別には些細だったドローコール(draw call)の増加、テクセル密度の不均衡によるvramの浪費、複雑なピクセルシェーダーの演算などが一つの空間に蓄積されると、モバイルの限界値を瞬く間に超えてしまいます。 過度な演算は、モバイル端末の 極端な発熱とバッテリー 消費を引き起こし、ゼペット全体に致命的なフレームラグを発生させます。 oom(out of memory)によるアプリの強制終了 致命的なシステムクラッシュ: システムリソースの中でも、メモリ(ram/vram)のオーバーフローは、単に画面が重くなるフレームドロップにとどまりません。 使用可能なメモリを超えた瞬間、モバイルos(ios/android)はデバイスを保護するために、zepetoアプリのプロセスを強制的に完全に 終了(クラッシュ)させます。これは、サービスの信頼性とユーザー体験を破壊する最も致命的な不具合の原因です。 最適化は、仮想エコシステムの共生のための技術的なマナーです。 ゼペットスタジオが提示するカテゴリー別のデータ制限規格は、クリエイターの芸術的表現を制限するための規制ではありません。低スペックのモバイル端末を使用するユーザーまで含めた、快適な実行環境を構築し、クリエイターの皆様が作成した高品質なアセットが、ゲーム内で歪みやバグなく本来のクオリティで安定して動作するよう保護するための、 最低限の技術的な 安全装置です。 参考)アイテムの最適化に向けたカテゴリー別データ すべてのデータは 上限値(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(推奨)
