Cahayamap UVs pengenalan
Visualisasi UV peta cahaya

Menghasilkan UV peta cahaya

Unity dapat menghitung UV untuk dipanggang lightmapsTekstur pra-render yang mengandung efek sumber cahaya pada objek statis di tempat kejadian. Lightmaps dilalui atas geometri adegan untuk menciptakan efek pencahayaan. More info
Lihat di Glossary
ketika Anda mengimpor model, atau Anda dapat menyediakan data Anda sendiri.

Halaman ini berisi informasi berikut:

Bagaimana untuk menyediakan UV peta cahaya Anda sendiri

Anda dapat memberikan UV Lightmap Anda sendiri di perangkat lunak pembuatan konten pilihan Anda. Unity menggunakan UV ini sebagai masukan untuk perhitungannya.

Di mana Anda menempatkan data ini tergantung pada apakah Anda menyediakan UV untuk peta cahaya panggang, peta cahaya real-time, atau keduanya:

  • Untuk peta lampu panggang, Anda harus menempatkan UV peta cahaya di Mesh.uv2. Saluran ini juga disebut “UV1”.
  • Untuk peta lampu real-time:
    • Jika Anda sudah memiliki UV peta cahaya panggang di Mesh.uv2 dari 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
      Anda, dan Anda ingin menggunakan UV yang sama sebagai masukan untuk peta cahaya real-time, Anda tidak perlu melakukan apa pun. Unity jatuh kembali untuk berbagi UV peta cahaya panggang.
    • Jika Anda sudah memiliki UV peta cahaya panggang di Mesh.uv2, dan Anda ingin menyediakan UV yang berbeda sebagai masukan untuk peta lampu real-time Anda, letakkan UV peta cahaya real-time di Mesh.uv3, juga disebut "UV2".
    • Jika Anda belum memiliki UV peta cahaya panggang di saluran kedua mesh Anda, itu pilihan Anda apakah Anda menggunakan Mesh.uv2 atau Mesh.uv3 untuk UV peta cahaya real-time.

Set UV yang baik untuk lightmaps harus mematuhi aturan berikut:

  • Ini harus dalam ruang UV [0,1].
  • Perlu memiliki margin yang cukup luas antara grafik individu. Untuk informasi lebih lanjut, lihat Umpan balik tumpang tindih UV.
  • Tidak harus memiliki wajah yang tumpang tindih.
  • Harus ada perbedaan rendah antara sudut di UV dan sudut dalam geometri asli.
  • Harus ada perbedaan rendah antara skala relatif segitiga di UV dan skala relatif segitiga dalam geometri asli), kecuali Anda ingin beberapa daerah untuk memiliki resolusi lightmap yang lebih tinggi.

Cara secara otomatis menghasilkan UV Lightmap

Anda dapat memberitahu Unity untuk secara otomatis menghasilkan UV Lightmap untuk Model, menggunakan Model Pengaturan impor.

  1. Pilih Model dalam tampilan Proyek Anda. Unity membuka Pengaturan Impor Model di 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
    .
  2. Dalam Model Impor Pengaturan, arahkan ke tab Model, dan kemudian bagian Geometry.
  3. Tick kotak centang Generate Lightmap UVs. Bagian Lightmap UVs settings muncul di bawah Generate Lightmap UVs checkbox.
  4. Opsional: Mengkonfigurasi pengaturan di bagian Lightmap UVs settings. Lihat Settings untuk informasi lebih lanjut.
  5. Klik tombol Apply. Unity menghasilkan UV lightmap ke saluran Mesh.uv2.

Pengaturan generasi UV lightmap otomatis

Ini adalah pengaturan yang muncul di tab Model dari Model Pengaturan impor, ketika Anda mengaktifkan Generate Lightmap UVs.

Property: Function:
Hard Angle Sudut antara segitiga tetangga (dalam derajat) setelah Unity menganggapnya tepi keras dan menciptakan jahitan. Anda dapat mengatur ini ke nilai antara 0 dan 180. Ini diatur ke 88 derajat secara default.

Jika Anda mengatur ini ke 180 derajat, Unity mempertimbangkan semua tepi halus, yang realistis untuk model organik. Nilai default (88 derajat) realistis untuk model mekanis.
Angle Error Penyimpangan maksimum sudut UV dari sudut dalam geometri sumber (sebagai persentase dari 0–100). Ini diatur ke 8% secara default.

Ini mengontrol seberapa berbeda segitiga di ruang UV dapat menjadi segitiga dalam geometri asli. Biasanya ini harus cukup rendah, untuk menghindari artefak saat menerapkan lightmap.
Area Error Penyimpangan maksimum dari daerah UV dari daerah dalam geometri sumber (sebagai persentase dari 0–100). Ini diatur hingga 15% secara default.

Kontrol ini bagaimana baik Unity melestarikan daerah segitiga relatif. Meningkatkan nilai memungkinkan Anda untuk membuat grafik yang lebih sedikit. Namun, meningkatkan nilai dapat mengubah resolusi segitiga, jadi pastikan distorsi yang dihasilkan tidak memburuk kualitas lightmap.
Margin Method Apakah Anda menentukan Paket Margin secara manual, atau apakah Unity secara otomatis menghitungnya.
Manual Anda menentukan Paket Margin secara manual.
Calculate Berdasarkan resolusi lightmap yang diharapkan dan skala objek, Unity menghitung Paket Margin cukup besar untuk menghindari tumpang tindih UV.
Pack Margin Margin antara grafik tetangga (dalam pixel), asumsi Mesh mengambil seluruh 1024x1024 lightmap. Anda dapat mengatur ini ke nilai antara 1 dan 64. Nilai yang lebih besar meningkatkan margin, tetapi juga meningkatkan jumlah ruang kebutuhan grafik. Ini diatur ke 4 piksel secara default.

Untuk informasi lebih lanjut, lihat Paket Margin.

Properti ini hanya terlihat ketika Margin Method diatur ke Manual.
Min Lightmap Resolution Resolusi lightmap minimum (dalam texels per unit) dari MeshRenderers yang menggunakan Mesh ini, di semua Adegan. Resolusi lightmap dari MeshRenderer adalah kombinasi dari properti Scale in Lightmap MeshRenderer, dan properti Lightmap Resolution dari Aset Pengaturan Pencahayaan dari Adegan itu muncul di.

Untuk informasi lebih lanjut, lihat Resolusi Min Lightmap dan Skala Objek Min.

Unity menggunakan informasi ini untuk menghitung paket margin. Properti ini hanya terlihat ketika Margin Method diatur ke Calculate.
Min Object Scale Skala transformasi minimal yang dari GameObjects yang menggunakan Mesh ini, di semua Adegan.

Untuk informasi lebih lanjut, lihat Resolusi Min Lightmap dan Skala Objek Min.

Unity menggunakan informasi ini untuk menghitung paket margin. Properti ini hanya terlihat ketika Margin Method diatur ke Calculate.

Pemecahan Masalah otomatis dihasilkan lightmap UVs

Paket Margin

Untuk memungkinkan penyaringan, lightmap berisi informasi pencahayaan di texels dekat perbatasan grafik, jadi selalu mencakup beberapa margin antara grafik untuk menghindari pendarahan cahaya saat menerapkan lightmap.

Resolusi lightmap mendefinisikan resolusi texel peta cahaya Anda. LightmappersAlat dalam Unity yang bakes lightmap sesuai dengan pengaturan lampu dan geometri di tempat kejadian Anda. More info
Lihat di Glossary
dilate beberapa texels grafik di lightmap untuk menghindari tepi hitam, sehingga grafik UV dari Anda Mesh perlu setidaknya dua texels penuh terpisah dari satu sama lain untuk menghindari pendarahan cahaya. Gunakan pengaturan Pack Margin untuk memastikan Anda memiliki margin yang cukup antara grafik UV geometri Anda.

Di ruang UV lightmap, bantalan antara grafik harus setidaknya dua texel penuh untuk menghindari perdarahan sinar UV dan tidak disengaja. Dalam gambar ini, ruang hitam mewakili ruang antara grafik.

Resolusi Min Lightmap dan Skala Objek Min

Menempatkan grafik UV terlalu dekat bersama-sama dapat menyebabkan pendarahan cross-chart texel di peta lampu akhir. Menempatkan grafik terlalu jauh dari setiap memori limbah lainnya. Margin kemasan yang ideal dari objek tergantung pada berapa banyak texels lightmap dialokasikan untuk itu.

Jumlah texels yang digunakan Unity untuk MeshRenderer tergantung pada resolusi lightmap MeshRenderer dan skala transformasi. Untuk menghitung margin yang baik, Kesatuan perlu mengetahui nilai minimum yang diharapkan untuk properti ini.

Resolusi lightmap MeshRenderer adalah kombinasi dari properti Lightmap Resolution dari Aset Pengaturan Pencahayaan untuk SceneAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
Lihat di Glossary
yang muncul MeshRenderer, dan properti Scale in Lightmap dari MeshRenderer. Perhatikan bahwa ini berarti bahwa MeshRenderer yang sama dapat memiliki resolusi lightmap yang berbeda di Adegan yang berbeda.

Anda dapat menggunakan Inspektur untuk melihat resolusi lightmap dari MeshRenderer dalam adegan tertentu:

  1. Pada Scene viewTampilan interaktif ke dunia yang Anda buat. Anda menggunakan Adegan Lihat untuk memilih dan posisi pemandangan, karakter, kamera, lampu, dan semua jenis lain dari Game Object. More info
    Lihat di Glossary
    atau Hierarchy, pilih GameObjectObjek mendasar dalam adegan Unity, yang dapat mewakili karakter, props, pemandangan, kamera, waypoints, dan banyak lagi. Fungsi GameObject didefinisikan oleh Komponen yang melekat padanya. More info
    Lihat di Glossary
    yang memiliki komponen MeshRenderer.
  2. Dalam Inspektur, arahkan ke bagian Lightmapping komponen MeshRenderer.
  3. Buka lipatan Baked Lightmap. Unity menampilkan resolusi lightmap MeshRenderer di peta cahaya panggang dengan label Lightmap Resolution, dan skala transformasinya di peta lampu panggang dengan label Lightmap Object Scale.

Distorsi sudut

screenshot berikut menunjukkan resolusi yang sama, tetapi dengan UV yang berbeda. Gambar pertama memiliki Angle Error tinggi, dan hasilnya mengandung artefak yang tidak diinginkan. Gambar kedua memiliki default Angle Error (8%). Dalam Mesh dengan lebih banyak segitiga, distorsi sudut dapat secara signifikan mendistorsi bentuk.

Area distorsi

Dalam gambar di bawah ini, dua lampu sorot dengan parameter yang sama menyala sisi silinder. Sisi kanan silinder memiliki nilai Area Error yang lebih tinggi, yang mendistorsi segitiga dan mengarah ke resolusi yang lebih rendah, menciptakan artefak dalam cahaya.

Cahayamap UVs pengenalan
Visualisasi UV peta cahaya