Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Geomipmaps

Iniciado por Topper, 16 de Noviembre de 2004, 11:37:46 AM

« anterior - próximo »

Topper

 Buenas. Estoy realizando una implementación de Geomipmaps y no tengo claro algunos puntos.. Ahí van, por si alguno sabe del tema:   :ph34r:

- Es posible que dos patches conectados entre sí difieran en más de un nivel de resolución? por ejemplo, uno con nivel 0 (máxima resolución y otro con nivel 4 (muy poca geometría)

- A la hora de seleccionar un nivel de Lod, debo ir incrementando la suma de los errores entre uno y otro nivel de resolución de un Patch hasta llegar, como máximo, al límite definido en la aplicación?

Actualmente, para seleccionar un nivel de LOD, empiezo por el de mayor resolución, proyecto sus dos vértices que mayor distancia de error dan a screen space y acumulo la distancia obtenida en screen space para pasar al siguiente nivel de LOD. así hasta que llegue al tope permitido o al nivel de menor geometría.

Gracias de antemano.

Saludos.

Haddd

 ¿Cómo sabes los vértices que mayor distancia de error dan ?


Topper

 por cada nivel de lod, calculo la distancia en object space de cada vértice del lod contra el que supuestamente debería estar en el siguiente nivel para la misma posición XZ. De echo, ese supuesto vértice no existe en el siguiente nivel y se debe hallar la posición media entre dos vértices adyacentes al que estás testeando.  Para los que me hayan dado mayor distancia en object space de los vértices del lod que estoy testeando, cojo el mayor y su correspondiente del siguiente nivel (ese del que calculo la media).

Luego, a cada frame, proyecto estos dos vértices a screen space y calculo la distancia para ver si es menor que el máximo error que permita en la aplicación (usualmente 4 pixels de error).

No sé si éste es un método correcto para hacerlo  :blink:

Si no se me entiende... no me extraña!  (twist) Pregunta e intentaré aclarar los puntos.

Saludos,

Haddd

 Entiendo. Buena idea. (ole)  

Astat

 Para la implementacion que hize yo, me fue muy util http://www.flipcode.com/articles/article_g..._geomipmaps.pdf

Habla sobre muchos temas, incluido el que preguntas.

Topper

 Astat, una consulta. En la implementación que hiciste era posible que salieran dos patch o más que sean adyacentes a un nivel de LOD mayor que una unidad?

Me explico, uno con nivel de LOD 0 y el de al lado (da igual que lado) con nivel de LOD 4.

Te lo comento porque eso es lo que me está pasando y no sé si es correcto. Se que entre diferentes niveles de LOD tengo que ajustar el de mayor geometría al otro, pero me parece un poco extraño que haya lugares en el mapa donde se difiera más de una unidad entre uno y otro Patch.

Eché un vistazo al paper que me comentaste y está de p.. m..


Astat

 
CitarEn la implementación que hiciste era posible que salieran dos patch o más que sean adyacentes a un nivel de LOD mayor que una unidad?

Depende del terreno, claro, pero creo que se daria casi siempre patches que difieran en mas de un nivel de LOD, por ejemplo:



Ahi tenemos dos patches colindantes con los dos extremos del LOD. Fijate que el patch que tiene nivel 0 tiene elevaciones en el terreno, mientras el de al lado es casi plano (por eso se le aplica menos detalle).

CitarEché un vistazo al paper que me comentaste y está de p.. m..

No en vano ese tio invento los geo-mipmaps  ;)

PD: He desactivado el arreglo entre patches de distinto nivel para que quedara mas claro la foto.

Un saludo

CoLSoN2

 Para los interesados en terrenos, este artículo describe (brevemente, por desgracia) una demo que incluye y que os recomiendo veais, a mi me pareció genial.
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Topper

 Astat,  gracias por la captura. Me ha sido muy clarificadora.  (ole)
Quería comentarte si has necesitado implementar Geomorphing para evitar el "poping" entre cambios de LOD. He estado haciendo pruebas y algunas veces noto dicho efecto en el render de la malla texturada, por lo que quizá tenga que implementar esta característica mediante 'vertex tweening', lo que me obligaría a doblar la memoria para los datos de la malla que conforma el terreno.
También es posible que no haga los precálculos de distancia para cada cambio de LOD correctamente.  (nooo)

Cuando tenga algo runneable ya postearé una demo pa que la echéis un vistazo.

Saludos.

Astat

 
CitarQuería comentarte si has necesitado implementar Geomorphing para evitar el "poping" entre cambios de LOD

No he utilizado ningun tipo de morphing, mas que nada por el tipo de juego y el tipo de camara que vamos a usar (en el modo normal la camara esta bastante alta y mirando hacia abajo, en otro modo veras mas lejos, pero solo podras girar la camara).


CitarTambién es posible que no haga los precálculos de distancia para cada cambio de LOD correctamente

Yo uso el que explican en el pdf de flipcode, y no va mal. Se nota, pero no mas que en otros juegos.

AK47

 Saludos
Como estais hablando de terrenos, no os importara que os comente mi problemilla (todavia no he implementado los geomipmaps): resulta que tengo un terreno de 257x257. En mi universo, una unidad de Direct3D es un metro, y dejo 20 entre vertice y vertice, por lo que el terreno mide 5140x5140 metros. Por ahora uso una texturizacion muy basica, que consiste en estirar toda una textura sobre el terreno y luego repetir sobre el el de detalle.
El problema es este: en mi tarjeta (Geforce4 MX 420 con 64 de ram) las texturas van perfectamente, pero en una TNT2 Ultra las texturas "saltan": te pones a mirar al suelo (desde una altura de 2 metros) y haces un barrido con la mirada, se nota como las texturas bailan. Si uso un mapa de 513x513 con 20 unidades de distancia tambien, las texturas ya me empiezan a saltar en mi tarjeta, del mismo modo que me saltan cuando uso el anterior de 257x257 con una separacion de por ejemplo 50.
En una tarjeta GF4 Ti 4200 no me pasan estas cosas, sino que tengo que usar una separacion bestial para que las texturas empiecen a saltarme. Alguien sabe algo sobre esto? Como solucionarlo o algun consejo sobre ello? Es logico hacer que una unidad de Direct3D sea un metro?
Muchas gracias ;)

CoLSoN2

Cita de: "AK47"Saludos
Como estais hablando de terrenos, no os importara que os comente mi problemilla (todavia no he implementado los geomipmaps): resulta que tengo un terreno de 257x257. En mi universo, una unidad de Direct3D es un metro, y dejo 20 entre vertice y vertice, por lo que el terreno mide 5140x5140 metros. Por ahora uso una texturizacion muy basica, que consiste en estirar toda una textura sobre el terreno y luego repetir sobre el el de detalle.
El problema es este: en mi tarjeta (Geforce4 MX 420 con 64 de ram) las texturas van perfectamente, pero en una TNT2 Ultra las texturas "saltan": te pones a mirar al suelo (desde una altura de 2 metros) y haces un barrido con la mirada, se nota como las texturas bailan. Si uso un mapa de 513x513 con 20 unidades de distancia tambien, las texturas ya me empiezan a saltar en mi tarjeta, del mismo modo que me saltan cuando uso el anterior de 257x257 con una separacion de por ejemplo 50.
En una tarjeta GF4 Ti 4200 no me pasan estas cosas, sino que tengo que usar una separacion bestial para que las texturas empiecen a saltarme. Alguien sabe algo sobre esto? Como solucionarlo o algun consejo sobre ello? Es logico hacer que una unidad de Direct3D sea un metro?
Muchas gracias ;)
Eso va a ser por la distancia de visión, que es muy grande (para una TNT2, 5000 unidades ya parece ser mucho). Por eso se suelen hacer cosas para limitar el campo de visión, como la niebla. Prueba a usar niebla y poner el far plane más cerca. O el near plane más lejos, puede que también sea eso (por probar XD)
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

AK47

 Saludos
Gracias Colson por tus ideas, pero probe con unas distancias como 4000, 3000, y las texturas siguen saltando en mi tarjeta con una separacion de 50 unidades entre vertices...
Arrrg! Nadie sabe nada de esto? A nadie le han saltado las texturas?
Ya me contareis  :(  

vincent

 Muy buenas,

yo estoy con CoLSoN2 y creo que tienes problemas con el ZBuffer. Yo intentaria poner un ZBuffer de más profundidad ( con 24 bits te tendria que ir bien ).

Saludos!

VinCenT.
Desarrollo en .Net y metodologías http://devnettips.blogspot.com

AK47

 Saludos
He probado con un zbuffer de 16 y de 24 bits, y ocurre exactamente lo mismo. Lo curioso es que en una GF4 Ti 4200, con el mismo formato de zbuffer no me haga el efecto :(






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.