Artículo publicado en el reciente CoSECiVi 2020, celebrado online el 7 y 8 de octubre de 2020.
RESUMEN:
This work presents a continuous level of detail representation of foliage of trees. Multiresolution modeling allows to adapt the number of polygons to render to the relevance of the object in the scene. However, foliage is represented by isolated polygons, so most of the multiresolution modeling methods do not work properly with this part of the tree. This paper presents a multiresolution model that allows to adapt the number of leaves to the relevance of the foliage in the scene. The criterion to select the appropriate leaves to render is based on a previously performed view-driven simplification. To adapt this parameter in real time, data structures and the necessary algorithms that allow us to extract the appropriate number of polygons are presented. Some tests have been developed to evaluate the proposed solution and results show the good performance of the presented continuous level of detail.
3. Introducción
La vegetación es una parte muy importante en un
ambiente exterior. Pero la gran cantidad de polígonos que
los componen es un problema.
El modelado a nivel de detalle es una solución para
representar objetos con muchos polígonos. Pero la
mayoría de métodos no manejan adecuadamente el
follaje.
Los métodos existentes pueden dividirse entre:
Discretos
Continuos
4. Objetivos
Se quiere crear un modelo continuo multirresolución que:
Permita representar el follaje
Adecuar el número de polígonos según su importancia
en la escena.
El método de simplificación a usar será el método basado
en puntos de vista (VDS).
El modelo resultante debe desarrollarse para ser incluido
en los motores de juego de forma sencilla.
6. Modelo: VDS
Utiliza una métrica basada en una medición teórica de
información llamada información mutua de puntos de
vista (VMI).
En cada iteración, el método busca la hoja que produce el
menor error al eliminarla.
Después de eliminar una hoja, se busca la hoja más
cercana y se escala en función del error y en el tamaño de
la hoja eliminada.
8. Modelo: Estructura de datos
struct Leaf{
Vertex vertices [4];
int leafToSplit;
int leafToCollapse;
float scale;
}
vector<leaf> leaves;
La estructura almacena todos los datos
necesarios para dibujar cada uno de los
niveles de detalle requeridos.
El vector de hojas almacena la lista de
todas las hojas que forman el follaje.
Todos los datos necesarios para
representar una hoja se almacenan en
struct Leaf:
vertices
leafToSplit
leafToCollapse
scale
9. Algoritmo de renderizado
Para la extracción del nivel de detalle se utilizan dos
criterios:
La distancia del elemento vegetal al punto de vista del
espectador (distanceToViewer).
El tamaño del elemento en la escena final
(projectedArea).
LOD=distanceToViewer ∗ a + projectedArea ∗ b
10. Algoritmo de renderizado
Cuando el espectador se mueve, se compara este valor con
el obtenido en la anterior posición:
Mismo número de hojas: No es necesario realizar
ninguna acción.
Menos hojas para renderizar: Hay que eliminar hojas y
aumentar el tamaño de algunas de las que se quedan.
Mayor número de hojas: Hay que añadir hojas y
reducir el tamaño de algunas de las que se
redimensionaron.
11. Algoritmo de renderizado
Cada vez que se inicia el proceso, el
algoritmo debe evaluar la relevancia
del follaje en la escena y si se ha de
eliminar (leafSplit) o añadir
(leafCollapse) hojas.
Cada hoja, cuando se quita o se
agrega, solo modifica otra hoja
(leafToModify). El valor a modificar se
guarda en el valor scale.
Cuando se elimina una hoja, esta
intercambia su escala con la hoja que
modifica.
Cuando se añade una hoja, esta
recupera su valor de escala original.
13. Resultados
Se ha implementado en Unity.
Se han utilizado tres especies:
English oak: 20,146 hojas
Carya illinoinensis: 8,059 hojas
Betula popufolia: 12,140 hojas
Para validar el modelo multirresolución se han realizado ensayos con
las tres especies vegetales por separado y con bosques formados por
estas especies.
19. Conclusiones
En este trabajo se ha presentado la estructura y el
algoritmo que permite extraer los datos de simplificación
obtenida por el método VMI.
El resultado es un modelo multirresolución continuo, que
actualiza la representación del elemento al alejar y acercar el
elemento al espectador.
Además, el modelo multirresolución ha sido diseñado para
ser implementado fácilmente en motores de juegos,
habiendose probado en Unity.
20. Conclusiones
El tiempo de extracción del nivel de detalle adecuado es
muy bajo siendo, como demuestran los resultados, menos de
1 milisegundo en modelos con más de 40.000 polígonos.
Los resultados obtenidos demuestran que el modelo
permite adaptar de forma continua el detalle del follaje en
una escena.
En cuanto a la visualización del bosque, también los
resultados apoyan que el costo de renderizado se reduce
significativamente mientras se mantiene la calidad visual.
21. Trabajo futuro
Implementación del algoritmo en la GPU, para poder
obtener un resultado mucho más adecuado a la tecnología
actual.
Se quiere aplicar animación a las hojas para simular los
efectos del viento sobre ellas. En esta futura línea de trabajo,
también se animarán troncos y ramas añadiendo algún
esqueleto a las especies vegetales.