División del terreno Quadtree: no lo entiendo


12

La mayoría de los documentos que he leído basan su terreno de una forma u otra en un quadtree. Vea esto en la página 38 :

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

¿El primer punto no contradice a los dos inferiores? ¿Cómo puede tener una cuadrícula de vértice 33x33 fija por hoja y hablar de división adaptativa en un árbol cuádruple? ¡La terminología es confusa y agradecería cualquier claridad al respecto!


Aquí están mis suposiciones:
volver a colocar los parches cada vez que el quadtree cambia sería un éxito, ¿no?

http://www.dukecg.net/Quadtree Territorio.png

  1. Quadtree comenzando en los límites del terreno.
  2. Iterar a la ubicación del observador.
  3. Versión restringida (no más de 1 nivel de diferencia entre vecinos)
  4. Frustum cull.
  5. Coloque el parche de terreno en cada hoja resultante, donde la escala difiere pero la resolución siempre es 33x33.

Respuestas:


7

No en realidad no. Si está pensando en usar un quadtree para el nivel de detalle del terreno, todos los nodos que almacene generalmente tendrán la misma estructura de datos.

En su ejemplo, esa estructura es una malla 33 × 33 que los nodos mantendrán. Dependiendo del nivel del nodo, esa malla 33 × 33 se adaptará (adaptativa) para cubrir un área más amplia. El nodo más grande llenará un espacio más grande, pero su malla sigue siendo un parche de vértice 33 × 33.

Una vez que se haya construido el árbol, puede eliminar su frustum bajando el árbol y descartando los nodos que no se cruzan.

Una cosa a tener en cuenta es que es muy probable que necesite abordar las grietas que surgen cuando un nodo más grande se dibuja junto a un nodo más pequeño. Una manera fácil es simplemente ajustar (contraer) los vértices no compartidos entre las mallas.

En cuanto a su otra pregunta sobre el árbol que se está reemplazando, sí. A menos que desee ingresar a los datos que administran el árbol, le sugiero que haga una pila y la vacíe cuando la vista se mueva lo suficiente.


El problema con las costuras visibles en mosaicos de diferentes tamaños se explica en la diapositiva 39-40 de la presentación. Aparentemente, eliminan las uniones en T utilizando una de las 9 posibles mallas en las uniones (ver diapositiva 40).
bummzack

descargo de responsabilidad: IDNRTFA ;-)
bitcruncher

3

La "unidad" del terreno son 33x33 bloques. Si estás cerca, eso es lo que verás. Si está más lejos, estos bloques se fusionan en fragmentos LOD inferiores.

La razón por la que usan fragmentos fijos en el nivel más bajo (hoja) es porque el hardware moderno es mucho más rápido con geometría estática. Los sistemas como ROAM, donde se realiza una gran cantidad de trabajo para reducir el conteo de polígonos eventuales, incurren en penalizaciones de rendimiento considerables.


Entonces, la hoja final no es cada hoja final posible (en el tamaño de cuadrícula más pequeño), es la hoja final para esa iteración, según la distancia, por lo que algunas pueden ser 16x16 y las distantes pueden ser 256x256 (o lo que sea). ¿No significa eso que cada vez que el quadtree cambia, los parches tienen que ser colocados y escalados nuevamente?
George R
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.