Apa kerugiannya menandai setiap sisi sebagai jahitan saat membuka kisi?

9

Saya seorang programmer yang mencoba mempelajari sedikit pemodelan 3D dasar. Saya cukup nyaman dengan pemodelan geometri dasar, dan dapat membuka dan tekstur model sederhana. Tapi saya punya pertanyaan ...

Ketika datang ke model membuka bungkus, semua tutorial menekankan perlunya menandai jahitan sesedikit mungkin saat membuka bungkus jaring. Pertanyaan saya adalah, mengapa? Saya menduga ini sangat jelas bagi orang-orang dengan pengalaman pemodelan, tetapi tidak bagi saya (mengingat bahwa upaya texturing saya sebagian besar terbatas pada generasi AO atau peta normal).

Saya menduga bahwa ini murni berkaitan dengan mempertahankan bentuk model ketika harus mengedit tekstur yang menyebar? Apakah itu satu-satunya alasan Anda tidak ingin memotong setiap sisi dan meletakkan semua wajah secara terpisah?

Saya menyadari bahwa saya menunjukkan ketidaktahuan saya tentang masalah ini ketika mengajukan pertanyaan ini, jadi minta maaf, tetapi kadang-kadang hal yang sangat jelas adalah yang paling sulit untuk menemukan jawaban untuk .

NM01
sumber

Jawaban:

10

Setiap "lapisan UV" dalam model Anda - yaitu, setiap tempat di mana wajah model kontinu sementara peta UV untuk tepi yang sama terpotong - adalah masalah baik untuk para seniman dan untuk perangkat keras.

  • Itu membuatnya lebih sulit untuk tekstur model dengan benar. Ini terutama benar ketika pengeditan dilakukan pada tekstur secara langsung, dalam 2D, bukan dalam program lukisan 3D. Semakin sedikit jahitan seperti itu, semakin mudah untuk secara mental membungkus tekstur di sekitar model.
  • Sementara pencampuran sederhana dapat bekerja untuk tekstur difus dan beberapa jenis tekstur lainnya, Anda harus sangat berhati-hati dengan hal-hal seperti peta normal ruang singgung. Untuk ini, Anda tidak bisa hanya mencampur secara linear (interpolasi) antara nilai X dan Y (biasanya dipetakan ke R dan B dalam pemirsa tekstur) tanpa vektor normal yang dihasilkan menjadi tidak normal dan lapisan menjadi terlihat (biasanya sebagai sedikit lebih gelap) "line") dalam beberapa kondisi pencahayaan. Di sisi lain, mencoba untuk memperbaikinya dalam tekstur dan membuat nilai-nilai pada kedua tepi UV berdekatan satu sama lain atau yang sama dapat menyebabkan jahitan menjadi terlihat karena itu rata tidak wajar dibandingkan dengan sisa model.
  • Pixel shader harus melakukan lebih banyak pekerjaan di setiap diskontinuitas (bahkan jika itu biasanya diabstraksikan dalam perangkat keras saat ini), dan dapat mencapai tempat memori yang berbeda untuk mengambil data tekstur dari (yang biasanya "jalur kode" yang kurang optimal dalam perangkat keras) , Berbeda dengan biasanya bekerja dengan nilai tekstur dekat spasi.
  • Pemetaan otomatis (dan sangat sedikit toko yang mampu menyentuh tekstur resolusi rendah yang dihasilkan secara manual) akan memecah semua kerja keras yang Anda dan artis Anda lakukan untuk membuat jahitan tidak terlihat pada resolusi default.

Yang mengatakan: Jika gaya seni Anda menentukan bahwa wajah model jelas berbeda satu sama lain dan mereka hanya akan memiliki "keras", tepi eksplisit, tidak ada yang menjadi masalah.

Martin Sojka
sumber
Poin luar biasa tentang akses memori yang tidak koheren dalam pixel shader. Melompati tekstur seperti itu akan benar-benar membuang cache tekstur.
Bob Somers
@ Bob Somers: Agar adil, ini tidak akan menjadi performa yang hebat kecuali Anda baik pemrograman untuk platform low-end atau mobile, atau Anda sudah mengenakan pajak GPU secara maksimal.
Martin Sojka
Poin bagus Martin. Saya sudah tinggal di tanah GPGPU selama setahun terakhir menulis kode sensitif kinerja, jadi saya pikir itu adalah hal yang menarik yang tidak segera jelas. :)
Bob Somers
6

Dua alasan utama adalah memahami tekstur yang terbuka dan artefak tepi .

Seperti yang Anda sebutkan, mungkin sangat sulit bagi seorang seniman untuk memahami bagaimana pengeditan 2D mereka akan membungkus model 3D jika jahitannya tidak masuk akal. Dalam kasus di mana setiap wajah dipisahkan dan ditempatkan secara optimal dengan beberapa jenis algoritma pengemasan bin, hampir tidak mungkin untuk mengedit tekstur dengan tangan. Semoga mereka menggunakan beberapa jenis alat melukis 3D hari ini, tetapi masih bagus (dan perlu!) Untuk mengedit langsung pada tekstur 2D.

Masalah lain (artefak tepi) dapat muncul karena keterbatasan presisi titik mengambang dengan pengambilan sampel tekstur. Katakanlah wajah-wajah semuanya diletakkan terputus di atas latar belakang hitam. Karena kesalahan floating point dalam tekstur coords Anda atau selama pengambilan sampel pada kartu video, kemungkinan besar piksel tepi hitam itu kadang-kadang akan muncul atau dicampur ketika tekstur disaring. Karena ini memengaruhi setiap wajah, Anda akan mengalami efek bingkai-artifak-wiref yang aneh ini terjadi. Satu-satunya cara untuk memerangi ini adalah dengan mengecilkan tekstur tekstur Anda sedikit, tetapi setiap wajah akan terlihat aneh karena tidak akan cukup sejajar dengan tetangga-tetangganya yang bijaksana.

Yang menyenangkan tentang meminimalkan jahitan adalah bahwa ada lebih sedikit tepi dalam model Anda di mana wajah berdekatan dengan latar belakang (tidak terpakai), sehingga ada lebih sedikit tempat untuk artefak untuk merayap masuk. Kebanyakan wajah berbatasan langsung dengan wajah tetangga di wajah. model aktual, sehingga artefak tepi sebenarnya adalah piksel yang berdekatan dalam tekstur dan Anda tidak akan pernah melihatnya.

Bob Somers
sumber