Este DEM tiene 1,8 millones de vértices. :huh:
Cada vértice está comprimido utilizando UDEC3, con lo que consigo que un 4 bytes pueda almacenar la posición del vértice y las coordenadas de textura.
(http://www.telefonica.net/web/haddd/Prueba.jpg)
Ahora viene la ardua tarea de conseguir aumentar la velocidad. Pero es alucinante lo rápido que va. Dentro de un par de años, si esto sigue así, no hará falta buscarse la vida para comprimir ni optimizar.
La textura la genera el propio motor. Es una mezcla según la altura. La verdad es que da un resultado bastante espectacular por lo simple que es.
Bueno, más cosas cuando tenga más cosas. <_<
1,8 millones de vértices es una caña! (uoh)
Pero tengo algunas preguntillas:
1- la resolcuión pone ke es 800x600x8: x8? estás ejecutandolo a 8 bits por pixel? eso no perjudicaría el rendimiento?
2- de donde has sacao los datos necesarios para hacer eso?
3- Podrías poner la cámara de forma que se aprecie más el relieve del terreno? (a ras de suelo)
4- podrias pasarnos la demo y te decimos ke tal va en nuestro ekipo.
1. 800x600x8 significa 8 bits por canal de color, es decir, 24 bits
2.
¿dónde están los datos del DEM?3. No vale la pena si no vueles por ahí, ¿no crees?
4. Pasaré la demo cuando vaya más rápido. Ahora mismo va un poco lento y además necesito comprimir los datos pq el fichero puede ser enorme.
La verdad es que viendo la captura parece un quad con una textura, aunque viendo la tarjeta que es y los fps ya me imagino que no. Y por cierto, si que quedaria bien alguna toma en la que se pueda apreciar los millones de vertices del modelo.
[Modo (twist)]
¿Por que pone Numcaras:828 y NVert:500?
[/Modo (twist)]
Esos valores son los de cada QuadTree. B)
Para que veais que son polígonos, aquí va en modo WireFrame(¡AUNQUE NO LO PAREZCA!)
(http://www.telefonica.net/web/haddd/PruebaWire.jpg)
Y en perspectiva:
(http://www.telefonica.net/web/haddd/PruebaPer.jpg)
Aunque el DEM tenga mucha información, la verdad es que no tiene mucha resolución para indicar el punto. Casi todo está a la misma altura... :angry:
Pedazo de wireframe XDDDDD
Visto así de cerca, cuando le metas iluminación va a ser la polla :lol:
Yo lo que haría sería aplicar el normalmapping sobre una malla reducida de esa. A partir de la malla gigantesca calculas los normalmaps, calculas la textura base de alturas para el canal difuso, extraes una malla superoptimizada de toda esa superficie (el mar se deberia quedar en poquísimos polígonos) sobre la que le aplicarás las anteriores texturas correctamente y te quedará todo de puta madre.
wireframe eso!? :blink:
Que derroche de polis.
creo que podrias hacelerar todo eso con un Triangle Strip, si es que no lo haces ya, no?
Saludos.
[EDIT]
Quiza te pueda servir el D3DXMESH.OptimizeInplace()
pues sí.. ahí aplicándole un LOD estático como ROAM quedaría superminimizado.. o eso o es que la perspectiva está muy lejos, porque parece planísimo todo XD
Había pensado lo de los normalmaps, pero en realidad lo que yo busco es un simulador de vuelo y al acercarme, pues con los normal maps no quedaría muy bien. Lo suyo es Displacemente mapping, eso sería fantástico, pero creo que queda mucho todavía para que sea standard.
Yo opto por Quadtree con LOD según la distancia. Ya veremos...
un simulador de vuelo O_O ? Mas bien seria un simulador de naves espaciales ;)
Hice un generador de heightmaps hace tiempo y lo uso para hacer experimentos de vez en cuando (por ejemplo cuando lo de los tamaños de los IB). Es muy lento, nada que ver con el de Haddd y no está muy pulido, pero es curioso. Si lo queréis ver lo he subido
aquí con un plasma generado con el fractint como ejemplo; pero si metéis imágenes en el directorio y pulsáis 'F' se van cargando de forma cíclica.
Si puedes, prueba el tuyo con un fractal que quedará muy chulo (uoh)
Haddd, no me refiero a que sea todo un quad con normal maps, sino que le metas bumpmapping al terreno, ganarás en detalle por todos laos. Aunque sea un normalmap "estandar" o "inventado" que le de relieve a los polígonos. Simultaneamente, coincido en que a eso hay que aplicarle algún tipo de LOD también.
TheEnd, me he bajado tu visualizador, pero me enseña todo como si fuera un plano. No lo entiendo :blink:
Drakkar, mi objetivo ahora no es el realismo, ese será un 2º paso. Ahora quiero comprimir el mapa y visualizarlo de una forma optima.
Ostras, que raro. ¿Qué es lo que te enseña plano? La imagen que que puesto yo, la tuya, todas, el fractal en tu programa, tu imagen en el mio... No entiendo lo que dices.
En el mio puedes pulsar los numeros del 1 al 5 para cambiar la forma de dar las alturas según las componentes o la intensidad de cada pixel.
Si lo que ves es la imagen mia plana, eso solo es posible si has pulsado el 4 o el 5 porque esa imagen tiene todos los pixels igual de brillantes.
La verdad es que me parece imposible que el fractal se vea plano con los métodos 1, 2 y 3 :blink:
Es como si todo estuviera en un plano. Es muy raro. Sólo he usado tu programa. Ahora que lo he probado un poco más, creo que es un problema de cómo mandas los vértices, pq me aparecen jaggies típicos de ZBuffer, o a veces ocurren porque se mandan mal los vértices.
He probado con los nº del 1 al 5 y el problema es el mismo. :blink:
Juas, tienes razón, he visto un fallo al mandar los vertices. Había desactivado las debug y no lo veía (nooo) . A ver si lo arreglo...
EDIT. Si era ese el problema, ya está arreglado, he substituido la nueva version por la otra.
Me pega un reventón de los gordos Thenend :( Uno bastante raro que hace alusión a la tarjeta. Y luego me deja el escritorio chungo (a menos hz y resolución).
¿Utilizas PS? Si es que sí será por eso, porque mi Radeon 7200 no los soporta.
Un saludo!
No, me parece que a ti te peta porque usa 32 bits para los índices y la 7200 me huele que no los soporta. Prometo hacer una versión con varios vertex buffer. Porque ya está bien un VB único de 1024x768 vértices :P A ver cuando saco un ratillo y lo hago.
Ale, otra versión, a ver si esta ya tira bien.
http://www.codigoverde.com/downloads/HeightMaps.zipLo único que necesita (en teoría) es una tarjeta que acelere transformaciones e iluminación. Vamos, una GeForce o una ATI con menos de 5 años.
Seguro que la he cagado en alguna otra cosa y tampoco va (nooo)
Va perfecto. Lo que pasa es que deberías dar más FPS, ¿no es cierto? No entiendo porqué no te da un aumento mayor. :huh:
Nah, yo creo que no va tan mal. Si lo comparamos con el ejemplo de las DirectX "OptimicedMesh" sale parecido.
OptimicedMesh con las opciones "Strip Reordered" y "Using Many Strips" a 800x600:
1.672.704 tris x 24.5 fps = 40.981.248 tris por segundo
HeightMap Navigator haciendo mas o menos el mismo método que el anterior a 800x600:
1.570.816 tris x 32.5 fps = 51.051.520 tris por segundo
OptimicedMesh con las opciones "VCache Optimiced Mesh" y "Using Tri List" a 800x600:
1.672.704 tris x 32.5 fps = 54.362.880 tris por segundo
Así que supongo que si quiero ganar velocidad tendré que hacer lo del ejemplo, usar listas de triángulos y usar índices optimizados para que no hagan fallos de caché.
Bueno, creo que voy a tener que dejar de programar un tiempo, porque me parece que a mi profesor de álgebra no le va importar demasiado que sepa optimizar una maya para la caché. Mejor me dedico un poco a los espacios vectoriales y compañía. (grrr)
PD. En la caja de mi 4400Ti dice que tira 136 millones de triángulos por segundo ¿Que harán los de nVidia para sacar estos números?
Creo que para calcular el nº de triángulos utilizan un area de 25 pixels por triángulo. :blink:
Wenas. Aqui mis resultados. P4 2600, 1 giga ram, Ati 9200 Pro con 128 ram.
MODO VENTANA
1ª Imagen los 5 modos: 58128 triangulos * 50/52 fps
2ª Imagen los 5 modos: 1570816 triangulos * 20/22 fps
A modo completo la primera imagen me da 10fps mas, y en la segunda pierdo 1 fps (es decir, de 19 a 21 fps)
A destacar, en la imagen 1 el cambio de modo no afecta a los fps, para q estos bajen he de cambiar de forma brusca y continuada los modos, y solo me bajo a 45/50 fps. En la segunda imagen al cambiar baja a un 40% de los fps principales. Si cambio modos de forma bruscabaja a 1 fps xDD
Espero os sirva ^^