Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Octrees (2ªparte)

Iniciado por Lord Trancos, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Lord Trancos

                                Como todavia no tengo claro como implementar mi octree he continuado con mi busqueda de tutoriales y documentos acerca del tema... y he encontrado una posible implementación que creo q me solucionaria los quebraderos de cabeza q me provocaria el tener que cortar los poligonos o el tener que llevar la cuenta de que poligonos llevo dibujados.

El "truco" consistiria en permitir que todos los nodos puedan tener poligonos asignados; es decir, no solo los nodos de las "puntas" del arbol.

La idea seria:
- meter todos los poligonos dentro del nodo padre. (todos tienen sus 3 vertices dentro)
- subdividir el nodo padre en 8 hijos y quitar del nodo padre los poligonos que tengan TODOS sus 3 vertices dentro de un nodo hijo.
y repetir el proceso....

no se si se entiende O:) ...

¿Que opinais de esta implementación? ¿le veis alguna pega?

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

Gunder

                                Buenas,

pues este tema ya se me ocurrio hace tiempo pero la unica pega q le veo esque hay q pararse en cada nodo para añadir datos al vertex e index buffer. Por lo demas, q tendrias encuenta mas poligonos q si los asignases solo a los nodos terminales ya que la subdivision es menor. Esto es una pega en el caso de utilizar ol octrees para comprobar colisiones ( cosa cojonuda ).

Pero la verdad esque no llege a implementar esta froma de octree y no te puedo decir si da mejor o peor resultado.

Esto no soluciona mi problema de como acontrolar el tema de los vertex buffers, osea como dividirlos para q sean lo mas optimo posible.

Ale,
Gunder                                
riticar, critica hasta el mas tonto.

Lord Trancos

                                Ya se que haciendo asi el octree tengo que dibujar mas poligonos, pero si los corto tb me salen mas, y si solo incluyo información en los nodos terminales tengo que hacer comprobaciones para saber q poligonos han sido dibujados... asi q supongo q me compensa dibujar algun poligono de mas pero hacerlo por grupos y no de uno en uno... ademas asi los podria ordenar para optimizar el dibujado :sonriendo:

En el caso de la comprobacion de colisiones, siempre puedo hacer un octree que incluya la informacion por duplicado; de las dos formas.


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

Gunder

                                Hola Lord,

pues tienes toda la razon en todo menos en lo de pintar mas, ya que nunca pintas mas pero a lo que me referia yo esque en un octree de toda la vida no paras hasta llegar a un nodo terminal y en este caso si. Pero, yo tambien creo q seria la forma mas optima de representar un octree.

Ahora bien, como organizar los vertices, seria mejor ¿ crear un vertexbuffer donde se van añadiendo de tres en tres los vertices de cada poligono?, esto redundaria mucho la infromacion de vertices, ¿Definir en cada nodo los vertices y las listas de indices q pertencen a ese nodo ?, menos redundante pero mas calculos, ya que se tendria q tener en cuenta los vertices q ya hemos metido para incrementar los indices de las caras, ¿ usar vertex e index buffers para cada nodo ?, eso daria la posibilidad de tener los poligonos en strips, organizados por textura, etc, etc. pero, nos obligaria a hacer muchos cambios de vertex buffer.

Por mi parte, pronto empezare con una implementacion de octrees para poder ver todas las posibilidades y perfilar cual es la mejor solucion.

Ale,
Gunder.                                
riticar, critica hasta el mas tonto.

Drácula

                                Me parece un poco irreal. Piensa que la mayoría de veces los vértices se comparten, con lo cual, al final, tendrás TODOS los triángulos en el nodo padre.

Sigo pensando que lo más óptimo es lo que te comenté:En los nodos tienes una lista a las caras que se dibujan. Éso te permitirá fácilmente identificar las que ya se han dibujado. Y luego tienes que dibujar TODO el octree con sólo aquellas caras que tienen el valor de dibujar a 1.
Por supuesto tendrás que rehacer el vertex buffer, pero se puede solucionar recorriendo las caras y pintando "Sin indexar". Pero esto ya lo comenté en el anterior post sobre este tema.

Bien, esta es mi opinión. También hay que ver QUE cantidad de caras vas a meter en tu octree, porque a lo mejor son pocas y ...¡no necesitas ni octree!                                
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

Gunder

                                Buenas Dracula,

creo q no nos hemos sabido explicar, ya que no se trata de añadir al nodo la cara q lo incluye sino de añadir al nodo la cara q no puede incluir ninguno de sus hijos y así evitar la doble referencia de las caras.

Respecto al numero de caras, yo he llegado a trabajar con 20k de caras a buen frame rate, pero el sistema podria ser mas optimo o eso es lo que busco.

Ale,
Gunder.

[ Este Mensaje fue editado por: Gunder el 2002-03-27 13:10 ]

[ Este Mensaje fue editado por: Gunder el 2002-03-27 13:15 ]                                
riticar, critica hasta el mas tonto.

Drácula

                                Ahora me has descolocado. No entiendo lo que me dices. He releido el primer post y creo que es lo que yo he expuesto. Pero ahora lo que me acabas de decir..no lo entiendo.                                
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

Gunder

                                El problema esque no me explico muy bien, a ver si lo consigo esta vez...

La problematica de los octrees es saber como repartir las caras entre los nodos.

Una de las soluciones es redundar la informacion de las caras entre los nodos finales del arbol.

Otra, es partir las caras para ajustarlas al nodo filnal.

Y la tercera, es guardar en cualquier nodo del arbol, no solo en los finales, todas las caras que no encajen el los nodos hijos.

A ver si esta vez he sido mas conciso.

                               
riticar, critica hasta el mas tonto.

Drácula

                                ¿Quieres decir que en un nodo padre están sólo aquellos triángulos que no pertenecen completamente a un nodo hijo. Y el nodo hijo tiene sólo aquellos que son suyos y no pertenecen a ningún otro nodo?

Si es así, es como yo pensaba y según este criterio he respondido al post.

Si no es así...lo siento...pero no lo pillo..
                               
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

Gunder

                                Si, es asi.

Osea, todos estamos diciendo lo mismo.

:sonriendo:
                               
riticar, critica hasta el mas tonto.

Drácula

                                Vaya!! Bueno, pero ahora ya está claro. En fin, que me remito a lo que he respondido anteriormente.

Estoy empezando un nuevo motor. Cuando llegue a los Octree, escribiré mis impresiones y la técnica utilizada. Sin embargo, lo he pensado mucho y sigo optando por el sistema que he expuesto antes.                                
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






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.