Panduan Optimisasi Pemodelan 3D Berdasarkan Kategori
Panduan ini dibuat untuk membantu item kreator diimplementasikan dengan lancar tanpa kesalahan kualitas di dalam ZEPETO, dan untuk memaksimalkan efisiensi rendering. Panduan ini dibagi menjadi 'Persyaratan Wajib' dan 'Rekomendasi', jadi pastikan untuk memeriksa informasi di bawah ini sebelum membuat item.
📌 Persyaratan Wajib
- Jika peraturan wajib baru ditetapkan atau standar diubah, kami akan memberi tahu kreator sebelumnya agar Anda dapat memahaminya dengan baik. Selain itu, jika penegakan peraturan baru diperlukan, waktu pasti pemberlakuannya akan diumumkan sebelumnya. (Misal: Panduan penggunaan Built-in Shader karena perubahan lingkungan URP, dll.)
💡 Rekomendasi
- Rekomendasi adalah standar optimisasi yang kami sarankan agar item berfungsi normal tanpa kesalahan di dalam aplikasi ZEPETO. Namun, jika dinilai bahwa suatu item sulit dipakai atau dijalankan secara normal di lingkungan aplikasi yang sebenarnya karena melampaui batas yang direkomendasikan, item tersebut dapat dikenakan sanksi seperti penolakan setelahnya atau larangan penjualan. Oleh karena itu, kami mohon agar Anda mempertimbangkan panduan rekomendasi ini semaksimal mungkin saat melakukan pembuatan.
Selain itu, panduan ini merupakan standar optimisasi yang direkomendasikan untuk lingkungan layanan yang lebih nyaman, dan bukan merupakan peraturan wajib yang harus dipatuhi secara ketat.
💡 Umum: Optimalisasi pemodelan
ㅣ✔️ Disarankan untuk membatasi penggunaan Blendshape di semua kategori
Disarankan untuk tidak menyertakan data Blendshape pada semua item yang diunggah ke ZEPETO. Hal ini tidak bermaksud untuk membatasi ekspresi canggih dari para kreator, melainkan sebuah rekomendasi untuk mengoptimalkan lingkungan seluler sehingga semua pengguna dapat menikmati dunia dengan nyaman.
- Peningkatan kapasitas data secara eksponensial (kelebihan beban file)
- Akumulasi data koordinat tersembunyi: Blendshape harus menyimpan data koordinat pergeseran posisi sejumlah besar titik (Vertex) di dalamnya untuk merekam pergerakan dan perubahan bentuk mesh.
- Fenomena akumulasi lapisan: Data ini memiliki struktur yang mirip dengan lapisan animasi yang bertumpuk di dalam file FBX. Hal ini menyebabkan ukuran data keseluruhan aset menjadi terlalu besar.
- Kelebihan beban komputasi real-time (menyebabkan perangkat panas dan lag)
- Keterbatasan pemrosesan real-time pada perangkat seluler: Memproses data blend shape ini secara real-time di ruang dunia 3D tempat banyak avatar berkumpul secara bersamaan merupakan beban yang sangat berat bagi perangkat seluler.
- Penurunan kinerja perangkat keras: Akibatnya, perangkat keras mengalami beban berlebih yang parah, yang menyebabkan perangkat pengguna menjadi sangat panas dan terjadi penurunan frame rate (lag).
- Kelebihan memori dan aplikasi terpaksa ditutup (Crash)
- Kekurangan memori (RAM): Ketika item yang mengandung blend shape dimuat secara bersamaan di dalam dunia game, kapasitas RAM perangkat seluler yang terbatas akan terisi dalam sekejap.
- Kesalahan OOM yang fatal: Hal ini menyebabkan terjadinya fenomena OOM (Out Of Memory) yang melebihi kapasitas, dan memicu masalah terburuk di mana sistem ponsel cerdas (iOS/Android) memaksa aplikasi Zepeto untuk ditutup (Crash/terputus) demi melindungi perangkat.
- Jumlah Poligon (Polycount)
- Standar Unit Triangle: Standar perhitungan topologi dan batasan data untuk semua kategori didasarkan pada Segitiga (Triangles), bukan Kuadran (Quads).
- Pemeriksaan sebelum ekspor: Sebelum melanjutkan ekspor FBX di alat seperti Blender, Maya, 3ds Max, dll., terkait jumlah Tri (Triangle) pada tata letak di dalam viewport 3D, harap periksa apakah nilainya berada di bawah atau sama dengan nilai maksimum yang direkomendasikan untuk masing-masing kategori.

- Pemodelan yang mendukung Backface Culling
- Penyesuaian terhadap lingkungan Backface Culling: Mesin Zepeto secara default mengadopsi metode rendering sisi belakang (Backface Culling) untuk mengoptimalkan perhitungan rendering.
- Rekomendasi penyelesaian struktural: Untuk area di mana bagian dalam dapat terekspos saat animasi dijalankan, seperti bagian dalam lengan pakaian, bagian dalam rok, dan kerah (Collar), disarankan untuk menutup permukaan sepenuhnya atau bekerja dengan pemodelan penyelesaian objek yang menciptakan ketebalan fisik untuk mencegah fenomena tampak transparan akibat arah Face Normal yang terbalik.

- Pembersihan Data Mesh yang Rusak (Clean Up)
Jika masih ada 'potongan yang rusak' dalam data pemodelan, hal ini akan memicu kesalahan pemrosesan grafis dan menjadi penyebab utama crash mesin. Pastikan untuk membersihkan data yang tidak diperlukan ini melalui 'Clean Up' sebelum pengiriman.
- Vertex yang terisolasi (Isolated Vertices) yang mengambang di udara tanpa membentuk permukaan (Face) atau tepi (Edge) dengan panjang 0 akan menimbulkan beban komputasi yang tidak perlu, jadi harap hapus terlebih dahulu.
- Menghindari struktur Non-Manifold: Struktur ini dapat dihitung secara matematis, tetapi tidak mungkin ada di dunia nyata. Periksa 4 jenis utama di bawah ini dan lakukan Clean Up saat melakukan pemodelan. *4 jenis cacat Non-Manifold
- Struktur berbentuk huruf Y atau T di mana tiga atau lebih bidang saling bertautan secara geometris pada satu tepi (garis)
- Struktur berbentuk jam pasir di mana dua atau lebih bidang independen terhubung hanya melalui satu titik sudut (Vertex) tanpa berbagi bidang
- Struktur di mana terdapat permukaan hantu yang tidak terlihat dari luar dan melintasi bagian dalam ruang mesh yang tertutup sepenuhnya (umumnya terjadi akibat kesalahan penggabungan/ekstraksi mesh)
- Keadaan di mana arah vektor normal (Normal Vector) dari suatu bidang tertentu dalam aliran mesh yang berurutan terbalik, sehingga tidak sejajar dengan bidang yang berdekatan

- Menghapus permukaan yang tidak terlihat
- Base Body Mesh Culling: Karena ditempatkan di bagian dalam akibat pemasangan permukaan luar pakaian atau item aksesori, disarankan untuk dengan berani menghapus permukaan Mesh yang tertutup sepenuhnya oleh tubuh avatar dasar (Base Body).
- Penghematan sumber daya: Menghapus mesh bagian dalam yang tidak diperlukan akan mengurangi beban GPU sehingga meningkatkan kinerja rendering. Hal ini membantu pengalaman bermain game yang lebih lancar dan sangat membantu mengurangi penggunaan memori.

- Optimalisasi Kepadatan Topologi Sendi
- Pada bagian sendi yang banyak bergerak seperti lutut, siku, dan bahu, harap letakkan **setidaknya 3 garis tepi loop (Loop Edge)** agar mesh dapat melengkung secara alami setelah proses skinning. Sebaliknya, pada bagian yang tetap dan hampir tidak mengalami perubahan bentuk, jangan membagi permukaan menjadi bagian-bagian kecil yang tidak perlu; sebaliknya, atur sedapat mungkin secara sederhana agar kinerja animasi avatar dapat ditingkatkan.

ㅣ✔️ Pakaian (DR, TOP, OTR, BTM)
- Spesifikasi Pemodelan Jumlah Segitiga Maksimum
- DR (satu set pakaian): Maks. 10.000 Tris
- TOP (atasan) / OTR (jaket): Maks. 6.000 segitiga
- BTM (celana, rok): Maks. 5.000 Tris
- Panduan Pemodelan
- Penyelarasan Vertex Garis Sambungan (Seam Line): Garis batas pinggang tempat atasan (TOP) dan bawahan (BTM) bertemu adalah bagian yang paling sering mengalami distorsi saat avatar bergerak. Oleh karena itu, pastikan jumlah vertex dan alur garis (topologi) pada permukaan batas antara atasan dan bawahan selaras secara sempurna. Jika struktur titik sudut atau arah normal pada permukaan batas tidak sejajar, akan terjadi cacat di mana pakaian terpisah atau muncul celah saat avatar bergerak, sehingga bagian dalam terlihat. Kuncinya adalah menyesuaikan dengan cermat agar mesh pada permukaan batas terhubung secara alami seperti satu potong pakaian.
- Struktur tepi 3-Loop pada bagian sendi: Bagian sendi yang bergerak luas, seperti lutut, siku, dan pinggul, rentan mengalami distorsi atau penyimpangan pada mesh saat ditekuk. Untuk mencegah hal ini dan memastikan gerakan yang mulus, silakan atur tepi (Edge) secara merata dengan kepadatan 3–4 baris atau lebih pada area sendi yang melipat.

- Penyelesaian bagian ujung pakaian (menciptakan ketebalan): Bagian ujung pakaian seperti lengan baju atau keliman bawah jangan hanya diselesaikan dengan satu garis saja, tetapi tambahkan lapisan kain ke bagian dalam agar terlihat tebal seperti pakaian asli. Namun, bagian-bagian kain yang masuk jauh ke dalam pakaian dan sama sekali tidak terlihat dari luar tidak perlu dipertahankan. Potong atau rapikan bagian-bagian tersembunyi ini dengan rapi untuk mencegah pemborosan poligon yang tidak perlu yang dapat menurunkan performa game.

ㅣ✔️ Jenis rambut (F_HAIR, M_HAIR)
- Spesifikasi Pemodelan Jumlah Segitiga Maksimum
- F_HAIR (Rambut Wanita): Maks. 10.000 Tris
- M_HAIR (Rambut Pria): Maks. 10.000 Tris
- Panduan Pemodelan
- Pemodelan Struktur Ganda (Solid Base Mesh + Alpha plane Mesh): Untuk mencapai kesempurnaan visual dan mengoptimalkan kinerja perangkat seluler secara bersamaan, 70% dari seluruh poligon dimodelkan sebagai mesh tertutup yang tidak tembus pandang yang membungkus kerangka kepala untuk memastikan volume. Sisanya 30% poligon, silakan letakkan di bagian luar dalam bentuk alpha plane untuk menggambarkan ujung rambut, rambut halus, dan rambut samping.
- Menjaga jarak untuk mencegah Z-Fighting: Mesin grafis 3D memiliki masalah kronis di mana, jika beberapa lapisan transparan bertumpuk, urutan perhitungan mana yang berada di depan dan di belakang menjadi kacau tergantung pada sudut pandang kamera. Jika jarak antar Alpha plane terlalu berdekatan atau mesh untaian saling bersilangan, masalah penyortiran yang menyebabkan permukaan transparan berkedip akan terjadi tergantung pada sudut kamera. Silakan membuat model dengan menjaga jarak fisik minimal antar mesh Alpha plane.

ㅣ✔️ Aksesori yang menempel erat pada tubuh dan dapat berubah bentuk (SOX, GLOVE, NAIL, TAIL, WING, SHOULDER)
- Jumlah Segitiga Maksimum
- SHOULDER (Bahu): Maks. 5.000 Tris
- GLOVE (sarung tangan) / BAG (tas): Maks. 4.500 Tris
- WING (sayap): Maks. 4.000 Tris
- SOX (Kaus Kaki): Maks. 3.500 Tris
- TAIL (ekor): Maks. 2.000 Tris
- NAIL (Seni Kuku): Maks. 1.500 Tris
- Panduan Pemodelan
- Sinkronisasi topologi jari: Saat membuat model sarung tangan (GLOVE) dan kuku (NAIL), posisi tekukan sendi jari harus sama persis—tanpa selisih sedikit pun—dengan koordinat offset sendi jari (Finger Joint) pada dummy panduan dasar Zepeto. Pastikan untuk mempertahankan minimal 3 garis tepi per sendi.
- Optimalisasi Permukaan Kontak: Permukaan bagian dalam yang bersentuhan sepenuhnya dengan kulit jari dan tertanam secara fisik 100%, seperti pada desain kuku dan bagian dalam sarung tangan, harus dihapus sepenuhnya untuk optimalisasi.

ㅣ✔️ Aksesori yang dapat dikenakan (SH, HEADWEAR, EYEMASK, GLASSES, BRACELET, NECKLACE, EARRING, RING)
- Jumlah Segitiga Maksimum
- SH (Sepatu) / HEADWEAR (Aksesori Kepala): Maks. 4.000 Tris
- EYEMASK (masker): Maks. 3.000 Tris
- GLASSES ~ RING (kacamata, gelang, kalung, anting, cincin): Maks. 2.000 Tris
- Panduan Pemodelan
- Optimalisasi Pemodelan Silinder: Saat membuat properti kaku berbentuk lengkung seperti cincin (RING), gelang (BRACELET), bingkai kacamata (GLASSES), batasi jumlah sisi (Sides) bentuk dasar silinder awal antara 6 hingga 8 untuk mendapatkan struktur poligon rendah. Siluet permukaan yang kurang harus ditutupi dengan soft edge dan normal map.

ㅣ✔️ Tipe bentuk tubuh khusus (MASK, BODY)
Ini adalah kategori teknis dengan tingkat kesulitan tertinggi yang menutupi sepenuhnya penampilan asli avatar dasar (mesh kepala dan seluruh tubuh) atau memicu perubahan bentuk tubuh.
- Jumlah Segitiga Maksimum
- BODY (tubuh tipe khusus): Maks. 10.000 Tris
- MASK (Wajah Tipe Tubuh Khusus): Maks. 5.000 Tris
- Panduan Pemodelan
- Pencocokan Garis Sambungan Leher (Neck Seam Line): Area garis batas leher di mana topeng wajah (MASK) dan tubuh (BODY) bertemu harus sepenuhnya cocok dengan nomor indeks simpul, nilai koordinat 3D absolut, serta arah normal simpul dari pemodelan tubuh dasar Zepeto. Jika garis penyambungan ini bergeser sekecil 0,001 mm saja, leher akan terpisah dan menimbulkan cacat berupa celah yang terlihat.
Catatan) Data per kategori untuk optimalisasi item
Semua data didasarkan pada batas maksimum (Maximum Limit).
*Rekomendasi / MAKS (또는 Rekomendasi / Maksimal)
| | Max Triangle Count (Tris) Rekomendasi / MAX | Max Texture Resolution (Map size) Rekomendasi / MAX | Max Material (diperbolehkan menggunakan shader tambahan per atribut) |
|---|---|---|---|---|
DR | One-piece outfit | 10,000 | 512x512 (2 images) | 4(Rekomendasi) |
TOP | Top | 6,000 | 512x512 | 3(Rekomendasi) |
OTR | Outerwear | 6,000 | 512x512 | 3(Rekomendasi) |
BTM | Pants, Skirts | 5,000 | 512x512 | 3(Rekomendasi) |
SOX | Socks | 3,500 / 4500 | 256x256 / 512x512 | 3(Rekomendasi) |
SH | Shoes | 4,000 | 256x256 / 512x512 | 3(Rekomendasi) |
F_HAIR | Women's Hair | 10,000 | 256x256 / 512x512 | 3(Rekomendasi) |
M_HAIR | Men's Hair | 10,000 | 256x256 / 512x512 | 3(Rekomendasi) |
HEADWEAR | Headwear | 4,000 | 256x256 / 512x512 | 3(Rekomendasi) |
SHOULDER | Shoulder | 5,000 | 512x512 | 3(Rekomendasi) |
GLASSES | Glasses | 2,000 | 256x256 / 512x512 | 3(Rekomendasi) |
BRACELET | Bracelet | 2,000 | 256x256 / 512x512 | 3(Rekomendasi) |
NECKLACE | Necklace | 2,000 | 256x256 / 512x512 | 3(Rekomendasi) |
EARRING | Earrings | 2,000 | 256x256 / 512x512 | 3(Rekomendasi) |
BAG | Bag | 4,500 | 256x256 / 512x512 | 3(Rekomendasi) |
GLOVE | Glove | 4,500 | 256x256 / 512x512 | 3(Rekomendasi) |
RING | Ring | 2,000 | 256x256 / 512x512 | 3(Rekomendasi) |
NAIL | Nail Art | 1,500 / 2000 | 256x256 / 512x512 | 3(Rekomendasi) |
EYEMASK | Mask | 3,000 | 512x512 | 3(Rekomendasi) |
WING | Wing | 4,000 | 512x512 | 3(Rekomendasi) |
MASK | Special Face Shapes | 5,000 | 512x512 | 3(Rekomendasi) |
BODY | Special Body Types | 10,000 | 512x512 | 3(Rekomendasi) |
TAIL | Tail | 2,000 / 3000 | 256x256 / 512x512 | 3(Rekomendasi) |