Peta normal adalah jenis Bump Map. Mereka adalah jenis tekstur khusus yang memungkinkan Anda untuk menambahkan detail permukaan seperti benjolan, alur, dan goresan ke model yang menangkap cahaya seolah-olah mereka diwakili oleh geometri nyata.
Misalnya, Anda mungkin ingin menunjukkan permukaan yang memiliki alur dan sekrup atau keling di permukaan, seperti lambung pesawat. Satu cara untuk melakukan ini akan menjadi model rincian ini sebagai geometri, seperti yang ditunjukkan di bawah ini.
Tergantung pada situasi tidak biasanya ide yang baik untuk memiliki detail kecil seperti geometri "real". Di sebelah kanan Anda dapat melihat poligon yang diperlukan untuk membuat detail dari satu sekrup kepala. Lebih dari model besar dengan banyak detail permukaan halus ini akan membutuhkan jumlah poligon yang sangat tinggi untuk ditarik. Untuk menghindari ini, kita harus menggunakan normal mapJenis tekstur Peta Bump yang memungkinkan Anda untuk menambahkan detail permukaan seperti benjolan, alur, dan goresan ke model yang menangkap cahaya seolah-olah mereka diwakili oleh geometri nyata.
Lihat di Glossary untuk mewakili detail permukaan halus, dan permukaan poligonal resolusi rendah untuk bentuk model yang lebih besar.
Jika kita tidak mewakili detail ini dengan peta benjolan, geometri permukaan bisa menjadi lebih sederhana, dan detailnya diwakili sebagai tekstur yang memodulasi bagaimana cahaya memantulkan permukaan. Ini adalah perangkat keras grafis modern dapat melakukan sangat cepat. Permukaan logam Anda sekarang bisa menjadi pesawat datar poli rendah, dan sekrup, keling, alur dan goresan akan menangkap cahaya dan tampaknya memiliki kedalaman karena tekstur.
Dalam perkembangan permainan modern pipa seni, seniman akan menggunakan aplikasi pemodelan 3D mereka untuk menghasilkan peta normal berdasarkan model sumber resolusi yang sangat tinggi. Peta normal kemudian dipetakan ke versi yang lebih rendah dari model, sehingga detail resolusi tinggi asli diberikan menggunakan peta normal.
Bump pemetaan adalah teknik grafis yang relatif lama, tetapi masih salah satu metode inti yang diperlukan untuk membuat grafis real-time yang realistis. Login Peta juga sering disebut sebagai Normal Maps atau Height Maps, namun istilah ini memiliki makna yang sedikit berbeda yang akan dijelaskan di bawah ini.
Untuk benar-benar menjelaskan bagaimana pekerjaan pemetaan normal, kami akan menjelaskan apa yang "normal" adalah, dan bagaimana digunakan dalam pencahayaan real-time. Mungkin contoh yang paling dasar adalah model di mana setiap permukaan poligon menyala hanya sesuai dengan sudut permukaan relatif terhadap cahaya. Sudut permukaan dapat diwakili sebagai garis menonjol dalam arah tegak lurus dari permukaan, dan arah ini (yang merupakan vektor) relatif terhadap permukaan disebut "surface normal", atau hanya, normal.
Dalam gambar di atas, silinder kiri memiliki pencukur datar dasar, dan setiap poligon diwarnai sesuai dengan sudut relatif ke sumber cahaya. Pencahayaan pada setiap poligon konstan di seluruh area poligon karena permukaannya rata. Berikut adalah dua silinder yang sama, dengan bingkai kawat mereka meshGrafik utama primitif Unity. Mesh membuat sebagian besar dunia 3D Anda. Unity mendukung mesh poligon triangulat atau Quadrangulasi. Nurbs, Nurms, permukaan Subdiv harus dikonversi ke poligon. More info
Lihat di Glossary terlihat:
Model di sebelah kanan memiliki jumlah poligon yang sama sebagai model di sebelah kiri, namun teduh muncul halus - pencahayaan di poligon memberikan penampilan permukaan melengkung. Mengapa ini? Alasannya adalah bahwa surface normal pada setiap titik yang digunakan untuk mencerminkan cahaya secara bertahap bervariasi di seluruh lebar poligon, sehingga untuk setiap titik tertentu di permukaan, bouncing cahaya seolah-olah permukaan melengkung dan bukan poligon konstan datar yang benar-benar.
Dilihat sebagai diagram 2D, tiga permukaan poligon di sekitar luar silinder berbentuk datar akan terlihat seperti ini:
Permukaan normal diwakili oleh panah oranye. Ini adalah nilai yang digunakan untuk menghitung bagaimana cahaya memantulkan permukaan, sehingga Anda dapat melihat bahwa cahaya akan merespon sama sepanjang panjang setiap poligon, karena titik normal permukaan dalam arah yang sama. Ini memberi "mencukur rata", dan merupakan alasan poligon silinder kiri muncul untuk memiliki tepi keras.
Untuk silinder naungan halus namun, permukaan normal bervariasi di poligon datar, seperti yang diwakili di sini:
Arah normal secara bertahap berubah di permukaan poligon datar, sehingga membentuk di permukaan memberikan kesan kurva halus (seperti yang diwakili oleh garis hijau). Ini tidak mempengaruhi sifat poligonal sebenarnya dari mesh, hanya bagaimana pencahayaan dihitung pada permukaan datar. Permukaan melengkung ini tidak benar-benar hadir, dan melihat wajah pada sudut glancing akan mengungkapkan sifat sebenarnya dari poligon datar, namun dari sudut pandang paling silinder tampaknya memiliki permukaan melengkung halus.
Menggunakan pencukur halus dasar ini, data menentukan arah normal sebenarnya hanya disimpan per vertex, sehingga nilai perubahan di permukaan diinterpolasi dari satu simpul ke depan. Dalam diagram di atas, panah merah menunjukkan arah normal yang tersimpan di setiap simpul, dan panah oranye menunjukkan contoh arah normal yang diinterpolasi di seluruh area poligon.
Pemetaan normal mengambil modifikasi permukaan normal satu langkah lebih jauh, dengan menggunakan tekstur untuk menyimpan informasi tentang cara memodifikasi permukaan normal di model. Peta normal adalah tekstur gambar yang dipetakan ke permukaan model, mirip dengan tekstur warna biasa, namun setiap pixelUnit terkecil dalam gambar komputer. Ukuran piksel tergantung pada resolusi layar Anda. Pencahayaan pixel dihitung pada setiap piksel layar. More info
Lihat di Glossary dalam tekstur peta normal (yang disebut texel) mewakili penyimpangan dalam arah normal permukaan dari permukaan "true" normal dari poligon datar (atau diserbuki halus).
Dalam diagram ini, yang lagi merupakan representasi 2D dari tiga poligon di permukaan model 3D, setiap panah oranye sesuai dengan pixel dalam tekstur normalmap. Di bawah ini, adalah irisan piksel tunggal dari tekstur normalmap. Di pusat, Anda dapat melihat normal telah dimodifikasi, memberikan appearance dari beberapa benjolan di permukaan poligon. benjolan ini hanya akan jelas karena cara pencahayaan muncul di permukaan, karena normal dimodifikasi ini digunakan dalam perhitungan pencahayaan.
Warna-warna yang terlihat dalam file peta normal mentah biasanya memiliki hue biru, dan tidak mengandung cahaya atau gelap yang sebenarnya - ini karena warna-warna itu sendiri tidak dimaksudkan untuk ditampilkan sebagai mereka. Sebagai gantinya, nilai RGB dari setiap texel mewakili nilai X, Y & Z dari vektor arah, dan diterapkan sebagai modifikasi pada normal halus yang diserbuki dasar dari permukaan poligon.
Ini adalah peta normal sederhana, yang berisi informasi benjolan untuk beberapa luntur dan teks yang dibesarkan. Peta normal ini dapat diimpor ke Unity dan ditempatkan ke slot Peta Normal dari Standard ShaderProgram yang berjalan di GPU. More info
Lihat di Glossary. Ketika dikombinasikan dalam bahan dengan peta warna ( peta Albedo) dan diterapkan pada permukaan mesh silinder di atas, hasilnya terlihat seperti ini:
Sekali lagi, ini tidak mempengaruhi sifat poligonal sebenarnya dari mesh, hanya bagaimana pencahayaan dihitung pada permukaan. Ini jelas mengangkat huruf dan bentuk di permukaan tidak benar-benar hadir, dan melihat wajah pada sudut glancing akan mengungkapkan sifat sebenarnya dari permukaan datar, namun dari sebagian besar sudut pandang silinder sekarang muncul untuk memiliki detail timbul dari permukaan.
Umum, Normal Peta diproduksi oleh seniman 3D atau Tekstur bersama dengan model atau tekstur yang mereka produksi, dan mereka sering mencerminkan tata letak dan isi peta Albedo. Kadang-kadang mereka diproduksi dengan tangan, dan kadang-kadang mereka diberikan dari aplikasi 3D.
Bagaimana cara membuat peta normal dari aplikasi 3D berada di luar ruang lingkup dokumentasi ini, namun konsep dasar adalah bahwa seniman 3D akan menghasilkan dua versi model - model resolusi yang sangat tinggi yang mengandung semua detail sebagai poligon, dan model "game siap". Model res tinggi akan terlalu rinci untuk berjalan secara optimal dalam permainan (untuk banyak segitiga di jala), tetapi digunakan dalam aplikasi pemodelan 3D untuk menghasilkan peta normal. Versi model yang lebih rendah kemudian dapat mengomit tingkat detail geometri yang sangat halus yang sekarang disimpan di peta normal, sehingga dapat diberikan menggunakan pemetaan normal bukan. Kasus penggunaan yang khas untuk ini akan menunjukkan detail lipatan, kancing, gesper dan jahitan pada pakaian karakter.
Ada beberapa paket perangkat lunak yang dapat menganalisis pencahayaan dalam tekstur fotografi biasa, dan mengekstrak peta normal dari itu. Ini bekerja dengan asumsi tekstur asli menyala dari arah yang konstan, dan area yang ringan dan gelap dianalisis dan diasumsikan sesuai dengan permukaan yang miring. Namun, ketika benar-benar menggunakan peta benjolan, Anda perlu memastikan bahwa Anda Tekstur Albedo tidak memiliki pencahayaan dari arah tertentu dalam gambar - idealnya harus mewakili warna permukaan tanpa pencahayaan sama sekali - karena informasi pencahayaan akan dihitung oleh Unity sesuai arah cahaya, sudut permukaan dan informasi peta benjolan.
Berikut adalah dua contoh, salah satu tekstur dinding batu pengulangan sederhana dengan peta normal yang sesuai, dan satu adalah tekstur karakter dilas dengan peta normal yang sesuai:
Normal Maps dan Height Maps keduanya types Peta Bump. Mereka berisi data untuk mewakili detail yang jelas pada permukaan jaring poligonal yang lebih sederhana, tetapi mereka setiap menyimpan data dengan cara yang berbeda.
Di atas, di sebelah kiri, Anda dapat melihat peta tinggi yang digunakan untuk menumbuhkan dinding batu. Peta tinggi adalah tekstur hitam dan putih sederhana, di mana setiap pixel mewakili jumlah yang titik di permukaan harus muncul. Pemutih warna pixel, semakin tinggi daerah muncul.
Peta normal adalah tekstur RGB, di mana setiap pixel mewakili perbedaan arah permukaan harus muncul untuk menghadapi, relatif terhadap permukaan yang tidak dimodifikasi normal. Tekstur ini cenderung memiliki tinge ungu biru, karena cara vektor disimpan dalam nilai RGB.
Modern real-time 3D perangkat keras grafis bergantung pada Peta Normal, karena mereka mengandung vektor yang diperlukan untuk memodifikasi bagaimana cahaya harus muncul untuk memuncak permukaan. Unity juga dapat menerima Peta Tinggi untuk pemetaan benjolan, tetapi mereka harus dikonversi ke Peta Normal untuk impor untuk menggunakannya.
Memahami ini tidak penting untuk menggunakan peta normal! Ini ok untuk melewatkan paragraf ini. Namun jika Anda benar-benar ingin tahu: Nilai warna RGB digunakan untuk menyimpan arah X, Y, Z dari vektor, dengan Z menjadi “up” (kontrary ke konvensi biasa Unity menggunakan Y sebagai “up”). Selain itu, nilai-nilai dalam tekstur diperlakukan seperti yang telah diolah, dengan 0,5 ditambahkan. Hal ini memungkinkan vektor dari semua arah untuk disimpan. Oleh karena itu untuk mengubah warna RGB ke arah vektor, Anda harus berkali-kali dengan dua, lalu subtrak Sitemap Sebagai contoh, nilai RGB (0.5, 0.5, 1) atau #80FF dalam hasil hex dalam vektor (0,0,1) yang “up” untuk tujuan normal-menekan - dan tidak mewakili perubahan pada permukaan model. Ini adalah warna yang Anda lihat di daerah datar peta normal "contoh" sebelumnya di halaman ini.
Nilai (0.43, 0.91, 0.80) memberikan vektor (-0.14, 0,82, 0,6), yang cukup modifikasi curam ke permukaan. Warna seperti ini dapat dilihat di daerah cyan terang dari dinding batu peta normal di bagian atas beberapa tepi batu. Hasilnya adalah tepi ini menangkap cahaya pada sudut yang sangat berbeda ke wajah flatter batu.
Peta normal
Peta normal dapat diimpor dengan menempatkan file tekstur di folder aset Anda, seperti biasa. Namun, Anda perlu memberitahu Unity bahwa tekstur ini adalah peta normal. Anda dapat melakukan ini dengan mengubah pengaturan “Tipe Tekstur” ke “Normal Map” pada pengaturan impor inspectorJendela Unity yang menampilkan informasi tentang Pengaturan GameObject yang dipilih saat ini, aset atau proyek, memungkinkan Anda untuk memeriksa dan mengedit nilai. More info
Lihat di Glossary.
Untuk mengimpor heightmapTekstur abu-abu yang menyimpan data tinggi untuk objek. Setiap pixel menyimpan perbedaan tinggi tegak lurus dengan wajah yang pixel mewakili.
Lihat di Glossary hitam dan putih sebagai peta normal, prosesnya hampir identik, kecuali Anda perlu memeriksa opsi "Create dari Greyscale".
Dengan "Create Dari Greyscale" yang dipilih, slider Bumpiness akan muncul dalam inspektur. Anda dapat menggunakan ini untuk mengontrol bagaimana mengarahkan sudut di peta normal, ketika dikonversi dari ketinggian di peta tinggi Anda. Nilai benjolan rendah akan berarti bahwa kontras yang bahkan tajam di heightmap akan diterjemahkan ke sudut dan benjolan yang lembut. Nilai tinggi akan menciptakan benjolan yang berlebihan dan respons pencahayaan kontras yang sangat tinggi untuk benjolan.
Setelah Anda memiliki peta normal dalam aset Anda, Anda dapat menempatkannya ke slot Peta Normal Bahan Anda dalam inspektur. Standar Shader memiliki slot peta normal, dan banyak warna legacy yang lebih tua juga mendukung peta normal.
Jika Anda mengimpor peta normal atau heightmap, dan tidak menandainya sebagai peta normal (Dengan memilih Texture Type: Normal Map seperti yang dijelaskan di atas), Inspektur Material akan memperingatkan Anda tentang ini dan menawarkan untuk memperbaikinya, seperti:
Mengklik “Fix Now” memiliki efek yang sama seperti memilih Texture Type: Normal Map dalam pengaturan inspektur tekstur. Ini akan bekerja jika tekstur Anda benar-benar peta normal. Namun jika itu adalah peta tinggi skala abu-abu, itu tidak akan secara otomatis mendeteksi ini - sehingga untuk heightmaps Anda harus selalu memilih opsi "Create dari Greyscale" di jendela inspektur tekstur.
Anda juga dapat melihat bahwa ada slot Peta Normal kedua lebih jauh di Inspektur Material untuk Shader Standar. Ini memungkinkan Anda untuk menggunakan peta normal tambahan untuk membuat detail tambahan. Anda dapat menambahkan peta normal ke slot ini dengan cara yang sama dengan slot peta normal biasa, tetapi niat di sini adalah bahwa Anda harus menggunakan skala atau frekuensi yang berbeda dari tiling sehingga dua peta normal bersama-sama menghasilkan level of detailTeknik Tingkat Detail (LOD) adalah optimasi yang mengurangi jumlah segitiga yang dimiliki Unity untuk membuat GameObject ketika jaraknya dari kamera meningkat. More info
Lihat di Glossary tinggi pada skala yang berbeda. Misalnya, peta normal Anda dapat menentukan rincian panel di dinding atau kendaraan, dengan berkembang untuk tepi panel. Peta normal sekunder dapat memberikan detail benjolan yang sangat halus untuk goresan dan keausan di permukaan yang dapat disegel pada 5 hingga 10 kali skala peta normal dasar. Detail ini bisa jadi halus seperti hanya terlihat ketika diperiksa erat. Untuk memiliki jumlah detail ini pada peta normal dasar akan membutuhkan peta normal dasar untuk sangat besar, namun dengan menggabungkan dua skala yang berbeda, tingkat detail keseluruhan tinggi dapat dicapai dengan dua tekstur peta normal yang relatif kecil.