“Árboles Octales”
Resumen: Con la creciente predominancia de los gráficos computarizados así como el aumento de la calidad visual de los mismos, ha incrementado la demanda de procesamiento y el requerimiento en hardware para ellos, debido a esto la tecnología visual se ha visto impulsada ha desarrollar nuevas técnicas para acelerar y meorar la calidad de los gráficos mediante algoritmos y estructuras de datos baando el costo de procesamiento de los mismos! "n propuesta para al desarrollo de estas tecnologías emergentes son las estructuras de datos espaciales, dentro de las cuales se encuentran los #ctrees $%rboles #ctales& las cuales proponen una nueva forma de ordenar el espacio así como una forma interesante al problema de la resoluci'n de colores y su consiguiente procesamiento! (os #ctrees son una estructura de datos de tipo árbol, la cual su principal característica es que cada nodo apunta a ocho nodos hios, donde donde cada una de las ramas ramas no necesariamente se encuentran balanceadas balanceadas una respecto a la otra, es decir la altura de una rama puede diferir en uno o más niveles de la otra! Considerando que e)isten diversas aplicaciones para los #ctrees sus características generales variaran para cada uno de estos! *l ocultamiento de obetos + dentro de una determinada vista $-rustrum& es una de las diversas aplicaciones para los #ctrees, a este método se le llama -rustrum Culling, el cual consiste en abarcar el espacio en un cubo y subdividirlo en ocho regiones proporcionales, en algunos casos, de manera que los cubos que se encuentran dentro de nuestra vista son aquellos que contienen a los obetos que serán graficados, de tal manera que estos cubos serán subdivididos de nuevo en ocho nuevas regiones hasta que se alcance cierto limite determinado! ebido a la funcionalidad de los #ctrees para guardar obetos + en regiones adyacentes se le puede usar para la detecci'n de colisiones entre obetos en un espacio arbitrario con límites definidos, realizando las consultas de una forma más eficiente al consultar solo por los obetos colindantes! #tra aplicaci'n de estos árboles es la Cuantizacion de colores donde se transforma una imagen de muchos colores $ +. bits, ./bits& a una imagen de menos colores $0 bits&, usando a los arboles octrees por su facilidad para guardar datos de tres dimensiones $en este caso colores Roo, 1erde, 1erde, 2zul& *l creciente avance tecnol'gico implica que las soluciones que sirven para resolver ciertos problemas hoy necesi necesitan tan ser replan replantea teadas das para para resolv resolver er los proble problemas mas que emerge emergenn con las nue nuevas vas tecnol tecnologí ogías as,, resalt resaltand andoo que soluci solucione oness tan versá versátile tiless como como esta esta se transf transform orman an y remode remodelan lan para para resolv resolver er los problemas del ma3ana!
454
2bstract: 6ith the growing predominance of the computerized graphics as the visual quality, has increased too the demand for processing and the hardware requirements for it, due this, the visual technology its seems to be stimulated to development new techniques, in order to accelerate and improve the quality of graphics between algorithms and data structures lowering the processing cost of itself! 2 proposal for the development these emergent technologies are the spatial data structures, within it is the #ctrees $#ctal trees& that propose a new form of straighten up the space as an interesting way to solve the problem of the color resolution and its subsequent process! 7he #ctrees is a tree data structure, which its main characteristic is that every node points to eight children nodes, where each branch or bush will not necessarily be balanced respect the other ones, this means that the height of one branch could defer in one or more levels form the other! Considering of the e)istence of many applications for the #ctrees their general characteristic will vary for each one of these! 7he + obects concealment between a determined view $-rustrum& is one of the diverse applications for the #ctrees, this method is called -rustrum Culling, which consist to embrace all the space in a certain cube and subdivide it in eight proportional regions, in some cases, therefore the cubes that reside in our view are the ones who contain the obects that will be drawn, in that case this cubes will be subdivided in eight new regions until it reach a determined limit! ue the functionality of the #ctrees to store + obects in adacent regions it can be used for collision detection between obects in an arbitrary space with defined boundaries, performing the queries in a more efficient way consulting only in the contiguous obects! 2nother application of these trees is the Color 8uantization where it transform a picture of many colors $+. bits, ./ bits& to an image of less colors $0 bits&, using #ctrees due its facility to store tridimensional data$in these case red, green and blue colors&! 7he increasing technological advance implies that the solutions that serve to solve certain actual problems need to be restated in order to solve the emerging problems that surge with the new technologies, concluding that the versatile solutions li9e these transforms an remodel itself in order to solve tomorrow problems!
44
7abla de Contenidos !4 ;ntroducci'n<<<<<<<<<<<<<<<<<<<<<<revias<<<<<<<<<<<<<<<<<<<<roceso de construcci'n de un #ctree<<<<<<<<<<<<<resentaci'n rafica<<<<<<<<<<<<<<<<<<<<ropiedades de los #ctrees <<<<<<<<<<<<<<<<<articionamiento de #ctrees<<<<<<<<<<<<aleta<<<<<<<<<<<<<<<<<+ @!4 Conclusiones<<<<<<<<<<<<<<<<<<<<<<<<<<
4.4
1.-Introducción "n #ctree es una estructura de datos erárquica usualmente usada para la representaci'n de imágenes!en +! *l #ctree codifica imágenes en tres dimensiones colocando subsecciones del grafico en una estructura tipo árbol parecida a un árbol binario! 2unque a diferencia de un árbol binario donde cada nodo tiene dos hios, en un #ctree cada nodo tiene hasta ocho hios! Cada nodo almacena una parte particular del grafico! (os #ctrees operan mediante la descomposici'n recursiva del espacio! =ientras que e)isten una serie de #ctrees especializados, el tipo mas comun es el conocido como los A#ctrees CubicosB! *n tales arboles el grafico que ha de ser codificado y almacenado es dividido en ocho cubos! Cada cubo será así representado en un nodo del árbol! (a raiz del #ctree representa toda la imagen + almacenada mientras que cada una de sus ocho hios representaran un octavo de la imagen! *ste proceso continuaraH cada cuadrante representado por los hios de la raíz sera subdividido a su vez en ocho subcubos representando a los ocho nietos de la raiz! *ste proceso continuara hasta que la regi'n que esta siendo almacenada sea tan simple que pueda ser almacenada totalmente en un nodo! 2lgunas veces esto significa que continuaremos subdividiendo la imagen hasta que cada vo)el individual sea almacenado en algIn nodo hoa! #tras veces una region mas grande que un vo)el es suficientemente homogenea que puede ser representada en un nodo hoa sin necesidad de mayor descomposici'n! "na propiedad interesante de los #ctrees es que soportan un tipo de compresi'n de datos! 2l Jo transgredir cierto nivel de la estructura de datos, es posible filtrar los detalles optando por una imagen ligeramente menos precisa pero mucho mas peque3a!
2.-Marco Teórico "na propuesta para al desarrollo de las tecnologías de gráficos es el uso de las estructuras de datos espaciales, dentro de las cuales se encuentran los #ctrees $%rboles #ctales& las cuales proponen una nueva forma de ordenar el espacio conteniéndolo en cubos que se dividen recursivamente hasta llegar a cierto limite!
2.1.-Definiciones Previas 2.1.1.-El Voxel ?e llama 1#K*( o elemento de volumen a la representaci'n mínima de un obeto en +!, *l mas comIn es el cubo, entre mas peque3o se meora la representaci'n! ?in embargo, cada elemento 1o)el puede ser descrito en términos de sus equinas almacenando solamente las coordenadas de cada esquina de cada cubo, codificándolas en un arreglo o matriz + de datos binarios! *l arreglo nos representa la e)istencia del cubo, dentro del modelo, de tal manera que, el elemento a tratar será si se encuentra dentro del modelo, sino seria cero, es decir, no pertenece! *ntonces escribir un s'lido significaría listar todos los cubos que pertenecen al modelo o forman parte de el, pero en el modelado de s'lidos, no se tiene una imagen u obeto inicial, o es muy difícil describiré un obeto generalizado a cubitos!
2.2.-La Subdivisión del Esacio 4+4
2l tratar de describir un obeto mediante todos los 1o)el que le pertenecen cuando cada Cubo, puede ser descrito por sus esquinas, se genera grandes líneas de datos, la enumeraci'n completa de los modelos hecha por la descomposici'n tiene muchas ventaas, tales como su simplicidad su generalidad y permiten un gran numero de algoritmos, sin embargo, el consumo de memoria es alto se puede cambiar la divisi'n regular del espacio por algo mas eficiente, una divisi'n adaptativa! *ste esquema de trabao basado en la subdivisi'n del espacio, se logra por la simple observaci'n de las reillas descriptivas de la enumeraci'n completa de un espacio +, donde muchas veces un cubo blanco $& tiene como vecinos otros cubos del mismo tipo AB! 2l observar la combinaci'n y codificarla en modelos de datos comparativamente similares podemos reducir la cantidad por dicha reilla! (a divisi'n adaptativa tiene una propiedad fundamental en la que el numero de nodos necesarios para la representaci'n de un s'lido es proporcional a la área de su superficie! e aquí que el nImero de elementos es proporcional r . de la resoluci'n r que se utilice, en el otro caso, el tama3o de elementos de un esquema completo es proporcional a r + !
2.!.-Definición de "rboles #ctales u $#%T&EES' (os #ctrees son una estructura de datos de tipo árbol, la cual su principal característica es que cada nodo apunta a ocho nodos hios, donde cada una de las ramas no necesariamente se encuentran balanceadas una respecto a la otra, es decir la altura de una rama puede diferir en uno o más niveles de la otra! Considerando que e)isten diversas aplicaciones para los #ctrees sus características generales variaran para cada uno de estos! *stos son %rboles son una variaci'n erárquica de la enumeraci'n espacial, como resultado de un derivado de los quatrees! (os octrees utilizan la divisi'n recursiva del espacio en 0 octantes, por ello el nombre de octree, que son colocados es una estructura l'gica de árbol #ctario $de 0 hoas&! "sualmente, el arbol es colocado alrededor del origen del sistema de coordenadas con un primer nivel de octantes que corresponden a los octantes del espacio general, a manera de cuadrantes del sistema de coordenadas! (a idea fundamental es un algoritmo Aivide y 1encerásB! "n octree es subdividido en octantes de manera recursiva! Cada nodo del árbol consiste en un c'digo y ocho apuntadores hacia ocho AhiosB, enumerados del 5 al EH *l c'digo indica si el cubo es negro o blanco , es decir, sus valores son 5 y respectivamente, lo que significa , si el c'digo es negro, el espacio representado por el nodo esta lleno, es decir, todo el cubo pertenece al modelo, el nodo también es una AhoaBH la tercera posibilidad es que el nodo sea gris, esto indica parcialmente ocupado o escasamente vaci'H en este ultimo caso, los ocho apuntadores hios corresponden a la divisi'n regular del padre!
2.(.-Proceso de construcción de un octree (os modelos hechos en base a un árbol octree de s'lidos con primitivas, tienen un procedimiento de clasificaci'n entre la instancia de la primitiva y el nodo selecciona del octree! *ste proceso de clasificaci'n debe ser capaz de distinguir entre los casos: 4 4 4
*l nodo esta en el e)terior de la primitiva! *l nodo esta en el interior de la primitiva! *l nodo pertenece parcialmente a la primitiva!
*ste proceso de clasificaci'n es en forma recursivaH al inicio, el primer nodo $raíz& es blanco o vaci', estos son los datos iniciales del algoritmo! ?iguiendo el algoritmo, va clasificando cada nodo contra la primitiva, si el primer o segundo caso aplica, el nodo es marcado como blanco o negro, y la recursion terminaH en caso contrario, el algoritmo procede a marcar el nodo como gris, subdividiendo en ocho
4/4
octantes y llamando recursivamente cada uno de ellos, la subdivisi'n continuara hasta que la resoluci'n deseada es alcanzada, generalmente se usan de seis a doce niveles! *l algoritmo de construcci'n de un octree es el siguiente: =a9eLtree $p, t, depth& >rimitive MpH NM la primitive a modelar #ctree MtH NM nodo inicial del octree, blanco ;nt depthH NMma)ima recursion O int iH switch$classify$p, t&& O case 6P;7*H O t4Qcode 6P;7*H brea9H S case G(2CTH O brea9H case R*UH S if$depth 5& t4QcodeR*UH else O subdivide$t&H for$i5 HiV0 HiWW& ma9eLtree$p, t4QoctXiY, depth 4& H S brea9H S S NM clasificar nodo octree contra primitive classify $<& (as primitivas de fácil implementaci'n son las formas regulares como cubos, esferas, cilindros y conos, y algunos obetos de un orden mayor como los llamados sIper cuadráticos, los octrees y quatrees pueden ser construidos a partir de imágenes digitales cuando se tiene la informaci'n!
2.).-Presentación *rafica "na de las características esenciales de este método, es que guardan de manera implícita la informaci'n sobre el orden espacial, lo que se puede e)plotar en el algoritmo de dise3o, haciendo posible crea programa con un proceso más simple que solo pasen por el árbol obteniendo los argumentos necesarios y eecutar cada operaci'n en cada nodo! U no es necesario un reordenamiento para esconder las superficies removidas o cerradas! *l orden apropiado depende de la ubicaci'n del observador con respecto al árbol que se mostrara! ?e el observador se encuentra en el octante + donde K,U,Z Q 5, del espacio!
2.+.-#eraciones de con,unto ara los octrees 7ambién para este caso, se puede utilizar un algoritmo de árbol transversalH las operaciones de conunto implican dos árboles octree, resultando un tercer octree que representa la operaci'n booleana deseada, tal como la uni'n, intersecci'n o diferencia de conuntos de los argumentos, por eemplo , para el calculo de la interacci'n, al procesar los nodos n y n., ocurrirá que:
4@4
! (os nodos n y n. son ambos hoas! *n este caso, el nodo resultante del octree es negro si ambos lo son, de otra manera es blanco .! "no de los nodos es hoa! ?i el nodo hoa es negro, el sub4arbol de la que no es hoa es copiado al resultado del octree, de otra manera el nodo resultante es blanco! +! 2mbos no son hoas, entonces el algoritmo debe considerar recursivamente los hios de esos nodos! Como los argumentos ya están presentes su construcci'n no es tomada en cuentaH en la mayoría de los casos la compleidad del algoritmo es proporcional al árbol mas peque3o! Jo todos los algoritmos pueden ser llevados a una manera transversal, en algunos casos es necesario conocer a los nodos vecinos, como en los casos de efecto visuales como trasparencías, el acceder a un nodo vecino puede ser complicado y requiere subir un nivel en el árbol o hasta la raíz en el peor de los casos! >ara lo cual se pueden incluir más apuntadores a ciertas áreas del árbol, y requiere un cuidado de balance en el árbol!
2..- Proiedades de los octrees •
•
•
•
•
•
=odelo poderoso, los octrees son modelos de representaci'n apro)imada, y pueden ser e)actos para ciertos obetos! 1alidez, no requiere de una conectividad especial, todos los octrees son representaciones validas de algIn s'lido! Jo ambig[edad y "nicidad, hasta los limites de resoluci'n, todos los octrees no ambiguos, definen un s'lido! Consistencia, en general el numero de nodos que un octree representa es proporcional al área del obeto! *n promedio un octree fácilmente puede medir más de un mill'n de bytes de memoria! #peraciones cerradas, un octree soporta de algoritmos cerrados para los problemas de translaci'n, rotaci'n, y operaciones booleanas! ?encillos computacional mente, muchos algoritmos de los octrees toman la forma de transversal, donde las operaciones son relativamente fáciles para cada nodo del árbol!
2..-Subdivisión binaria del esacio "na alternativa, al procesamiento de los octree, es la subdivisi'n de un espacio binario! *sto implica, un enfoque que divide los nodos grises en dos hoas en vez de ocho octantes! (o que los hace mucho más peque3o, de esto surge la versi'n lineal de los octrees! 2unque el *spacio sea dividido en dos o en ocho como un octree normal, la cantidad de memoria utilizada sigue siendo demasiada, pero menor al utilizada por la enumeraci'n espacial! (o anterior ha provocado investigaciones para comprimir la representaci'n de árboles, muchas alternativas de representaci'n reemplazan la estructura del árbol por un apuntador libre, una estructura de datos lineal! *sta nueva propuesta se le llama octrees lineales! (as representaciones lineales son suficientes para muchos algoritmos! (as operaciones booleanas en octrees lineales se hacen al mezclar las dos cadenas de caracteres, lo cual es una operaci'n fácil de realizar!
!.-/licación de los #ctrees 2unque comInmente los octrees son utilizados para la representaci'n grafica de obetos + no todas sus aplicaciones se veran relacionadas con esto, debido la versatilidad de esta estructura de datos las ideas que surgen en donde aplicar esta estructura particular es bastante amplia, a medida que uno se inmersa en el concepto de octrees nos daremos cuenta de la funcionalidad de la estructura para la detecci'n de obetos + y todas las posibles operaciones relacionadas con ella, todo este conunto de técnicas y estructuras
4D4
aplicada se les llama -rustrum Culling, la cual apunta a la optimizacion y aceleracion del rendering $impresi'n de datos por pantalla en un determinado tiempo&, otra aplicaci'n comun para este tipo de estructura espacial es la cuantizacion de colores la cual toma el concepto de octrees para meorar una imagen predefinida!
!.1.-T0cnicas de Particionaiento de #ctrees (os algoritmos de partici'n del espacio mediante octrees son usados para la representaci'n de obetos en ambientes +, los cuales son las basicas para la mayoria de sistemas modelado y rendereo de imágenes! *l obetivo primario de dichos algoritmos es reducir el numero de comparaciones requeridas para determinar que superficies necesitan ser procesadas para el trazo de rayos, colision de detecciones, determinaci'n de visibilidad, o calculos similares! 2unque usado principalmente en un ambiente estático, se podrá utilizar en ambientes dinámicos con algunas modificaciones! (os #ctrees pueden proveer una significante reducci'n en el tiempo necesitado para la clasificaci'n de polígonos en una escena para su e)posici'n apropiada lo que lo hace ideales para aplicaciones como los uegos que consisten primordialmente en espacios vacíos donde los obetos que se encuentran en este muestran largas variaciones en su tama3o relativo
!.1.1.-rustru %ullin3 Como mencionamos anteriormente un octree es una forma de subdividir el espacio pero cabe resaltar que la técnica que subdivide el espacio en si se llama frustrum culling, o tambien llamada particionamiento del espacio, la cual permite dibuar o graficar la parte del mundo, nivel o escena que se encuentra en nuestro -rustrum $vista de la camara&! "n eemplo del porque el particionamento del espacio es necesario se dará si es que creáramos un mundo con alrededor de 555,555 polígonos a dibuar! ?i se hiciera un bucle que pasara por cada uno de los polígonos, y se comunique con el tope de nuestros polígonos de personaes por cuadro, nuestra tasa de muestreo decaería críticamente! 2unque una buena tareta aceleradora de video solucionaría el problema, esto restringiría a cualquiera que no posea un hardware de aceleraci'n de video de ultima generaci'n! 2 veces, aunque la posesi'n de un buen hardware de aceleraci'n no solucionara el problema, ya que la mayoria de veces la parte de desacelera la resoluci'n es la cantidad de datos que se transmiten a través del bucle principal! *ntonces no seria optimo que solo se graficaran los polígonos que están en nuestra vista, bueno esta es la principal optimizacion de los octrees para este tipo de aplicaciones, ya que brinda una forma rapida de encontrar los polígonos que estan en la vista y solo dibuar esos!
4E4
+!!!!4-uncionamiento "n octree trabaa en cubos! ;nicialmente! *l octree comienza con un nodo raiz que posee un ee asociado al cubo que rodea al mundo, nivel o escena! *ntonces se creara un cubo imaginario alrededor de todo el espacio!
2si el nodo raíz contendrá a todos los vértices de nuestro mundo! >ero si solo poseyéramos el nodo raíz haría que dibuáramos todo el mundo, debido a que nuestro obetivo es solo dibuar los obetos que se encuentran en nuestro frustrum spectrum $espectro visual& subdividiremos al nodo raiz en ocho partes $de donde proviene la denominaci'n #ctree&! *so significa que e)istirán / cubos superiores e inferiores, teniendo en cuenta que cada línea que conforma al nodo realmente no e)iste, sino que serán una ayuda para visualizar la esquematizaci'n del octree!
Pemos dividido el mundo en ocho partes en una sola subdivisi'n! *n este punto nos daremos cuenta cuan efectivo seria si tuviéramos ., + o / subdivisiones, pero de donde obtendremos la velocidad en que mencionamos anteriormente, supongamos que nuestra camara se encuentra en la mitad de nuestro mundo apuntando a una esquina! ?i vemos las lineas no podremos dar cuenta que solo estamos viendo / de los ocho cubos del octree! *stos nodos incluyen dos de los cubos superiores y dos de los inferiores, lo que significara que solo dibuaremos los nodos almacenados en esos vértices!
404
>ero, como verificamos que nodos estan en nuestra vista\ *sto sera muy simple aplicando -rustrum Culling! >odremos obtener las dimensiones del frustrum y verificar cada cubo que intersecata o que se encuentra en el frustrum de la vista, de tal manera, si un cubo interfecta el frustrum entonces dibuaremos ese nodo! Gásicamente, en el eemplo anterior demostramos que hemos reducido la cantidad que necesitamos dibuar en un @5]! Recordemos que esta solo fue una sola subdivisi'n de nuestro mundo! =ientras mas subdivisiones se realicen mas eficiencia obtendremos de estas, esta claro que no necesitamos un e)ceso de nodos ya que esto causaría una baa de velocidad por toda es recursi'n!
?ubdiviremos un nivel mas, pero esta vez este nivel no producira 0 cubos dentro de los ocho cubos originales! (os cubos de la parte superior e inferior de las ocho regiones originales no fueron subdivididos! *sto nos da una nueva premisa a tener en cuenta en cuanto a los octrees, cada vez que subdividimos creamos ocho nuevos nodos pero si no e)isten poligonos almacenados en tal area, descartaremos ese nodo, no asignandole memoria a este! =ientras mas subdividamos, mayor será la cantidad de nodos que le darán forma a nuestro mundo
!.2.-4uanti5acion de %olores #tro de los usos que se le puede dar a un #ctree es en la cuantizacion de colores! (a cuantizacion de colores se usa cuando se quiere crear una imagen de n colores a partir de otra imagen de m colores siendo n menor que m! *l problema es como elegir los n colores que reemplazarían a los otros m colores! *n general esto se hace creando una paleta de colores $ en el caso de querer transformar la imagen a 0 bits, la paleta tendria .@D colores& ! (os colores de la paleta se eligen segIn diferentes criterios! "na forma de elegirlos seria usando los primeros n colores diferentes de la imagen! 2unque rapida, esta forma crearía una imagen ine)acta de la original, con los colores distorsionados! #tra forma de crear la paleta seria usando los n colores que mas se usan en la paleta, aunque correcta para imágenes con homogeneidad de colores, el problema viene cuando la imagen original contiene una variedad enorme de colores con lo cual se perdería la calidad en la foto!
4F4
>ara cuantizar los colores se sigue dos pasos & Crear la paleta de colores .& "sar esa paleta para crear la nueva imagen (a tecnica ahora e)plicada usa a los #ctrees para quantizar lo colores de una forma inteligente!
!.2.1.-#ctrees ara la otii5acion de colores ?upongamos que queremos transformar una imagen de ./ bpp o +. bpp $los ultimos ocho bits de transparencia& a una imagen de 0 bits !*l arbol #ctree tendra una altura de 0 nodos y se procede de la siguiente manera: +!.!!!4;nserci'n en el #ctree &?e toma el primer color de la imagen y se separan los bits en sus tres colores primarios como puede ser el verde, roo, y azul $si estuvieran en otro formato se seguiria un procedimiento parecido&! ?upongamos que el color es $^D/E@D& ?e descompondría en los siguientes colores
Roo $5)D/&
55555
1erde $5)E@&
555
2zul $5)D&
555
.&?e toman los bits mas significativos de los colores y se suman haciendo un shift de espacio al verde y de dos espacios al azul! espués se sigue de la misma forma con el siguiente bit mas significativo
Roo
55555
1erde
555
2zul
555
?e toman los bits mas significativos: Roo 5
1erde 5 2zul
U se combinan en un numero con la siguiente formula: Resultado roo _ verdeVV _ azulVV. 55 555 W 555 W 55 onde 55 binario es igual a / en decimal *l resultado final daria: Roo 1erde 2zul
5 5
5
5
5 5 5
4 5 4
5 5
5 5
Resultado 55 Ginario Resultado /
5
5
555
55
55
E
+
D
5
E
/
.
+& *l resultado indica en cual de los hios nos vamos a posicionar! Como el resultado contiene 0 digitos entonces la altura del arbol es de 0 nodos como lo comentamos antes R*?"(72# /E+D5E/.
*l color quedaria almacenado de esta forma
!.2.2.-%uanti5acion de %olores Cuando se llega a un nodo hoa este contendra cuatro contadores! "no cuenta las veces que se ha llegado a este color! #tro suma los colores roos del color, otro el del verde y del azul! (a estructura del nodo hoa en CWW puede ser como sigue struct octreenode O unsigned long referencesH unsigned long redH unsigned long greenH unsigned long blueH struct octreenode childsX0YH SH Cada ves que se llega a ese nodo se aumenta el numero de referencias a W, y se suman los colores ReferenciaWWH Roo Roo W D/H 2zul 2zul W DH 1erde 1erde W E@H
!.2.!.-&educción de nodos
4 4
Cuando se llega a cierto limite de nodos hoa $ en nuestro caso .@D colores&, se selecciona el padre de cualquier grupo de nodos hios $ en forma aleatoria generalmente& y se itera por todos los hios $si e)isten& sumando las referencias , el contador de roo, el del verde y el azul en el nodo padre! Codigo en cWW para reduccion de Colores for $int n 5H nV0H nWW& O if $currentnode4QchildXnY& O currentnode4Qreference W currentnode4QchildXnY!referenceH currentnode4Qred W currentnode4QchildXnY!redH currentnode4Qgreen W currentnode4QchildXnY!greenH currentnode4Qblue W currentnode4QchildXnY!blueH NN free the node! 6e don`t need it anymore delete $currentnode4QchildXnY& currentnode4QchildXnYJ"((H S S
!.2.(.-%onstru6endo la Paleta >ara construir la paleta de colores simplemente se recorre por todos los nodos hoas, y para hallar el color se divide el contador de roo, azul y verde entre el contador de referencia! (uego se concatenan los resultados y se arma el color $ en nuestro caso un RG&! *l c'digo en CWW para construir la paleta NN"n (oop de Recorrido de los nodos hios paletteXinde)Y!red currentnode4Qred N currentnode4QreferenceH paletteXinde)Y!green currentnode4Qgreen N currentnode4QreferenceH paletteXinde)Y!blue currentnode4Qblue N currentnode4QreferenceH NN7ermina el recorrido *emplos "sando la paleta 6eb?afe
"sando >aleta de Colores #ctrees
4 . 4
#riginal
).-%onclusiones •
•
•
•
•
2 través de todo el trabao nos hemos podido dar cuenta que las estructuras de datos espaciales dentro de las cuales se encuentran los octrees, son una de las soluciones mas versátiles al problemas de la relaci'n entre el procesamiento y el hardware necesario para procesar dichas imágenes van en aumento en los Iltimos a3os! "na de las aplicaciones mas comunes para este tipo de estructura son los uegos de computadora que se relacionen con ambientes +, así como los procesadores de imágenes! Como mencionamos anteriormente la relaci'n entre el hardware necesario para el procesamiento y la calidad de imágenes va en aumento día a día, es decir se limita el consumo de ciertos productos o aplicaciones a un conunto e)clusivo de personas que posean un hardware de aceleraci'n de video de ultima generaci'n, la meora que proponen los octrees es que solo se digitalicé los obetos que se encuentren en nuestra vista, siendo una gran ventaa ya que nos se malgastara memoria, ni recursos en graficar obetos que no necesariamente están siendo procesados ! (a resoluci'n de imágenes se ve beneficiada debido a que la subdivisi'n de los obetos en sub!4 cuadrantes del mismo, nos permite alcanzar la resoluci'n deseada ya que mientras mayor sea el nImero de divisiones hechas al obeto mayor será la resoluci'n del mismo, permitiendo la optimizaci'n de la calidad visual del obeto! (a compleidad del algoritmo para implementar una octree es proporcional a la compleidad de la aplicaci'n en la que se utilice este! (os #ctrees se pueden utilizar para la cuantizacion de colores debido a su e)celente rendimiento en guardar datos tridimensionales y la habilidad que tenemos para colocar un límite al nImero de nodos hoas!
+.-&ecoendaciones #ptimizaciones para Culling •
•
"n control de altura será necesario debido a la recursion en la subdivisi'n ya que se debe de tener en cuenta el trabao que realizara el procesador y la memoria vs! la altura del árbol! ?i se desea meorar la calidad visual del culling si se tiene un obeto +d que es atravesado por un nodo cubo se tiene que dividir la imagen para que no se imprima la parte que no se encuentra en el frustrum!
#ptimizaciones para 8uantizacion de Color •
•
•
"na forma de meorar el uso de la memoria es reduciendo todos los nodos que tengan una referencia de uno, manteniendo el árbol peque3o y meorando la eficiencia al acortar los tiempos de recorrido 7ambién se puede crear punteros entre nodos hios para meorar la velocidad de recorrido ya que la mayoría de tiempo se malgasta en el recorrido desde la raíz al árbol *l árbol todavía puede servir para guardar la paleta de colores , una ves recorrido el árbol, cuando se llega al nodo hio se puede guardar el color en el nodo y llegar a el de una manera mas rápida que una bIsqueda secuencial entre la paleta
4 + 4
.-7iblio3raf8a =aterial de Consulta: •
•
2??2R??#J, "!, 2J =((*R, 7! .555! #ptimized view frustum culling algorithms for bounding bo)es! Journal of Graphics ?"2R?TU, #!, 2J #7?=2J, C! FFF! ynamic scene occlusion culling! IEEE Transactions on Visualization and Computer
•
• •
ZP2J, P!, =2J#CP2, !, P"?#J, 7!, 2J P#-- ;;;, T! *! FFE! 1isibility culling using hierarchical occlusion maps! Computer oshua ?hagam oseph >feiffer, r ! ynamic ;rregular #ctrees! Jew =e)ico ?tate "niversity! CP2C#J =#R*J#,! .555! *studio y 2nalisis de la teoria de la multirresolucion en el modelado de solidos!
!6eb (in9s:
http://www.cs.unc.edu/~geom/SSV/
http:NNwww!gametutorials!com 999.*aasutra.co
4 / 4