Spaccatura del terreno Quadtree - Non capisco


12

La maggior parte dei documenti che ho letto basano il loro terreno in un modo o nell'altro su un quadrifoglio. Vedi questo a pagina 38 :

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

Il primo punto non contraddice i due inferiori? Come si può avere una griglia di vertice fissa 33x33 per foglia ma parlare della divisione adattiva in un albero quad? La terminologia è confusa e apprezzerei ogni chiarimento al riguardo!


Ecco i miei presupposti:
riposizionare le patch ogni volta che le modifiche al quadrifoglio sarebbero un successo, no?

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

  1. Quadtree a partire dai limiti del terreno.
  2. Scorrere fino alla posizione dell'osservatore.
  3. Versione vincolata (non più di 1 differenza di livello tra vicini)
  4. Frustum cull.
  5. Posiziona il patch di terreno in ogni foglia risultante, in cui la scala differisce ma la risoluzione è sempre 33x33.

Risposte:


7

No, non proprio. Se stai pensando di utilizzare un quadrifoglio per il livello di dettaglio del terreno, i nodi che memorizzi avranno tutti la stessa struttura di dati.

Nel tuo esempio, quella struttura è una sottomissione 33 × 33 che i nodi terranno. A seconda del livello del nodo, quella mesh 33 × 33 si adatterà (adattiva) per coprire un'area più ampia. Il nodo più grande riempirà uno spazio più ampio, ma la sua sottomissione è ancora una patch di vertice 33 × 33.

Dopo che l'albero è stato costruito, puoi fare l'abbattimento del frustum scendendo dall'albero e scartando i nodi che non si intersecano.

Una cosa da tenere a mente è che molto probabilmente dovrai affrontare le crepe che sorgono quando un nodo più grande disegna accanto a un nodo più piccolo. Un modo semplice è semplicemente regolare (comprimere) tutti i vertici non condivisi tra le mesh.

Per quanto riguarda l'altra domanda sull'albero che viene sostituito, sì. A meno che tu non voglia entrare nei dati che gestiscono l'albero, ti suggerisco solo di creare uno stack e svuotarlo quando la vista si sposta sufficientemente.


Il problema con le cuciture a vista su piastrelle di dimensioni diverse è spiegato nella diapositiva 39-40 della presentazione. Apparentemente rimuovono le giunzioni a T usando una delle 9 possibili maglie nelle giunzioni (vedi slide 40).
Bummzack,

dichiarazione di non responsabilità: IDNRTFA ;-)
bitcruncher

3

Le "unità" del terreno sono 33x33 blocchi. Se sei vicino, è quello che vedrai. Se sei più lontano, questi blocchi vengono fusi in blocchi LOD inferiori.

Il motivo per cui usano blocchi fissi al livello più basso (foglia), è perché l'hardware moderno è molto più veloce con la geometria statica. Sistemi come ROAM, in cui viene svolto molto lavoro per ridurre l'eventuale conteggio dei poligoni, comportano penalità di prestazione considerevoli.


Quindi la foglia finale non è ogni possibile foglia finale (alla dimensione della griglia più piccola), è la foglia terminale per quella iterazione, in base alla distanza, quindi alcune possono essere 16x16 e quelle distanti possono essere 256x256 (o qualsiasi altra cosa)? Ciò non significa che ogni volta che il quadtree cambia, le patch devono essere posizionate e ridimensionate di nuovo?
George R
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.