Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Octrees

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

« anterior - próximo »

Klinex

                                Hola, supongo que aqui la mayoria controlareis de octrees y eso pq veo que estais muy puestos en el tema 3D. Lo que me pasa es que yo se muy poco acerca de este metodo de optimizacion, segun tengo entendido es  que se basa en ir subdividiendo el espacio 3D en cubos mas pequeños hasta llegar a colisionar con el frustrum, o tener un nº de subdivisiones respetable. Mi pregunta es, como hago para albergar todo el espacio y fijar los primeros vertices iniciales? como detecto la colision con el frustrum? (o en caso de no ser la colision con el frustum como detectar para cuando haya que parar). Como usarlo para emplearlo en las colisiones?. Por favor, que alguien me ayude. Gracias

Un saludo.                                

BeRSeRKeR

                                Hola Klinex:

Seguramente no soy la persona más indicada para responder ya que nunca he implementado un octree pero aún así lo intentaré :ojo:

La técnica consiste como tu dices en ir subdividiendo el espacio en nodos (cubos como tu dices) hasta que se cumpla una cierta condición. Una de esas condiciones (hay más) es que se llegue a un nº mínimo de polígonos por nodo. Evidentemente tendrás que ir viendo qué faces están dentro de cada nodo e incluso podría caber la posibilidad de recortar los polígonos que compartiesen mas de un nodo (yo personalmente con la potencia de las aceleradoras actuales no soy partidario del clipping porque entre otras cosas puede ocurrir que acabes con bastantes más polígonos de los que tenías en un principio). En esta fase inicial el frustum no lo utilizas para nada ya que lo que te va diciendo qué face se debe añadir a un nodo o a otro es el propio nodo (su bounding box). Así tenemos que en un principio crearías un cubo que acaparase toda la geometría (es decir, tendrías que buscar el vértice con coordenada mínima y el que tenga la coordenada máxima de entre todos los vértices de tu geometría) y a partir de ahí irías subdividiendo el espacio e irías asignando a cada nodo los índices de las faces que contiene.

Ahora bien, donde sí utilizarás el frustum es durante la ejecución del programa ya que a través de él podrás saber qué nodos (las bboxes de éstos) están en el campo de visión (ya sea total o parcialmente) de la cámara y por lo tanto también sabrás qué faces debes mandar al renderer.

Como he dicho antes no soy la persona más indicada para hablar de octrees ¡pero espero que lo que te he dicho sea una ayuda! :sonriendo:

Un saludo.

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

BeRSeRKeR

                                Una cosa más que no sé si la das por hecha o no...a la hora de detectar qué nodos están dentro del frustum, es lógico que si uno de ellos no lo está, ¡sus hijos tampoco!...por lo que de un plumazo puede que te hayas desecho de una gran cantidad de nodos (y por tanto de polígonos).

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

Drácula

                                Hay mucha documentación sobre Octrees. Te propongo que vayas a http://www.flipcode.com y busques por la palabra octree

¡Te sorprenderá la de cosas que hay!

Por cierto, la optimización octree es terriblemente buena. El único problema es que no puedes determinar qué esta delante y que está detras. Yo prefiero portales y dentro del porta un 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

Klinex

                                Muchas gracias a los dos por ayudarme!! :sonriendo:

Un saludo.                                






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.