Mipmapping
Mipmapping (dijelaskan secara rinci dalam Bab 18,
"Tekstur Pemetaan") adalah teknik pemetaan tekstur
bertujuanmeningkatkan kualitas visual yang jauh, primitif bertekstur. Dalam
segitiga jauh, area layar dari segitiga (dalam piksel) akan lebih kecil dari
ukuran tekstur. Ini berarti setiap pixel akan menjadi bertekstur dengan beberapa
texels, dan sebagai segitiga bergerak bahkan sedikit, flicker muncul. Tekstur
mipmapping karyaprecomputing serangkaian peta tekstur skala-down (½, ¼, dan
sebagainya) yang disebut mipmaps. Mipmaps adalahprefiltered sehingga
mereka rata-rata nilai Texel benar.Kemudian, ketika texturing, segitiga
bertekstur menggunakanmipmap yang paling menyerupai ukuran layar. Dengan
cara ini flicker berkurang, dan bahkan segitiga jauh mendapatkan texturing
yang tepat.
Berdasarkan konsep yang sama, Willem de Boer merancang
algoritma geomipmapping yang
menerapkan sistem medan gumpalan dengan menggunakan mipmaps dihitung bukan padatekstur,
tapi pada geometri medan (maka nama). Semua yang perlu kita lakukan adalah
memilih hak geometris representasi tergantung pada jarak ke penonton, dan pastikan
jahitan di mana dua berbeda representasi memenuhi menggabungkan lancar tanpa
artefak terlihat.
Konsep di balik geomipmapping dapat disesuaikan dengan struktur data medan. Namun, karena itu adalah tekstur seperti pendekatan, cara termudah untuk menggunakannya adalah mulai dari representasi heightfield. Kebetulan, heightfields dapat direpresentasikan dengan menggunakan gambar grayscale, jadi adanya kemiripan dengan peta tekstur masih hadir. Kami kemudian harus menghitung mipmaps geometri.Untuk melakukannya, kita dapat menurunkan heightfield yang bitmap menggunakan software pengolah gambar atau hanya menghitung mereka di runtime. Hanya ingat bahwa mipmaps dihitung secara berurutan dengan membagi ukuran terakhir tekstur peta dengan faktor dua, menggabungkan masing-masing empat texels dari peta awal menjadi satu, nilai rata-rata. Sekali lagi, bangunan mipmaps geometri tidak berbeda daripada bekerja pada tekstur.
Ingat bahwa ukuran medan Anda harus menjadi kekuatan dua untuk metode ini untuk
bekerja (karena subdivisi langkah). Secara khusus, ukuran daerah harus
dalam bentuk 2n +1 karena kita memerlukan simpul ekstra untuk memastikan kami
mendapatkan sejumlah paha power-of-dua.Lihat
Gambar 14.4, yang menunjukkan
ini dalam mesh 4x4, menggunakan simpul 5x5. Gambar 14.4. Untuk
membuat 4x4 mesh segitiga (yang benar-benar memegang 32 segitiga),
kita perlu mesh vertex 5x5.
Langkah pertama dalam
proses rendering adalah untuk secara efektif memuat struktur data dalam memori. Untuk
geomipmapping, data terrain diatur dalam quadtree, setiap simpul daun mengandung
apa yang disebut medan yang blok. Blok Medan adalah bagian dari medan yang
terdiri dari beberapa segitiga masing-masing. Dalam formulasi awalnya, de
Boer menyarankan menggunakan jala 4x4 (terdiri dari 32 segitiga). Untuk
membangun quadtree, Anda mulai dengan data terrain Seluruh set. Simpul akar menyimpan kotak 3D berlari, dan
kemudian masing-masing empat keturunan mengandung salah satu dari empat
subquadrants dari kumpulan data. Setiap node berikutnya akan berisi kotak
pembatas dari set masuk dan lulus empat pointer ke keturunannya sampai node
persis terdiri dari satu blok medan. Sebuah 257x257 peta daerah akan
memerlukan tepat enam tingkat (berukuran 256, 128, 64, 32, 16, 8, dan 4
segitiga di masing-masing).
Pengorganisasian data dalam quadtree akan membantu kita melakukan
kliping hirarkis cepat. Kami akan kedalaman melintasi pohon, dan segera setelah
kotak berlari dari satu simpul ditolak sebagai benar-benar tak terlihat, seluruh
subtree akan ditolak, sehingga mempercepat perhitungan secara signifikan. Perhatikan
bagaimana, sampai saat ini, kami belum melakukan apapun LOD. Semua yang
kita lakukan adalah mengatur sumber data dalam quadtree, yang memang akan
mempercepat kliping, tapi itu tentang hal itu. Bahkan, kita bisa berhenti
di sini dan menerapkan algoritma sebelumnya. Menggunakan pemusnahan
perangkat keras, itu akan menjadi cara yang baik untuk memilih hanya mereka segitiga
efektif layar. Selain itu, tata letak blok memungkinkan untuk primitif
dikemas seperti strip dan segitiga diindeks daftar yang akan digunakan, memberikan
kinerja yang cukup baik. Tetapi tidak ada kebijakan LOD belum, segitiga begitu
jauh mungkin akan menggerogoti semua siklus CPU kami, efektif membunuh kinerja. Di
sinilah geomipmaps memasukkan adegan untuk mempercepat proses rendering. Idenya
sangat mudah: Ketika kita mencapai daun quadtree, kami memutuskan untuk
menggunakan resolusi untuk itu blok medan. Kita perlu untuk tidak hanya
menyimpan medan resolusi tinggi, tetapi versi mipmapped juga. Itu kriteria
keputusan, seperti biasa, tergantung pada jumlah detail di blok dan jarak ke
penampil.
Kami mulai dengan
menghitung kesalahan blok geometri, dinyatakan sebagai jarak maksimal (dalam
ruang layar) dari posisi mipmap untuk posisi sebenarnya dari geometri yang
sebenarnya. Kami menyebutnya kesalahan karena merupakan mengukur berapa
banyak deviasi sebenarnya ada antara nilai riil (diambil dari mesh) dan nilai kita
menggunakan untuk tujuan rendering. Dengan demikian, kita mengambil semua
simpul dalam satu blok dan menghitung jarak dari simpul mipmapped ke geometri nyata. Ketika diproyeksikan ke layar, ini jumlah pixel kembali, yang
mempertimbangkan detail (lebih detail, semakin error) dan jarak (semakin jauh,
semakin sedikit kesalahan). Kemudian, kami bekerja dengan ambang tetap (nilai
sekitar 5 piksel sering) dan pilih tingkat mipmap pertama sehingga kesalahan dibatasi.
Jadi, blok geometri yang jauh akan sangat disederhanakan, dan blok dekat tidak
akan. sebuah menarikefek samping dari pendekatan seperti itu adalah bahwa
kamera top-down biasanya akan berakhir render resolusi
lebih rendah jerat, karena kesalahan layar-space akan hampir
tidak ada. Menggunakan geomipmapping, kita harus berurusan dengan dua
isu potensial untuk menyampaikan rasa baik realisme. Pertama,
kita harus berurusan dengan kesenjangan geometriyang terjadi setiap
kali dua blok resolusi yang berbeda berdekatan. Ini melanggar kontinuitas medan.
Kedua, kita harus
memastikan bahwa perubahan secara rinci dalam wilayah tertentu hampir tak
terlihat, sehingga pemain tidakmenyadari pekerjaan LOD yang
sedang terjadi. Mari kita memeriksa setiap masalah dan cara untuk
berurusan dengan itu.
Sumber :

Komentar
Posting Komentar