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