Pencahayaan Berdasarkan Fisika (PBR) memungkinkan Anda mewakili pencahayaan dan bayangan yang realistis dengan menggunakan beberapa jenis gambar tekstur, atau peta, pada satu objek. Menggabungkan beberapa peta tekstur dapat lebih akurat mensimulasikan warna, kekasaran, dan reflektivitas dalam any lingkungan pencahayaan serta dapat meningkatkan elemen visual dari aset dan lingkungan Anda.


Berbagai aplikasi dan alur kerja tersedia untuk membuat tekstur PBR. Anda dapat menggunakan ini selama fase pemodelan dan tekstur dari pembuatan objek 3D kustom, dengan syarat Roblox Studio mendukung peta tekstur spesifik yang Anda gunakan.
Panduan ini memberikan petunjuk tentang mengatur objek mesh Anda untuk menggunakan peta tekstur PBR, dan menggambarkan kasus penggunaan umum dan praktik terbaik untuk peta tekstur PBR yang didukung oleh Roblox. Saat membuat permukaan Anda sendiri, lihat referensi material untuk nilai material umum, perbandingan gambar, dan contoh pakaian.
Aktifkan penampilan permukaan
Anda dapat menambahkan tekstur PBR ke setiap MeshPart dengan menambahkan objek SurfaceAppearance yang akan menimpa tekstur yang awalnya ditugaskan. Secara umum, Anda tidak dapat mengubah properti SurfaceAppearance melalui skrip selama permainan karena mesin memerlukan beberapa pemrosesan awal untuk menampilkan grafik ini. Mirip dengan menambahkan tekstur dasar, setiap gambar tekstur harus menunjuk ke ID aset gambar yang diunggah yang sesuai.
Untuk mengaktifkan penampilan permukaan untuk MeshPart:
Di jendela Explorer, arahkan kursor ke MeshPart dan klik tombol ⊕.
Masukkan SurfaceAppearance dari menu konteks.

Ketika Anda siap untuk menambahkan peta tekstur ke objek SurfaceAppearance, Anda dapat mengklik setiap properti peta di jendela Properties dan memasukkan ID aset.
Peta tekstur
Studio saat ini mendukung 4 jenis peta tekstur PBR: warna, normal, roughness, dan metalness. Masing-masing peta ini sesuai dengan aspek penting dari penampilan permukaan objek. Peta tekstur hanya mengubah penampilan visual dan tidak mempengaruhi geometri dari objek MeshPart.
Lihat contoh berikut untuk gambaran peta tekstur yang didukung oleh Roblox dan sumber daya tambahan:
Properti ColorMap mengatur data warna permukaan, termasuk transparansi yang ada di peta. Lihat warna (albedo) untuk informasi tambahan.



Warna (albedo)
warna, atau albedo, peta menentukan warna tekstur Anda dan terdiri dari sebagian besar informasi warna dengan sedikit atau tanpa informasi pencahayaan atau tekstur. Untuk penyesuaian tambahan, Anda juga dapat menambahkan transparansi dalam tekstur albedo Anda dengan menambahkan opasitas ke gambar peta Anda.
Modus alpha
Untuk objek yang memerlukan bagian transparansi parsial atau lengkap, seperti rumput, daun, renda, atau stiker seperti kotoran atau grunge, Anda dapat menggunakan berbagai modus alpha untuk menerapkan transparansi pada peta warna Anda. Jika format gambar peta warna Anda mendukung saluran alpha, Anda dapat menerapkan peta alpha grayscale di mana 0.0 adalah transparan dan 1.0 adalah opak. Demikian pula, ketika menggunakan format gambar seperti .png, setiap opasitas di peta warna diterapkan sebagai transparansi pada aset.
Anda dapat menerapkan transparansi dalam dua perilaku berbeda dengan menetapkan nilai berikut untuk AlphaMode:
- Overlay — Menumpuk ColorMap di atas MeshPart.Color mesh yang mendasari. Peta warna menggunakan mode overlay mengungkapkan warna dasar dari mesh di mana saja transparansi ada. Ini adalah pengaturan default.
- Transparency — Menghapus mesh yang terlihat berdasarkan transparansi di ColorMap. Ini menghasilkan mesh menjadi transparan dan tidak mengungkapkan warna mesh asli setiap kali transparansi ada.
Opaque
Anda dapat menggunakan mode Enum.AlphaMode.Opaque untuk mengabaikan saluran alpha dari ColorMap sepenuhnya. Dalam hal ini nilai alpha dianggap 1 (sepenuhnya opak).
Contoh berikut menunjukkan bagaimana cara kerja mode Opaque menggunakan objek putih sebagai referensi:


Overlay
Anda dapat menggunakan Enum.AlphaMode.Overlay untuk mengungkapkan bagian dari warna asli mesh. Karena area transparan dari peta warna mengekspos warna yang mendasarinya, Anda dapat merancang peta tekstur unik yang sebagian atau sepenuhnya mengungkapkan properti warna dari Color untuk nada kulit kustom atau situasi lain dengan warna unik.
Contoh berikut menunjukkan bagaimana cara kerja mode Overlay menggunakan bola putih sebagai referensi:


Contoh berikut menggunakan mode Overlay untuk karakter kustom, mengungkapkan warna kulit asli karakter:


Lihat nada kulit kustom untuk detail tambahan tentang mengoptimalkan overlay untuk kulit dan aplikasi serupa.
Transparansi
Anda dapat menggunakan mode Enum.AlphaMode.Transparency untuk membuat objek kompleks atau sangat halus, seperti renda atau jala, dengan menghapus bagian-bagian yang terlihat dari mesh sebagai alternatif untuk mengukir geometri mesh. Karena ini tidak mempengaruhi geometri dari objek mesh, ini memungkinkan Anda untuk membuat objek yang lebih rinci tanpa dampak kinerja dari model mesh yang rumit.
Contoh berikut menunjukkan bagaimana transparansi parsial dan penuh dalam mode ini secara visual menghapus bagian dari mesh:



Ada dua hasil dari mode Transparency, tergantung pada apakah MeshPart.Transparency diatur ke 0 atau setidaknya 0.02, meskipun presisi numerik dapat menghasilkan nilai kecil seperti 0.01 memicu transparansi opak.
- Ketika alpha digunakan untuk memotong bentuk objek yang sebagian besar opak dengan tepi tajam seperti dedaunan, kain renda, dan jala, atur MeshPart.Transparency ke 0. Ketika bagian permukaan sepenuhnya opak, mesin Roblox dapat merendernya dengan penghalang berdasarkan kedalaman yang tepat. Permukaan opak juga umumnya bekerja lebih baik dengan efek berbasis kedalaman seperti DepthOfFieldEffect, pembiasan kaca dan air, serta refleksi air.
- Ketika alpha digunakan untuk menambahkan detail pada objek semi-transparan atau objek dengan gradien transparansi yang halus, atur MeshPart.Transparency ke setidaknya 0.02. Ini meningkatkan kualitas pencampuran untuk objek seperti jendela kotor dan bulu dengan tepi lembut, tetapi tidak akan bekerja dengan semua efek.
TintMask
Anda dapat menggunakan mode Enum.AlphaMode.TintMask untuk menerapkan pencampuran SurfaceAppearance.Color ke area selektif dari sebuah permukaan. Pencampuran paling kuat di mana saluran alpha sepenuhnya terlihat dan tidak diterapkan di mana saluran alpha transparan.

Pewarnaan warna
Anda dapat menerapkan tint pada peta warna Anda dengan memodifikasi properti SurfaceAppearance.Color. Pencampuran tidak mempengaruhi kinerja dan Anda dapat menghemat memori dengan menggunakan peta warna tunggal dengan tint yang berbeda. Gunakan pewarnaan untuk menciptakan variasi biaya rendah tambahan antara tekstur PBR MeshPart Anda atau untuk memodifikasi warna permukaan PBR Anda secara programatis dalam waktu nyata.



Pencampuran warna SurfaceAppearance.Color diterapkan sebagai pengali, sehingga penampilan akhirnya merupakan fungsi dari Color3 (warna texel) kali SurfaceAppearance.Color. Ini berarti bahwa membuat SurfaceAppearance.ColorMap asli Anda dalam warna grayscale mendekati putih menciptakan efek pencampuran paling kuat saat properti ini diterapkan.
Pencampuran hanya diterapkan pada SurfaceAppearance.ColorMap dan bukan pada MeshPart.Color. Anda masih dapat menggunakan saluran alpha saat menerapkan transparansi.
Ketika SurfaceAppearance.AlphaMode diatur ke Overlay dan saluran alpha hadir, warna MeshPart.Color yang mendasari terungkap dan pencampuran SurfaceAppearance.Color hanya diterapkan pada peta warna SurfaceAppearance yang terlihat.
Ketika SurfaceAppearance.AlphaMode diatur ke TintMask dan saluran alpha hadir, saluran alpha mengontrol jumlah pencampuran SurfaceAppearance.Color. Pencampuran paling kuat di mana saluran alpha sepenuhnya terlihat dan tidak diterapkan di mana saluran alpha transparan.

Normal
Peta normal, atau permukaan, menambahkan kedalaman tekstur ke permukaan Anda dan berperilaku mirip dengan peta tinggi. Sebagai hasilnya, efeknya mungkin memudar atau mengintensifkan tergantung pada sudut pandang dan lingkungan pencahayaan. Ketika peta normal tidak hadir, nilainya diatur ke 0.0.
Pada gambar berikut, Anda dapat beralih antara referensi mesh dan referensi peta untuk perbandingan nilai peta normal:



Saluran R, G, dan B dari gambar masing-masing sesuai dengan komponen X, Y, dan Z dari vektor permukaan lokal. Gambar seragam dengan warna [127, 127, 255] diterjemahkan menjadi peta normal yang sepenuhnya datar. Roblox hanya mendukung peta normal format OpenGL - Ruang Tangen.
Peta normal secara mencolok mempengaruhi permukaan visual dari sebuah mesh dan dapat menonjolkan jahitan yang tidak sesuai pada tekstur Anda. Setiap kali memungkinkan, sembunyikan jahitan tekstur Anda untuk menghindari masalah visual dengan mesh Anda.
Kekasaran
Peta Kekasaran, atau mikropermukaan, menentukan bagaimana cahaya tersebar di permukaan model Anda. Ketika kekasaran diatur ke 0.0, permukaan tidak menyebarkan cahaya sama sekali, menghasilkan refleksi dan kilau yang jauh lebih tajam dan lebih terang pada material Anda. Pada 1.0, cahaya dan refleksi tersebar merata di model, menghasilkan permukaan matte yang kurang reflektif.
Kekasaran dapat mempengaruhi seberapa reflektif suatu objek pada sudut yang berbeda, yang disebut sebagai efek Fresnel. Lihat fresnel untuk lebih banyak detail dan praktik terbaik untuk mempertahankan perilaku reflektif yang konsisten.
Gambar berikut menunjukkan perbandingan nilai peta kekasaran yang berbeda:



Fresnel
Fresnel mengacu pada jumlah pantulan dari suatu permukaan dalam referensi terhadap sudut pandang saat ini. Pemrosesan Fresnel Studio bertujuan untuk akurasi dunia nyata secara fisik, meskipun Anda mungkin mendapatkan kontribusi spekular yang tidak terduga pada sudut tertentu meskipun dengan permukaan kasar. Dalam beberapa kasus, Anda dapat mengompensasi dengan membuat peta kekasaran Anda sekitar 0.1 lebih kasar untuk mencapai respons pencahayaan yang konsisten dengan material Anda.
Meskipun Roblox merender efek pencahayaan ini secara akurat, kecerahan dan reflektivitas permukaan mungkin tidak merespon secara konsisten antara perangkat lunak konten tekstur Anda, seperti Substance Painter, dan Studio. Lihat contoh pakaian untuk perbedaan dalam rendering antara aplikasi.
Metalness
Metalness menentukan reflektifitas dari suatu permukaan. Nilai metalness berkisar antara 0.0 dan 1.0. Roblox mengatur nilai default ke 0.0 jika peta metalness tidak ada.
Lihat gambar berikut untuk perbandingan nilai peta metalness yang berbeda:



Berbagai render PBR menggunakan berbagai alur kerja untuk memproses reflektivitas. Studio hanya menggunakan alur kerja metalness yang menentukan apakah sebuah material adalah non-logam atau logam, kadang-kadang disebut sebagai isolator atau penghantar.
Dalam kebanyakan kasus, Anda harus mengatur nilai ini menjadi 0.0 (non-logam) atau 1.0 (logam). Anda dapat menggunakan nilai metalness parsial saat membuat permukaan yang lebih langka dengan properti reflektif sederhana, seperti satin atau sutra. Praktik ini dapat secara halus menyamarkan refleksi dalam material untuk menyoroti warna dari peta warna/albedo daripada warna yang dipantulkan di lingkungan.

