Ini adalah norma - 4: pemecahan masalah dengan peta normal

gambar

Bagian 1: apa itu peta normal dan bagaimana cara kerjanya

Bagian 2: bagaimana peta normal dipanggang

Bagian 3: jenis peta normal

Ini adalah bagian keempat dari tutorial peta normal, tetapi tidak tergantung pada yang lain dan dapat dibaca secara terpisah.

Di sini saya daftar masalah peta normal yang saya temui selama bertahun-tahun bekerja, dan beberapa solusi untuk menyelesaikannya.

Masalah: di tepi model ada "garis hitam" atau "sisipan"


gambar

Ini terjadi ketika model memiliki tepi yang keras, karena simpul model memiliki normals yang benar-benar tegak lurus terhadap permukaan poligon, itulah sebabnya program memanggang dapat melewatkan beberapa detail (meninggalkan garis hitam pada model).

gambar

Solusi: Program memanggang peta normal memperhitungkan masalah ini saat membuat peta normal dan mencoba mengurangi pengaruhnya dengan menghitung sedikit lebih banyak informasi di balik vertex normals, tetapi untuk menyimpannya, mereka memerlukan celah di antara poligon pemindaian UV.

Ada penjelasan yang lebih rinci di sini, tetapi dalam praktiknya aturannya cukup sederhana: ketika model memiliki tepi yang tajam, Anda perlu memisahkan wajah yang terhubung ke dalamnya dalam UV.

Masalah: Peta normal terlihat BENAR-BENAR salah, terutama di beberapa sudut


Masalah ini dapat terjadi karena berbagai alasan. Mari kita bahas beberapa di antaranya:

  • Anda menggunakan ruang singgung yang salah: normals dari model lowpoly Anda, yang kami coba modifikasi menggunakan peta normal, dapat dihitung dalam program memanggang secara berbeda dari pada program yang digunakan untuk me-render model. Jika perhitungan ini berbeda, peta normal bisa terlihat sangat aneh, terutama dari beberapa sudut.

    gambar

    , . , , .

    : Mikk. , . Mikk, handplane .
  • -: — . , . - — , . - , linear/linear color/raw sRGB Unreal.
  • : , , (bump map), (displacement map) ....
  • lowpoly- lowpoly : , / (smoothing groups)/ (hard edge), / , .

    lowpoly , /, ( obj ) .

: ?


Solusi: Anda tidak membutuhkannya. Tidak perlu membuat peta normal untuk semuanya. Kerucut yang tajam adalah contoh klasik dari ini, tetapi ada banyak kasus lain di mana peta normal bukan solusi.

gambar

Kami menggunakan peta normal untuk mengubah arah normal model lowpoly. Kadang-kadang arah normal adalah benar dan tidak memerlukan perubahan apa pun, dan kadang-kadang normal lowpoly sangat diputar (seperti dalam kasus lonjakan tajam) dan bagian-bagian dari model highpoly secara tidak tepat dipetakan ke permukaan model lowpoly. Dalam kasus seperti itu, saya cukup menghapus detail peta normal menggunakan warna ini:

gambar

Warna ini 50% merah, 50% hijau dan 100% biru, dan itu tidak mengubah arah normal dari peta normal ruang singgung, sehingga Anda dapat menggunakannya untuk menghapus detail di tempat-tempat dengan proyeksi yang tidak berhasil.

Kerucut yang tajam hanyalah contoh dari salah satu kasus ketika peta normal mungkin tidak menyelesaikan masalah Anda. Penting untuk diingat di sini bahwa dalam beberapa kasus peta normal bukan solusi terbaik, kemampuannya terbatas dan kami tidak dapat berharap bahwa mereka akan berperilaku seperti yang kita butuhkan dalam situasi apa pun. Kadang-kadang kita menghabiskan banyak waktu untuk mencoba agar peta normal berfungsi, ketika kita bisa menambahkan bagian-bagian ke tekstur yang tersebar atau lowpoly, dan tidak mencoba mentransfer bagian menggunakan peta normal.

Masalah: detail pada model saya terlihat terbalik.


Ini adalah masalah yang sangat umum dan dapat dilihat di banyak video game, bahkan di level AAA.

Seperti yang kita lihat dalam tutorial [ terjemahan Habré] ini, peta normal adalah tekstur yang menggunakan saluran hijau, merah dan biru untuk mengubah cara cahaya dipantulkan dari permukaan model ketika jatuh, masing-masing, dari samping, atas dan depan model (ingat bahwa ini disederhanakan). penjelasan dan itu tidak 100% benar).

gambar

Masalahnya adalah bahwa beberapa aplikasi percaya bahwa saluran hijau harus menunjukkan model menyala dari bawah, sementara yang lain percaya bahwa itu harus menunjukkan model menyala dari atas. Ini kadang-kadang disebut "peta normal-handiness":

  • Aplikasi OpenGL (sisi kanan, saluran hijau positif): Blender, Maya, Modo, Toolbag, Unity.
  • Aplikasi DirectX (sisi kiri, saluran hijau negatif): 3DStudio Max, CryEngine, Source Engine, Unreal Engine.
  • Substance Painter dapat bekerja dengan kedua jenis dan mengekspor kedua jenis peta normal.

Solusi: membalikkan saluran hijau dari peta normal. Sebagian besar mesin gim memiliki opsi untuk tekstur membalikkan peta normal, atau Anda dapat secara manual membalikkan saluran tekstur hijau di Photoshop (buka tab saluran, pilih saluran hijau dan tekan Ctrl + i).

Masalah: beberapa bagian tampak datar / hilang


Bayangkan ketika memanggang peta normal, program memanggang memancarkan sinar dari permukaan model lowpoly, mengikuti normals rendahpoly, hingga sinar berpotongan dengan model highpoly dan berputar. Setelah itu, program pembuatan mengambil informasi ini dan menyimpannya ke peta normal.

Sinar yang dipancarkan ini tidak boleh bergerak tanpa henti, karena mereka dapat bertabrakan dengan bagian paling jauh dari polandia tinggi dan berputar secara tidak benar, sehingga program pemanggangan membatasi rentang emisi sinar dan kadang-kadang sinar dapat berhenti sebelum mereka dapat berpotongan dengan poligon tinggi. Dalam hal ini, kami kehilangan detail dan peta normal memiliki area dengan warna datar.

gambar

Solusi: tergantung pada bagaimana program memanggang memungkinkan Anda untuk mengontrol jarak memanggang:

  • lowpoly , «» lowpoly- ( ). , lowpoly highpoly.
  • , Max, (cage) — «» lowpoly, .
  • ( Substance Painter max frontal/rear distance).

Anda juga dapat mencoba membuat lowpoly dan / atau highpoly lebih mirip satu sama lain sehingga sinar bisa mendapatkan detail di seluruh permukaan model. Pilihan lain adalah memanggang dua peta normal dengan jarak sangkar yang berbeda dan mencampurkannya di berbagai bagian tekstur. Beberapa puritan peta normal mungkin bersumpah pada Anda untuk ini, jadi berhati-hatilah dengan telinga Anda.

Masalah: Peta normal memiliki detail yang terdistorsi


Ini adalah masalah yang sangat umum. Ini terjadi ketika normals lowpoly tidak benar sesuai dengan detail highpoly, sehingga mereka tampak miring (pada kenyataannya, jika Anda melihatnya dari arah normals verteks , mereka berkorespondensi dengan sempurna). Ini biasanya terjadi ketika beberapa wajah membentuk sudut yang sangat tajam.

gambar

Solusi: Saya menulis lebih detail tentang topik ini di tutorial lain [ terjemahan Habré], tetapi secara umum solusinya adalah sebagai berikut:

  • Ratakan sudut yang tajam dengan menambahkan bevel.
  • Konversi tepi dari sudut tajam ke tepi tajam (tepi keras) / bagi wajah menjadi kelompok smoothing yang berbeda (smoothing group).
  • Gunakan normals khusus / normals tertimbang.

Masalah: Peta normal terlihat pixelated atau berisi garis-garis


Gempa bumi (peta dewa normal AKA) menulis penjelasan yang sangat bagus untuk masalah ini.

Jika lowpoly dan highpoly sangat mirip, maka sebagian besar peta normal akan memiliki satu warna dasar dari peta normal, dan warna lain akan berada di tempat-tempat di mana lowpoly berbeda dari highpoly.

Jika situasinya sebaliknya: lowpoly dan highpoly sangat berbeda, maka peta normal akan memiliki variasi warna dan gradien yang jauh lebih luas:

gambar

Gradien yang halus menyebabkan masalah karena banyak warna diperlukan untuk mewakili mereka, dan metode kompresi tekstur yang paling umum didasarkan pada pengurangan jumlah total warna.

Solusi:

  • lowpoly highpoly: , . lowpoly, highpoly.
  • 16- : 8- . , 8 (0 1). 256 .

    , .

    gambar

    16- 16 , 65536 . , . , 16- , 8- ( ). , 16- -; 24- . [. .: .]

    , , 16 .
  • : — , , — . , , . .

    gambar
  • , : , , . , : , . . , ( , , ), .

:


Solusi yang jelas adalah dengan meningkatkan "pulau" UV-bagian ini dari model atau menggunakan tekstur yang lebih besar, tetapi mari kita lihat solusi yang kurang jelas:

  • Panggang peta normal dengan resolusi dua kali lipat, dan kemudian kurangi ukuran gambar: jika Anda menggunakan tekstur 512x512, panggang peta normal dengan resolusi 1024x1024, lalu konversi gambar menjadi 512x512. Karena itu, setiap piksel dari tekstur akhir akan menerima informasi dari empat piksel, menciptakan semacam antialiasing dan mengurangi pikselasi. Ini juga berlaku untuk gambar panggang lainnya; Selain itu, ada baiknya menyimpan versi tekstur resolusi tinggi jika Anda nanti ingin meningkatkan detail di beberapa daerah.

    gambar

    , , , 1024, highpoly, .
  • UV islands , . 1 UV-, .

    trim- .
  • , . - , . :

    gambar

    gambar

Masalah: model saya simetris, tetapi peta normal berbeda di sisi yang berbeda.

Ketika diterapkan pada model simetri, arah normal dapat berubah karena fakta bahwa cara menghubungkan wajah telah berubah. Terkadang ini berarti Anda bisa mendapatkan jahitan tepat di tengah model. Untuk menghindari hal ini, pastikan bahwa normal lowpoly di tengah selaras, dan sesuaikan smoothing jika perlu.

Alasan lain yang mungkin adalah triangulasi : ketika model diimpor ke dalam mesin permainan, mereka selalu triangulasi dan kadang-kadang proses ini dapat mengubah normal-rendah lowpoly, dan artefak dapat muncul di sepanjang diagonal wajah lowpoly. Untuk menghindari hal ini, lakukan triangulasi model sebelum dipanggang, panggang peta normal, dan kemudian terapkan pengubah simetri.

Selain itu, Anda dapat mempelajari tutorial Gempa Bumi kecil , yang membantu saya sedikit lebih memahami vertex normals dan peta normal.

Untuk informasi lebih lanjut tentang peta normal, lihat wiki Polycount.

All Articles