Actualmente estoy trabajando en mi tesis de maestría sobre LOD y la simplificación de mallas, y he estado leyendo muchos artículos académicos y artículos sobre el tema. Sin embargo, no puedo encontrar suficiente información sobre cómo se usa LOD en los juegos modernos. Sé que muchos juegos usan algún tipo de LOD dinámico para el terreno, pero ¿qué pasa en otros lugares?
Level of Detail for 3D Graphics, por ejemplo, señala que el LOD discreto (donde los artistas preparan varios modelos por adelantado) se usa ampliamente debido a la sobrecarga de rendimiento del LOD continuo. Sin embargo, ese libro fue publicado en 2002, y me pregunto si las cosas son diferentes ahora. Ha habido alguna investigación en la realización de LOD dinámico utilizando el sombreador de geometría ( este documento, por ejemplo, con su implementación en ShaderX6), ¿se usaría en un juego moderno?
Para resumir, mi pregunta es sobre el estado de LOD en los videojuegos modernos, ¿qué algoritmos se usan y por qué? En particular, ¿se utiliza la simplificación continua dependiente de la vista o la sobrecarga en tiempo de ejecución hace que el uso de modelos discretos con una combinación adecuada e impostores sea una solución más atractiva? Si se usan modelos discretos, ¿se usa un algoritmo (por ejemplo, agrupación de vértices ) para generarlos sin conexión, ¿los artistas crean manualmente los modelos o tal vez se usa una combinación de ambos métodos?
fuente
Respuestas:
Por ahora parece que todavía se prefiere LOD discreto, pero queda por ver si esto cambiará con la próxima generación de hardware de consola.
Por lo que vale, Tom Forsyth ha escrito mucho sobre LOD continuo, al que llama "mallado progresivo". Game Programming Gems 2 pretende tener uno de estos artículos, pero parece reflejarse aquí .
Creo que uno de los juegos de Tom se envió usando mallado progresivo en el hardware de la consola de última generación. No creo que sea la sobrecarga de cómputo que a la gente le preocupa con la LOD continua. Creo que es más que LOD discreto es más fácil. El LOD continuo hace un levantamiento más pesado en la tubería de herramientas y no tiene suficientes ventajas claras.
En cuanto a la generación de LOD discretos, utilizamos una combinación de herramientas automáticas y creación de artistas. El DirectX SDK viene con algunas cosas para reducir automáticamente la geometría y creo que lo usamos como primer paso, si la calidad no es lo suficientemente buena, los artistas generan los LOD discretos a mano o usando herramientas adicionales en Maya.
fuente
LOD no solo se usa para terreno, sino también para siluetas de estructuras distantes y para vistas de águila de juegos de estrategia / simulación. No conozco los detalles de los algoritmos, y supongo que esa es la parte principal de su pregunta, pero quería darle algunos ejemplos del estado de LOD en los videojuegos modernos.
fuente
Un enfoque moderno para la LOD continua es la teselación de hardware. La teselación de hardware se implementó en DirectX 11 y esencialmente proporciona una subdivisión programable de superficies. Como esto se implementa en la GPU, permite detalles mucho más altos que los proporcionados por la teselación generada por la CPU. Al subdividir las superficies en función de la distancia de visualización, por ejemplo, puede proporcionar una forma de LOD continuo.
La teselación de hardware es una característica muy nueva de las GPU y no hay muchos juegos que la utilicen. Sospecho que los juegos que lo usan principalmente como un complemento para el mapeo de relieve, en lugar de un mapa de relieve en el sombreador de píxeles, puede modificar la geometría real. Probablemente haya mucho espacio para futuras investigaciones sobre la simplificación y mejora de mallas utilizando la teselación de hardware.
Algunos recursos más:
fuente
Aquí hay una sugerencia alternativa, solo para mantenerla interesante. La descomposición convexa puede crear geometrías aproximadas con bastante rapidez, y generalmente es para mallas de colisión. Estas mallas funcionan bien como LOD y es plausible como un diezmado en tiempo real para acelerar una tubería.
http://codesuppository.blogspot.com/2009/11/convex-decomposition-library-now.html
fuente
LOD se trata de tratar de mantener constante la cantidad de procesamiento a lo largo del tiempo. El nivel jerárquico de detalle es la única forma de hacerlo para escenas de considerable detalle. Si está lo suficientemente cerca de un objeto, se descompone en varios objetos. Este LOD recursivo proporciona no solo un mecanismo simple para manejar los puntos de transición para cambiar en nuevos niveles de detalle, sino que también permite que el recuento de llamadas de procesamiento permanezca casi igual sin importar qué tan lejos / cerca llegue a sus objetos mundiales.
Está muy bien tener excelentes LOD para sus mallas y texturas, pero en al menos un juego que envié en la PS2, la forma en que ahorré tiempo fue agrupar todo el follaje en sectores en llamadas de un solo sorteo. Esta llamada de sorteo más grande tomó casi un 90% menos de tiempo que el procesamiento de todas las variantes de bajo alojamiento, incluso con transiciones de material cuidadosamente ordenadas y procesamiento por lotes de cada tipo de malla. Por lo tanto, considere LOD con cuidado. No se trata solo de objetos individuales. Se trata de toda la fase de renderizado.
fuente
Otro tema a considerar en su trabajo (aunque podría redactarse fácilmente una tesis completa solo sobre este tema) es la generación de terreno procesal.
Muchos proyectos modernos están comenzando a utilizar la generación de terreno procesal en tiempo real para producir extensiones masivas de terreno (Outerra, Infinity (INovae), por nombrar algunos de los más destacados). La LOD discreta simplemente no es una opción, debido a la naturaleza procesal de las mallas.
Estos terrenos a menudo usan estructuras de partición jerárquicas, como los cuadrúpedos, para determinar la LD, y generan una malla de la resolución adecuada en función de la profundidad del nodo del árbol.
Sin el uso de continuos LOD, estos increíbles proyectos simplemente serían imposibles.
fuente