Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Un ejemplo de Octree

Iniciado por Drácula, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Drácula

                                He subido un ejemplo en:
http://webs.ono.com/dracular/test2.zip

Aquí podeis ver como el nº de caras que se va renderizando se reduce deacuerdo a un octree establecido. La técnica es la siguiente:

Realizar un octree de forma que sólo los últimos nodos tengan la información de que VERTICE está dentro de su zona.

Al renderizar RECONSTRUIMOS la lista de índices basado en aquellos nodos que se ven. Según mac^3pixels, con una GPU esto debería ser lo más óptimo.

Espero que os funcione a todos y me digais vuestra opinión.
                               
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

BeRSeRKeR

                                Todo bien aquí...lo único que no veo la otra textura (se ve que sólo utilizas una...la del cilindro)...y bueno pues va de 750 a 1050 fps en

P4 1,4 GHz / 256 MB
GeForce3 64MB
WindowsXP

Saludos!
                               
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Lord Trancos

                                Bueno, yo no tengo GPU, pero de fps va guay: unos 120fps en mi P200MMX + Banshee. Tengo que probarlo con un escenario mas complicado a ver que tal va :sonriendo:

Por cierto, justo hoy he publicado en mi web un articulo sobre mi octree (por fin!):

 http://www.geocities.com/dxlab/articul11.html

Aqui esta el codigo fuente y un escenario de ejemplo (unos 20000 tris):

 http://www.geocities.com/dxlab/zips/d3d8sam7.zip

Y aqui los binarios para aquellos que no tengais el Delphi:

 http://www.geocities.com/dxlab/zips/octbin.zip

Si teneis problemas al descargar los archivos con vuestros gestores de descarga, probad a bajar los archivos con el navegador.
(cosas de geocities...)

Al final he usado el metodo de ProcessVertices que comente, asi que no tira de GPU... pero creo que en una tarjeta como la mia tira bastante bien :sonriendo:

                               
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

Juan Mellado

                                Buenas, probando en un PIII 800 sin GPU alcanza entre 250 y 300 FPS.

Para cambiar de textura hay que pulsar la "S" (supongo que por "Skin"), ¿no?. El problema es que me casca directamente, ventanita de error de Windows.

Las últimas líneas del LOG:

Nivel:3 TLN:(10.08,18.48,15.03) RBF:(15.12,9.24,20.04) Nº Vert:1
Nivel:3 TLN:(10.08,9.24,15.03) RBF:(15.12,0.00,20.04) Nº Vert:1
FIN CXBloqueVertices::GenerarOctree
INICIO CXTextura::Cargar...texturasbihull.bmp
Nº de niveles(mipmaps):1
Formato:R5G6B5(x00000017)   Ancho:256   Alto:256
FIN CXTextura::Cargar...texturasbihull.bmp
INICIO CXTextura::Cargar...texturaspiedra2.bmp
Nº de niveles(mipmaps):1
Formato:R5G6B5(x00000017)   Ancho:128   Alto:128
FIN CXTextura::Cargar...texturaspiedra2.bmp

Otra cosa, al cambiar de ventana con ALT+TAB no libera el ratón.

Espero haberte ayudado.
Ánimo y Saludos.                                

Drácula

                                A Lord Trancos:

Debo decirte que a mi me va muuuy lento. Unos 0.4 fps por segundo y no se ven las textura.
También te diré que he probado tu escenario con Merlín y me da unos 34 fps sin problemas. Creo que el hecho de usar ProcessVertices como dices, sólo te está perjudicando. Si quieres, puedo subir la demo de Merlín con tu escenario para que puedas ver mejor la diferencia de velocidad.


[ Este Mensaje fue editado por: Drácula el 2002-06-01 21:14 ]                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Lord Trancos

                                Solo 0.4 ?!?!? -_-;;; jop. mi gozo en un pozo. ¿Alguien mas lo ha probado? ¿Que maquina tienes dracula ? ¿Tambien te saca 0.4 si le dices Options/xMesh?

Sip, me harias un gran favor si subieras mi mapa al merlin. :ojo:

_________________
SaludoteZ de Lord Trancos!
www.dxlab.tk - programación de DirectX con Delphi.



[ Este Mensaje fue editado por: Lord Trancos el 2002-06-01 21:48 ]                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

Drácula

                                Bien, Lord T, he subido de nuevo la demo en la misma dirección:
http://webs.ono.com/dracular/test2.zip

El importador de .X no está terminado y sólo lee una textura, pero lo que interesa es poder ver los efectos del octree. Nada más arrancar, el programa genera el octree(tarda un ratito) y aparecereis en un lugar muy mal(¡entre unos cuantos triángulos!!). Así que pulsad el botón derecho del ratón un poco para ir hacia atrás y tener una vista un poco mejor. A partir de aquí fijaos como el nº de caras se adecua a lo que ve el octree!

Bien, ya me contareis!                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Lord Trancos

                                Gracias Dracula! :sonriendo:

 Lo he probado y mas o menos en la vista donde empieza (unos 5000 polis) me va a unos 20fps. Pero solo a unos 35fps cuando miro al suelo (unos 500 polis). Así que supongo que puesto que no tengo GPU me procesa todo el rango de vertices :triste:

 He buscado un angulo de camara lo mas parecido con mi programa (lo he puesto tb a 640x480) y me saca unos 13 fps (unos 5000 polis) y unos 90-100 fps mirando al suelo (unos 500 polis). Todo esto con el "Always Process Octree" activado, q si nos es trampa xDDD

 Supongo que lo que mas me penaliza es el ProcessOctree y el hecho de que uso primitivas no indexeadas, pero mi metodo me  permite una segunda pasada muy rapida en mi tarjeta (que no soporta multitextura), y creo que por ese lado me compensa. Y en tu ejemplo lo que mas debe de penalizar es el procesado de todos los vertices cuando no hay GPU.

 Tan pronto como pueda los probare en el PIII + Geforce II de mi hermano a ver que tal tiran :ojo: Supongo que en ese caso tu ejemplo ira mucho mejor q el mio.

 En cuanto a los problemas que da mi ejemplo en tu PC, necesito que por favor me digas que equipo tienes y si mi ejemplo tambien te va tan lento con la opcion "Options/xMesh" activada.

 Gracias de nuevo :ojo:
                               
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

Drácula

                                Tengo un Pentium 200 MMX con una savage 32 MB.

Cargado el programa y sin tocar nada:

4.37 1089/18944 tris 10/250 nodes - 115

Y es algo que se mantiene mucho, independientemente de hacia donde mire. Incluso miro al cielo y va a la misma velocidad o un poco más lento. Con la opción que tu dices xMes me hace exactamente lo mismo.

Espero que te sirva, si quieres más pruebas...                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Lord Trancos

                                Ufff que aliviooo. Al marcarle la opcion de xMesh, el escenario es dibujado sin pasar por las rutinas del octree usando el interfaz ID3DXMesh. Eso significa que aunque seguramente estoy haciendo algo mal, al menos no es la parte del Octree la que esta involucrada ^_^;

Hechare un vistazo al codigo a ver si averiguo que podria ser lo que funciona mal, y preparare otro programita a ver si encuentro el fallo.

Muchas gracias por todo Dracula :ojo:
                               
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

ethernet

                                A mi nisiquiera me tira el test de dracula. Deespues de dejarlo 3 minutos seguia una pantalla negra. El problema puede ser debido a q mi maquina es un pelin vieja ;).
amd 266 con una ati de 2mb de video xD. Aunque cuando le he dado al adminitrador de tareas para matarlo no ha dado lo tipico de "este programa no responde"
Saludos                                

Drácula

                                Es raro que salga una pantalla negra! De todas formas, mándame el archivo debug que genera el motor y así podré ver cual es el error.                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Lord Trancos

                                Weno, tal y como comente he probado tanto tu demo como la mia en el ordenador de mi hermano. (PIII a 600MHz con una Geforce 2MX)

En tu demo funciona a unos 150 fps (5000 polis) mirando a la piramide nada mas empezar. Y unos 310 fps mirando al suelo (unos 500 polis).

La mia en ambos casos me da 99,9 fps ¿?¿? Lo cual no comprendo.... :/ supongo que debo de tener mal el contador de frames por segundo o algo...
                               
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

Drácula

                                Los mismos FPS me da tu ejemplo en un AMD 1.4 con 256 DDR y una Matrozx DualHead                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Lord Trancos

                                Tal y como me imaginaba esos fps eran por culpa de un error en mi rutina para calcular los fps. Ademas la prueba que habia hecho con mi programa en el ordenador de mi hermano, no sirve para nada pq me habia dejado la opcion "Always Process Octree" sin marcar, por lo que mi demo no procesaba el octree en cada frame sino solo cuando cambia la camara.

Una vez solucionado lo he subido por si quieres probarlo (ahora la casilla de "Always Process Octree" viene marcada por defecto).

El resultado de la prueba en el ordenadore de mi hermano me da: 45 fps para 5000 polis mirando a la piramide (y alejando el far plane) y 400 fps 500 polis; mirando al suelo.

                               
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.






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.