Apakah pemetaan UV menghasilkan beberapa titik pada model 3D beberapa titik dalam proyeksi 2D?


8

Asumsikan model 3D saya adalah piramida dengan basis persegi panjang dan saya menghitung empat sudut dasar dengan 1, 2, 3, 4 dan memberikan 5 ke titik teratas. Jika saya memproyeksikan piramida ini menjadi objek berbentuk bintang 2D, tidak akankah keempat titik terluar bintang dikaitkan dengan titik nomor 5 dalam model 3D?

Gambar tangan dari piramida basis persegi dan jaring 2D berbentuk bintangnya


Tampaknya Anda berpikir "proyeksikan piramida ini menjadi objek berbentuk bintang 2D" adalah operasi yang ditentukan. Tidak, sampai Anda melakukannya.
Jessy

2
Untuk memetakan UV dengan cara itu, Anda harus menganggap (5) empat simpul berbeda yang kebetulan memiliki koordinat XYZ yang sama.
Russell Borogove

Jawaban:


10

Cara itu biasanya didefinisikan, setiap simpul dalam mesh sesuai dengan koordinat UV, dan harus ada tepat satu koordinat tersebut per verteks, karena itulah cara penyaji mengambil texels. Jadi tidak mungkin untuk memiliki beberapa koordinat UV untuk satu titik kecuali jika Anda memiliki beberapa parameterisasi untuk mesh Anda.

Namun, jerat sering terpisah selama parameterisasi dan simpul yang sama dapat berakhir di beberapa lokasi, seperti pada contoh Anda. Paling sering, simpul-simpul itu hanya direplikasi saat memuat / merender sehingga pemetaan vertex-ke-uv tetap 1-ke-1 atau banyak-ke-1. Jadi renderer kemungkinan akan menafsirkan contoh Anda sebagai berikut (v5 dibagi menjadi 4):

masukkan deskripsi gambar di sini


4

Saya hanya perlu menambahkan sedikit ke jawaban ap_.
Tentu saja Anda dapat memiliki beberapa UV untuk satu titik, ini disebut lapisan UV. Ini adalah bagaimana mesin telah menampilkan peta cahaya dan peta Albedo pada saat yang sama, sejak munculnya peta cahaya. (Mesin gempa pada tahun 1996 mungkin?)
Anda dapat memiliki lebih banyak lapisan UV, jika Anda ingin melakukan multitexturing seperti untuk medan, peta cahaya, albedo besar, detail albedo, peta normal ...

Sayangnya, rasterizer tidak akan pernah memilih lapisan UV tergantung pada primitifnya. Penyaji seperti itu dapat dilakukan dengan buffer indeks tambahan (primitif ke buffer pemetaan lapisan UV) tetapi tidak ada kartu grafis dan tidak ada API grafis yang mendukung ini. Ini adalah pelanggaran yang tidak perlu untuk KISS.

Jadi, apa yang akan dilakukan seseorang dalam hal ini adalah memisahkan puncak piramida Anda menjadi 4 simpul berbeda selama waktu desain. Pokoknya alasan pertama untuk ini, bukan UV yang membuka tetapi sebagian besar definisi normal. Jika Anda ingin tepi yang tajam, Anda perlu memecahkan bayangan, oleh karena itu Anda harus memiliki normals yang berbeda, mereka juga, seperti UV, biasanya didefinisikan 1-1 dalam aliran vertex.

Saran terakhir, mungkin Anda benar-benar tidak ingin menggunakan bungkusan ini, saya lebih suka menyarankan ini:

masukkan deskripsi gambar di sini

Dengan cara ini Anda memiliki kontinuitas mulus untuk penyaringan dan terlihat di tepi dan di puncak.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.