LOD niveles de detalle en 3D
LOD, Qué es?
LOD significa «Nivel de detalle» y es un concepto utilizado en gráficos por computadora, especialmente en modelado y renderizado 3D, para optimizar el rendimiento y la calidad visual de los modelos 3D en aplicaciones en tiempo real, como videojuegos o simulaciones.
La idea básica detrás de LOD es que no es necesario representar todas las partes de un modelo 3D con el mismo nivel de detalle todo el tiempo. Dependiendo de factores como la distancia desde la cámara y la perspectiva del espectador, puede ajustar el nivel de detalle de un modelo para equilibrar la calidad visual y la eficiencia computacional.
Aunque su uso nace de las aplicaciones 3D en tiempo real. Los LODS pueden ser vistos como una forma de optimización también para el render convencional. En este artículo utilizaremos un ejemplo de LOD aplicado a un modelo
Así es como funciona LOD:
Los LOD pretenden ofrecer la misma calidad de experiencia visual para el usuario. Y por eso suele programarse un número de “calidades” dentro de los motores de tiempo real (unity,unreal engine, etc.) para las diferentes distancias de atención del espectador.
Sólo para ejemplificar el modelo estándar son un mínimo de tres LOD
Modelo de alto detalle (HLOD): esta es la versión de mayor calidad del modelo 3D, que incluye todos los detalles intrincados. Por lo general, se usa cuando el modelo está de cerca y directamente en el foco del espectador.
Modelo de detalle medio (MLOD): esta versión del modelo tiene menos detalles en comparación con el HLOD. Se utiliza cuando el objeto está a una distancia moderada del espectador, donde algunos de los detalles más finos pueden no ser tan perceptibles.
Modelo de bajo detalle (LLOD): El LLOD es la versión menos detallada del modelo. Se utiliza cuando el objeto está lejos del espectador, donde los detalles finos serían indistinguibles debido a la distancia.
La transición entre estos niveles LOD la gestiona dinámicamente el motor de renderizado en función de factores como la distancia entre la cámara y el objeto, el tamaño de la pantalla del objeto y, a veces, incluso las capacidades del hardware del espectador.
Aunque tradicionalmente se describen tres niveles de LOD, La realidad es que se suelen crear tantos LOD como fueran necesarios para adaptarse a la velocidad o necesidades de visualización de cada escena en particular.
Beneficios de los LOD.-
Optimización del rendimiento:
renderizar modelos con alto nivel de detalle para cada objeto en una escena puede resultar costoso desde el punto de vista computacional. Al utilizar modelos con menor detalle para objetos distantes, puede mejorar significativamente el rendimiento y mantener una velocidad de fotogramas constante.
Ahorro de memoria:
almacenar múltiples versiones de un modelo con diferentes niveles de detalle requiere menos memoria en comparación con almacenar solo la versión con mayor detalle de todos los objetos.
Escalabilidad:
los sistemas LOD permiten que los juegos y las aplicaciones sean más escalables y se adapten a una gama más amplia de configuraciones de hardware. Incluso los usuarios con hardware menos potente pueden experimentar la aplicación con un buen equilibrio entre calidad visual y rendimiento.
Realismo:
LOD ayuda a mantener el realismo al garantizar que los objetos en la distancia no tengan detalles innecesarios que no serían visibles para el espectador. Esto hace que las escenas parezcan más naturales y menos abarrotadas.
La implementación de LOD requiere una cuidadosa consideración de cuándo cambiar entre diferentes niveles de detalle y cómo manejar las transiciones sin problemas para evitar artefactos visuales. Es un acto de equilibrio entre mantener la calidad visual y optimizar el rendimiento.
Dado que el objetivo de los LOD es proporcionar la mejor experiencia de calidad del modelo 3D al usuario, se empieza siempre por la versión más completa y “pesada” de geometría para luego ir “abreviando” y transformando la cantidad de polígonos.
Criterios para la creación de LOD.-
Actualmente, existen cuatro tipos diferentes de marcos LOD;
LOD discreto, LOD continuo, LOD dependiente de la vista y LOD jerárquico.
Nivel discreto de detalle
El nivel discreto de detalle es el enfoque tradicional que crea LOD para cada uno de los objetos por separado durante el proceso previo. En tiempo de ejecución,
elige el LOD de cada objeto de acuerdo con la selección particular criterios. Por lo tanto, se llama LOD discreto.
Una ventaja significativa del LOD discreto es que requiere modelo de programación. En segundo lugar, se adapta a los gráficos modernos. y al hardware de forma adecuada.
Cada nivel de detalle se puede compilar fácilmente en tiras de triángulos, lista de visualización, matriz de vértices, etc.
Incluso la implementación de LOD discreto es sencilla; Sin embargo, no es adecuado para una simplificación drástica y no suele escalar bien a objetos grandes.
Nivel continuo de detalle
LOD continuo que se desarrolló en 1976 es una desviación de el enfoque discreto tradicional. A diferencia del LOD discreto,
Crea una estructura de datos a partir de la cual se puede obtener el nivel deseado de detalle.
Es extraído en tiempo de ejecución. Los objetos no utilizan más polígonos que necesario. Por lo tanto, tiene una mejor utilización de los recursos y conduce a mejor fidelidad general.
Se pueden crear transiciones más suaves usando LOD continuo ya que LOD continuo puede ajustar los detalles gradualmente. También puede reducir los “saltos” visuales.
Nivel de detalle dependiente de la vista
El LOD dependiente de la vista utiliza los parámetros de la vista actual para representar buena calidad de la vista actual. Por lo tanto, un solo objeto puede abarcar
varios niveles de detalle. Es un refinamiento selectivo de continuo LOD. Muestra porciones cercanas del objeto con una resolución más alta que
porciones distantes.
Las regiones de silueta del objeto se muestran en mayor resolución en comparación con las regiones interiores. También depende de la vista tener en cuenta la visión periférica del usuario.
Una de las ventajas del LOD dependiente de la vista es que tiene una mejor granularidad que el LOD continuo. Esto se debe a que asigna polígonos donde más se necesitan, tanto dentro como fuera de entre objetos. También permite una simplificación drástica de grandes
objetos.
Nivel jerárquico de detalle
LOD dependiente de la vista resuelve el problema con objetos grandes.
Sin embargo, todavía enfrenta dificultades a la hora de exponer objetos pequeños.
Por lo tanto, se creó la jerarquía de LOD para resolver el problema con objetos pequeños. Fusiona objetos en ensamblajes. En suficiente distancias, también podemos crear conjuntos simplificados, pero no como un objeto individual.
El LOD jerárquico encaja muy bien con el dependiente de la vista.
Trata toda la escena como un único objeto que debe simplificarse en moda dependiente de la vista. Estos LOD discretos se agruparán en
una jerarquía y capaz de crear una mejor escalabilidad para grandes estructuras.
Herramientas Para la creación de LOD
Según el grado de control que se desee tener sobre la geometría resultante, existen dos formas de crear LOD
Una es automática y requiere algún algoritmo o script que permite crear las versiones simplificadas de geometría.
En el caso de nuestro ejemplo contamos con un modificador dentro de 3DsMAX llamado ProOptimizer que nos puede generar esas versiones manteniendo la estructura de los materiales. Es muy potente y como se puede ver en el ejemplo es capaz de reducir muchísimo los triángulos utilizados .
El ProOptimizer de MAX triangula las mallas 3d y pasa por un proceso de “Diezmado” (decimation en inglés).
Diezmado de malla (decimation).-
Diezmar algo significa literalmente reducirlo en una décima parte, como en una batalla en la que un ejército destruye una décima parte de otro. En un contexto de modelado 3D, la destrucción de malla implica simplificar el nivel de detalle (LOD) de las formas subyacentes a una malla sin alterar sustancialmente la apariencia visible de la imagen 3D.
Esto se hace mediante el uso de un conjunto de instrucciones de programación informática para reducir el número de vértices, aristas o caras de las formas que componen la imagen. El conjunto de instrucciones de programación utilizadas para simplificar la imagen se conoce como algoritmo de diezmado de malla o algoritmo de LOD. Se dice que un objeto 3D que ha sido simplificado mediante diezmado de malla ha sido modificado con LOD.
Un algoritmo de diezmado de malla revisa los vértices que forman un área local de una malla y elimina vértices, aristas o caras que no son necesarios para mantener los contornos generales del área. Por ejemplo, las aristas se pueden contraer combinando un par de vértices en uno solo.
Las áreas de malla se eliminan según los criterios establecidos por el algoritmo. Cuando se elimina un área, se deja un agujero en la malla. Luego, el algoritmo repara el agujero formando un nuevo triángulo local u otro polígono. Este proceso continúa hasta que se cumple una condición final definida por el algoritmo. Generalmente, esta condición terminal se define en términos de un porcentaje de reducción facial. Por ejemplo, se puede configurar un algoritmo para que produzca una reducción del 75% en el número de triángulos que componen un modelo.
El proceso de diezmado de la malla se puede realizar sin alterar sustancialmente la apariencia visible de un modelo 3D tal como lo ve el ojo humano. Esto se debe a que la mayoría de los modelos contienen inicialmente más complejidad de la que el ojo necesita para reconocer la forma general de la imagen.
Retopología.-
El otro proceso de reducción es la retopología.
La retopología suele usarse para reducir la geometría, pero manteniendo el control sobre la editabilidad del objeto.
Es así que el diezmado suele ser ideal para objetos que tiene que verse bien pero en gran parte no ser funcionales (partes móviles, armados de huesos, moprhing etc. ) mientras que la retopología se usa más para elementos con control sobre su movimiento. Los personajes y objetos como props principales.
Para completar la idea de retopología tenemos el siguiente artículo.
Complemento a los LOD.
Como ya sabemos. La reducción de un modelo 3d implica la pérdida de características visuales. (clavos, tuercas, tornillos, costuras, arrugas, Relieves, etc.) que deben ser compensados con soporte visual a nivel de materiales.
Por tanto, es imprescindible mapear correctamente los modelos. El sistema de diezmado procura, dentro de lo posible, mantener la posición de las texturas del objeto original.
La retopología, al ser un proceso de cero, suele perder información de mapeado.
Tanto si el sistema de diezmado no ha sido el ideal, como si la retopología nos deja sin mapeado es necesario recuperar lo más que se pueda por medio de los mapas de textura.
El procedimiento sería el de desplegado de mapas (unwrapUVW) y de proyección de materiales del objeto LOD00 (original) sobre cualquiera de sus LOD inferiores.
Detallaremos en otro artículo cómo podemos hacer este proceso de diferentes maneras pues depende del software que utilicemos.
Es curioso, pero el sistema de simplificación de malla en cualquiera de sus formas requiere que la máquina pueda manejar oda esa información a fin de no quedarse colgada cuando optimiza. Por tanto el beneficiario principal de trucos de optimización como los LOD es sólo el cliente final.
Conclusiones.
No importa qué tan potentes sean las máquinas en las que creamos contenido 3D o cualquier otra imagen CG, la optimización es buena. Aprender a plantear un contenido sin que signifique una tortura para nuestro hardware es algo necesario.
Sin embargo, la optimización no puede hacerse a partir de un contenido sobre el que se haya escatimado. La optimización nos permite aprovechar la libertad creativa infinita con medios más modestos.
Esto lo decimos porque si bien el usuario final agradece que las cosas vayan más fluidas, a parte creativa siempre agradecerá un equipo más potente o estable. Así no se verán afectados ni a la hora de crear ni a la hora de crear las versiones abreviadas del modelo.