Membelah medan Quadtree - Saya tidak mengerti

12

Sebagian besar makalah yang saya baca mendasarkan medan mereka dalam beberapa bentuk pada quadtree. Lihat ini di halaman 38 :

http://www.slideshare.net/repii/terrain-rendering-in-frostbite-using-procedural-shader-splatting-presentation?from=ss_embed

Bukankah poin pertama bertentangan dengan dua terbawah? Bagaimana Anda bisa memiliki kisi simpul 33x33 tetap per daun namun berbicara tentang pembagian adaptif di pohon quad? Terminologi ini membingungkan dan saya akan menghargai kejelasan ini!


Inilah asumsi saya:
Menempatkan kembali tambalan setiap kali perubahan quadtree menjadi hit, bukan?

http://www.dukecg.net/QuadtreeTerrain.png

  1. Quadtree mulai dari batas medan.
  2. Iterate ke lokasi pengamat.
  3. Versi terbatas (tidak lebih dari 1 perbedaan level antara tetangga)
  4. Frustum cull.
  5. Tempatkan tambalan medan di setiap daun yang dihasilkan, di mana skalanya berbeda tetapi resolusinya selalu 33x33.
George R
sumber

Jawaban:

7

Tidak terlalu. Jika Anda berpikir untuk menggunakan quadtree untuk tingkat detail terain, semua node yang Anda simpan biasanya memiliki struktur data yang sama.

Dalam contoh Anda, struktur itu adalah submesh 33 × 33 bahwa node akan tahan. Tergantung pada tingkat node, bahwa 33 × 33 mesh akan beradaptasi (adaptif) untuk menutupi area yang lebih luas. Node yang lebih besar akan mengisi ruang yang lebih besar, tetapi submesh-nya masih berupa patch vertex 33x33.

Setelah pohon dibangun, Anda dapat melakukan pemusnahan frustrasi dengan turun pohon dan membuang node yang tidak berpotongan.

Satu hal yang perlu diingat, adalah bahwa Anda kemungkinan besar perlu mengatasi celah yang muncul ketika simpul yang lebih besar berada di sebelah simpul yang lebih kecil. Salah satu cara mudah adalah dengan menyesuaikan (runtuh) setiap simpul yang tidak dibagi di antara jerat.

Adapun Anda pertanyaan lain tentang pohon yang diganti, ya. Kecuali jika Anda ingin masuk ke dalam mengelola data pohon, saya sarankan hanya membuat tumpukan dan menyiramnya ketika tampilan bergerak cukup.

bitcruncher
sumber
Masalah dengan jahitan yang terlihat pada ubin berukuran berbeda dijelaskan pada slide 39-40 dari presentasi. Tampaknya mereka menghapus pertigaan dengan menggunakan salah satu dari 9 jerat yang mungkin di persimpangan (lihat slide 40).
bummzack
disclaimer: IDNRTFA ;-)
bitcruncher
3

"Unit" medan adalah 33x33 blok. Jika Anda dekat, itulah yang akan Anda lihat. Jika Anda lebih jauh, blok-blok ini menyatu menjadi potongan LOD yang lebih rendah.

Alasan mereka menggunakan potongan tetap pada tingkat terendah (daun), adalah karena perangkat keras modern jauh lebih cepat dengan geometri statis. Sistem seperti ROAM, di mana banyak pekerjaan dilakukan untuk mengurangi jumlah poligon akhirnya, dikenakan hukuman kinerja yang cukup besar.

drxzcl
sumber
Jadi daun ujung tidak masing-masing daun ujung yang mungkin (pada ukuran kotak terkecil), itu daun akhir untuk iterasi itu, berdasarkan jarak, jadi beberapa mungkin 16x16 dan yang jauh mungkin 256x256 (atau apa pun)? Bukankah itu berarti bahwa setiap kali quadtree berubah, tambalan harus ditempatkan dan ditingkatkan lagi?
George R