Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Sobre Octrees

Iniciado por KILE, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

KILE

                                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:


                               

KILE

                                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                                

BeRSeRKeR

                                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!
                               
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Drácula

                                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!                                
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

KILE

                                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                                

Drácula

                                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.                                
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

seryu

                                Y con tarjetas qe no tienen T&L?                                

Drácula

                                Francamente...¿tienen algún futuro las tarjetas sin T&L ?                                
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

CoLSoN

                                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..                                

BeRSeRKeR

                                La primera GPU T&L (por lo menos para PC :sonriendo:) fue la GeForce1...
                               
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

BeRSeRKeR

                                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..."
http://www.planetquake.com/digitalys">DiGiTALYS TEAM

[ Este Mensaje fue editado por: BeRSeRKeR el 2002-06-13 03:40 ]                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!






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.