Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: KILE en 01 de Enero de 1970, 01:00:00 AM

Título: Sobre Octrees
Publicado por: KILE en 01 de Enero de 1970, 01:00:00 AM
                                Ayer me dio la vena de implementar octrees en el motor para ver como tiraba con geometría grande. Como habreis visto hace unos dias postee unas imagenes renderizando niveles del quake3. TAl y como abro la escena de estos niveles digamos que hay tantas mallas como materiales, por lo que le pasas (en el caso de opengl):
for (nummallas)
  UpdateMaterial(i)
glDrawElements(ArraydeMalla)

Y renderiza la mar de bien y hace exactamente los cambios mínimos puesto q no repites textura por malla.
Pues eso que me puse a implementar el octree, basicamente iba almacenando en cada hoja los indices de las caras que pertenecian a esas hoja y al fnial de general todo el octree creaba en cada hoja un paquetillo (display list) de la geomet´ria que había en esa hoja. Luego a la hoar de renderizar pues recorria recursivamente el arbol y tal e iba llamando a las display list de cada nodo. Claro está que este método no ordenaba por materiales y al final... menos FPS que con el método inicial. Pensé que seríap orque enviaba paquetillos más pequeños y hacia mas cambios de estado que en el primer método :_(
Total que he estado pensando si sería mas ventajoso en lugar de crear las display list de cada nodo, tener la geometría de cada nodo transformada (Por software, en lugar de cargar la matriz, es decir si traslada dos unidades, en lugar de multiplicar por la matriz, mueves todos los vertices dos unidades) y al tenerla así cuando renderizamos un nodo buscamos todos los subnodos visibles y creamos una lista con la geometría ya transfoormada. De manera que podriamos tener:
KFaces *Faces[NUMMATERIALES]
y en cada array vamos metiendo las caras segun el material al que pertenezcan y al final solo tenemos que
for NumMtariales
  LanzarRender(Faces)

Es que este método de cara a renderizar es videntemente lo más rápido, pero no se yo lo de transformación por software como se lo come, el T&L está pra algo X'D

Alguna sugerencia? :ojo:


                               
Título: Sobre Octrees
Publicado por: KILE en 01 de Enero de 1970, 01:00:00 AM
                                Por cierto, unas imagenes:
http://usuarios.tripod.es/andromeda_studio...rga/imagen1.jpg
http://usuarios.tripod.es/andromeda_studio...rga/imagen2.jpg

Y si alguien tiene ganas de probar y decirme que fps le da tal y como está ahora mismo la cosilla:
http://usuarios.tripod.es/andromeda_studio...rga/k3dtest.zip

Teneis que ejecutar el programa KQ3BSP2KS.exe y meter un .bsp del quake 3 el programa te convierte el fichero a c:escena.ks  Copiais este fichero en el dir de lap rueba y ejecutais K3D.EXE así se os verán con lightmaps, si kereis texturas, descomprimir el directorio textures del .pak del quake3 dentro del directorio de la prueba :lengua:

Un saludo                                
Título: Sobre Octrees
Publicado por: BeRSeRKeR en 01 de Enero de 1970, 01:00:00 AM
                                juasjuas...descomprimir el pak del quake3...hmmm... ¿es una broma? :riendo:

jaja..bueno lo he probado y va perfectamente y bueno por poner alguna pega :riendo:

y nada más...good job! :sonriendo:

Saludos!
                               
Título: Sobre Octrees
Publicado por: Drácula en 01 de Enero de 1970, 01:00:00 AM
                                El método que tu comentas Kile es algo parecido a lo que yo he implementado. Lo que yo hago es, en un primer paso, crear la lista de vértices y caras e insertarlo en la lista de materiales. Luego recorro los materiales y listo!                                
Título: Sobre Octrees
Publicado por: KILE en 01 de Enero de 1970, 01:00:00 AM
                                Dracula: Si mal no me equivoco tu supones que la geometría del nivel es estática no?. Y sobre lo de crear la lista para enviarsela a la tarjeta, la creas cada vez que actualices la cámara y cambie el número de hojas visibles no? las coges la metes en un paquete y palante no?. Y luego sobre lo que comenté de que si tienes objetos moviles y kieres ordenar por cara, puede salirte más rentable hacer las transformaciones poer software tu mismo (Usando x ejemplo 3DNow2) y copiarlas al buffer de materiales correspondiente y enviandoselo todo junto no?
:sonriendo: un saludo


B3rs3rk3r: A ver si te veo por el irc que me ha pasao un colegilla un visor del quake3 que se te van a quitar las ganas de codear X'D, ponme en el notify                                
Título: Sobre Octrees
Publicado por: Drácula en 01 de Enero de 1970, 01:00:00 AM
                                No Kile, yo guardo los vértices y no las caras en el Octree, por lo que manejar los mundo dinámicos es más sencillo.
Luego, SOLO modifico la lista de indices. Según mac^3p con T&L no cuesta nada transformar, por lo que puedo tener los mismo vértices y sólo modificar los índices, que es mucho más rápido.                                
Título: Sobre Octrees
Publicado por: seryu en 01 de Enero de 1970, 01:00:00 AM
                                Y con tarjetas qe no tienen T&L?                                
Título: Sobre Octrees
Publicado por: Drácula en 01 de Enero de 1970, 01:00:00 AM
                                Francamente...¿tienen algún futuro las tarjetas sin T&L ?                                
Título: Sobre Octrees
Publicado por: CoLSoN en 01 de Enero de 1970, 01:00:00 AM
                                Puede que no. Pero si un presente. Que yo sepa GeForce2 es la más antigua que tiene T&L. pues de todos los que conozco que tienen tarjetas graficas 3D, alrededor de 14. solo 2 tienen esos requisitos. Así que, vale, para dentro de 3 años to dios tendrá T&L, pero no aora..                                
Título: Sobre Octrees
Publicado por: BeRSeRKeR en 01 de Enero de 1970, 01:00:00 AM
                                La primera GPU T&L (por lo menos para PC :sonriendo:) fue la GeForce1...
                               
Título: Sobre Octrees
Publicado por: BeRSeRKeR en 01 de Enero de 1970, 01:00:00 AM
                                Creo que a estas alturas quien no tiene una aceleradora T&L es porque....no se por qué :riendo:

Y bueno en mi caso es todo lo contrario...la mayoría de gente que conozco tienen mínimo GF1...así que creo que quien se embarque en un motor 3D debe pensar única y exclusivamente en aceleradoras de este tipo...todo lo demás es perder el tiempo...a nos ser que lo "único" que quieras sea aprender....

Saludos

_________________
"Ninguna lágrima rescatará nunca a este mundo que se muere ni al sueño que se desvanece..."
DiGiTALYS TEAM

[ Este Mensaje fue editado por: BeRSeRKeR el 2002-06-13 03:40 ]