カテゴリ別 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枚の最大サイズは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) マテリアルの数制限 応募する各カテゴリーごとのアセットは、最大1つのマテリアルを使用する必要があります。テクスチャを最大2枚使用できるdr(一着の衣装)カテゴリーでは、最大2つのマテリアルを使用可能です。基本的には1つのマテリアルを使用し、透明(transparent)やファー(fur)など、 属性が異なるシェーダーを使用する場合にのみ 追加で使用してください。 マテリアルごとのマテリアル使用禁止 材質ごとのマテリアルの使用は禁止します。属性が同じ(透明、ファーなど)な複数の材質については、チャンネルマスクマップを使用してテクスチャを表現してください。テクスチャを表現するmetallic、smoothness、ambient occlusionテクスチャのrgbaチャンネルマップをご利用ください。 チャンネル (channel) 割り当てデータ (packed data) 説明 red metallic(メタリック) 数値が1(white)に近いほど金属、0(black)に近いほど非金属として表現される green ambient occlusion (ao) 構造的な陰影および隅々の固定影の表現 blue x x alpha smoothness 面の滑らかさの制御 ㅣ ⚠️ 最適化ガイドラインを必ず守らなければならない本当の理由 単一のアセットをローカル環境でテストする場合、些細なブレンドシェイプデータやガイドラインを超えたテクスチャ解像度が、システムのパフォーマンスに与える影響はごくわずかであるように見えるかもしれません 。しかし、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(推奨)
