Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Niveles de LOD

Iniciado por Prompt, 14 de Julio de 2008, 02:15:16 PM

« anterior - próximo »

Prompt

Hola quiero plantear un tema a ver si entre todos conseguimos dar luz a la moda de hacer n niveles de geometría LOD para los modelos que tenemos en nuestros juegos.

Bien, aparentemente lo típico es hacer ( pongamos por ejemplo 5 aunque son muchos ... ) 5 LOD del personaje que vamos a usar, según ocupe en pantalla y este más o menos cerca pues aplicamos un LOD u otro.

Bien que coste tiene esto?
- Geometría por cada nivel de detalle.
- Textura por cada nivel de detalle.
- Otras texturas ( normal map etc... )

Para qué usar varias geometrías y texturas de tamaño inferior?
Supuestamente para que la textura encaje a menos detalle con esa geometría, con lo cual en los niveles cercanos al máximo 3 y 4, pues la calidad es mejor visualmente.


Yo acualmente utilizo un LOD dinámico basado en indices de vertice, es decir un VBO y un index buffer progresivo de [0.0, 1.0] de 0% a 100% de geometría.

El inconveniente, que yo creo que es una garantía de calidad, es que tienes que asegurarte que tu geometría se "pliega" bien por ambos lados ( verticalmente hablando) del modelo.

Ventajas:
- 1 Sola geometría por LOD.
- Si controlamos los indices correctamente y no calculamos esos indices on the fly no tenemos por que perder performance cuando hacemos variar el LOD del personaje. Vease 100 tios en pantalla dandose de piñas.
- 1 Sola textura, habría que ver el costo de que se vean 50 pixeles en LOD 0.4 y usar una textura de 512 por ahí, no obstante para eso están los mipmaps.

Creeis que un LOD de indices es un mal planteamiento?

Saludos!

Mars Attacks

Puestos a eso, perdería tiempo tratando de implementar LODs dinámicos (como los que se ven por las GameTools).

Edito: Ups, te leí mal :) Pero bueno, dejo el link, que mola.

Zaelsius

CitarBien que coste tiene esto?
- [...]
- Textura por cada nivel de detalle.
- [...]

¿Realmente haría falta una nueva textura? ¿Por qué no dejar a la API de turno que seleccione automáticamente el mip-map más adecuado? (suponiendo que uses mip-maps)

No soy ningún experto en LOD (ni en muchas otras cosas :D) pero creo que el problema fundamental de las soluciones dinámicas consiste en saber qué índices vas quitando/poniendo de manera que la transiciones sean lo más suaves posibles. O sea, el algoritmo en sí. Recuerdo haber leído algunos papers sobre el tema hace años, así que supongo que ahora habrá aun más información.

Si dices que la moda actual es usar un número pequeño de LOD, hechos "a mano", será porque quizá los sistemas dinámicos no funcionan demasiado bien aun. Es una suposición basada en lo que comentas, yo realmente no sé qué tipo de LOD es más común hoy en dia para personajes.

Lo que tu propones es una solución más bien híbrida, ¿no? Es decir, usando un algoritmo de LOD dinámico, precalculas varios niveles de detalle offline, que consisten en conjuntos de índices. Te guardas esos conjuntos y los usas luego en tiempo real segun el LOD deseado. Es una buena idea, ciertamente.

Mars Attacks

Si no recuerdo mal, los LODs del GameTools usan mipmapping para solucionar lo de las texturas. La calidad tanto visual como de rendimiento que parecen ofrecer es excelente, no creo que sea más problema que el de tener que programarlo bien si no lo soportabas.

Prompt

Si definitivamente, las texturas de los personajes deberian tener un numero de mipmaps tal que de LODs, por defecto está a 10 creo, tanto en OGL como en DX.

Yo digo, que en tiempo de carga o mejor, en exportación se guarden esos indices y luego solo tienes que cambiar el index buffer del VBO ( vertex buffer object ).

El problema es que es "costoso" hacer un buen modelo que dinamicamente se "pliegue". No obstante creando un buen plugin de Max (u otros) y pudiendo ver dinamicamente aunque sea en un editor como se pliegan los vertices se podriaa acelerar el proceso para que no fuera tan lento de desarrollar un modelo para LOD dinámico.

Voy a ver lo de las GameTools






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.