SISTEMA Y MÉTODO PARA APLICAR TEXTURAS TRIDIMENSIONALES DE VOLUMEN EXACTO A SUPERFICIES ARBITRARIAMENTE TRIANGULADAS
CAMPO DE LA INVENCIÓN La invención se relaciona con sistemas y métodos para desplegar datos de gráficos, y de manera más particular se relaciona con técnicas para aplicar texturas tridimensionales de volumen exacto a superficies arbitrariamente trianguladas.
ANTECEDENTES DE IA INVENCIÓN En algunos campos, es útil modelar objetos de molde real o generador por computadora en tercera dimensión. El modelado de este tipo de objetos ha probado ser útil en una gama de aplicaciones. Por ejemplo, modelar la estructura subterránea de una porción de la corteza terrestre es útil para descubrir yacimientos de petróleo, localizar fallas tectónicas y en otras aplicaciones. De modo semejante, el modelado de partes del cuerpo humano resulta útil para ejercicios de capacitación médica, realizar diagnósticos, realizar cirugías a distancia o para otras aplicaciones médicas. El modelado de objetos generados por computadora resulta útil en la creación de juegos de computadora, diseño de simulaciones de vuelo y en otras aplicaciones. Existen otras aplicaciones para el modelado tridimensional de objetos reales o generadores por computadora . Algunos modelos tridimensionales representan un objeto como una matriz tridimensional de puntos de datos de volumen. Esta matriz, conocida como un volumen de datos, incluye una gama de puntos de datos, conocidos como puntos de datos de volumen. Cada punto de datos de volumen se puede identificar como un pixel de volumen, también conocido como voxel. Un voxel es la parte en forma de caja más pequeña que puede distinguirse de una imagen tridimensional. Un voxel es similar a un pixel, pero representa un volumen tridimensional en lugar de área bidimensional . Cada voxel representa un muestreo individual de una porción tridimensional del objeto a modelar. Cada voxel es el volumen de datos contiene un solo conjunto de coordinadas (x, y, z) y uno o más valores de datos que representan una propiedad única a examinarse. Estos valores de datos se pueden ilustrar a escala (0-256) que corresponde a un valor en especifico de color Rojo, Verde, Azul (RVA) y una variable de opacidad (A) que se derivan de una medición o de la propiedad a examinarse. La medición o valor de la propiedad corresponde a la porción del objeto que representa el voxel. Esto permite una representación gráfica de la propiedad a examinarse. Por ejemplo, en aplicaciones sísmicas o geológicas, los datos sísmicos se obtienen al crear artificialmente ondas sonoras y al grabar el arribo de estas ondas sonoras después de que se hayan reflejado a partir interfaces de formaciones rocosas subterráneas con distintas propiedades físicas . A partir de las ondas sonoras reflejadas, o de datos sísmicos, después se crea un volumen de datos que representa la estructura subterránea. En este ejemplo, cada voxel contiene un valor de datos que, a partir de una onda de sonora reflejada, representa una onda de transmisión (es decir, amplitud) . La estructura geológica se puede deducir a partir de la imagen desplegada de este de datos. Por ejemplo, los valores de datos sísmicos de amplitud más elevados se pueden representar con el color rojo, los valores de datos de amplitud ligeramente inferiores se pueden representar con el color naranja, y otros valores de datos de amplitud se pueden representar con otros colores . Son posibles otros esquemas de colores. Esto permite una representación gráfica de los datos sísmicos . Una vez que se ha creado un volumen de datos, su contenido se puede desplegar a los usuarios. Un usuario puede especificar una superficie tridimensional contenida dentro del volumen, y un sistema de despliegue despliega los voxeles en esta superficie en una pantalla o en otro medio de despliegue. Esto posibilita al usuario a observar voxeles que estén contenidos en el interior del volumen de datos.
Un sistema para desplegar los voxeles en una superficie arbitraria tridimensional se conoce como mapeo de texturas tridimensional. Esta técnica se implementa en la unidad de procesamiento más rápida de un acelerador por hardware de gráficos por computadora. Este técnica emplea una memoria especializada especifica, conocida como caché o memoria de texturas, que se fija dentro del circuito integrado . En esta técnica, el caché de texturas se emplea como una memoria intermedia para la información contenida en el volumen de datos . Un bloque o porción del volumen de datos se lee en el caché de texturas, y la información en este bloque se emplea con la unidad de procesamiento más rápida. Posteriormente, un segundo bloque del volumen de datos se lee en el caché de texturas, y la información en el segundo bloque se emplea con la unidad de procesamiento más rápida. Este proceso continúa hasta que el volumen de datos completo se haya hecho disponible para la unidad de procesamiento más rápida, un bloque a la vez, a través del caché de texturas. De esta manera, el caché de texturas se emplea como una memoria intermedia para el volumen de datos . Esta técnica tiene ciertas propiedades inherentes que se vuelven ineficientes para situaciones particulares . Por ejemplo, para volúmenes de datos que sean más grandes en comparación con el tamaño del caché de texturas disponible, el volumen de datos se debe fragmentar en bloques y cada bloque se transfiere al caché de texturas . Esto es ineficiente debido a que las operaciones auxiliares relativamente grandes necesarias para determinar el tamaño de cada bloque y de su lectura en el caché de texturas . Aún más, aún cuando en esta técnica la unidad de procesamiento más rápida sólo puede necesitar los voxeles que yacen en la superficie tridimensional, cada voxel en el volumen de datos se lee y almacena en el caché de texturas. Por consiguiente, la memoria en el caché de texturas no se emplea de manera eficiente debido a que en el caché de texturas se puede almacenar una cantidad relativamente grande de datos innecesarios. Este problema se intensifica cuando la superficie tridimensional es más pequeña en comparación con el volumen de datos . Además, debido a que en esta operación se emplea una cantidad relativamente grande del caché de texturas, se limita la cantidad del caché de texturas disponible para otras operaciones gráficas. Esto limita el desempeño de renderización del objeto y limita el desempeño de otras operaciones de gráficos . Existe la necesidad, entre otras cosas, de una técnica para desplegar el contenido de un volumen de datos en una superficie arbitraria tridimensional contenida dentro del volumen, que emplee una cantidad reducida del caché de texturas .
SUMARIO DE LA. INVENCIÓN En un aspecto, una modalidad de la presente invención que supera estos y otros problemas en la técnica se relaciona con un método para aplicar una textura de volumen tridimensional. El método incluye los pasos de proporcionar un volumen de datos que comprende una pluralidad de puntos de volúmenes de datos; proporcionar una superficie poligonal parcial o completamente contenida dentro del volumen de datos, la superficie poligonal comprende por lo menos un polígono; crear un conjunto de atlas de texturas, cada atlas de texturas comprende un trazado bidimensional de por lo menos un polígono en la superficie poligonal; y asignar un segmento de la memoria para cada atlas de texturas. El método también incluye los pasos de conversión de exploración de cada polígono en base a los puntos de datos de volumen en el volumen de datos y escribir los resultados de la conversión de exploración de cada polígono en el segmento de memoria asignado al atlas de texturas que contiene un arreglo que incluye el polígono . En un aspecto adicional, la presente invención incluye un mosaico de texturas que tiene dimensiones de mosaico que describen el tamaño de mosaico y la representación de .un polígono, el polígono está completo o parcialmente contenido en un volumen de datos tridimensionales . En otro aspecto, un atlas de texturas incluye dimensiones de atlas que describen el tamaño de atlas y la representación de un polígono, el polígono está completo o parcialmente contenido en un volumen de datos tridimensionales . En un aspecto adicional, un segmento de memoria incluye una pluralidad de texeles (unidades base de gráficos con textura) , la pluralidad de texeles incluye uno o más texeles poligonales predeterminados y uno o más texeles no poligonales predeterminados, en donde cada texel poligonal en la pluralidad de texeles contiene un volumen computado en base a un punto de datos de volumen en un volumen de datos, y en donde cada uno de los otros texeles es inválido. Aún en otro aspecto adicional, la presente invención incluye un sistema para aplicar una textura de volumen tridimensional a una superficie poligonal. El sistema incluye un caché de texturas configurado para contener una pluralidad de texeles, y una memoria configurada para contener una superficie poligonal y un volumen de datos, la superficie poligonal comprende uno o más polígonos y el volumen de datos comprende uno o más puntos de datos de volumen. El sistema también incluye un módulo de control configurado para: crear un conjunto de atlas de texturas, cada atlas de texturas comprende un trazado bidimensional de por lo menos un polígono en la superficie poligonal; para asignar un segmento del caché de texturas para cada atlas de texturas, para convertir por exploración el o los polígonos, con lo que se crea uno o más texeles; y para escribir el o los texeles resultantes de la conversión de exploración de cada polígono en el segmento del caché de texturas asignado al atlas de texturas que contiene un trazado que incluye el polígono.
BREVE DESCRIPCIÓN DE LOS DIBUJOS La presente invención se describirá haciendo referencia a los dibujos anexos, en los cuales elementos similares se identifican con número de referencia similares, y en los cuales: La Figura 1 ilustra un volumen de datos y una superficie tridimensional de acuerdo con una modalidad de la presente invención. La Figura 2 es un diagrama de flujo que describe un método para aplicar datos de volumen a una superficie de acuerdo con una modalidad de la presente invención. La Figura 3 ilustra un conjunto de mosaicos de texturas de acuerdo con una modalidad de la presente invención . La Figura 4 ilustra un conjunto de atlas de texturas de acuerdo con una modalidad de la presente invención . La Figura 5 ilustra un segmento de memoria de texturas de acuerdo con una modalidad de la presente invención . La Figura 6 ilustra un polígono antes y después de la conversión de exploración de acuerdo con una modalidad de la presente invención. La Figura 7 ilustra un diagrama de bloques de un sistema para aplicar una textura de volumen tridimensional a una superficie poligonal de acuerdo con una modalidad de la presente invención. La Figura 8 es un diagrama de flujo que describe un método para la subdivisión poligonal y la creación de un mosaico de texturas de acuerdo con una modalidad de la presente invención. La Figura 9 es un diagrama de flujo que describe un método para la generación de un atlas de texturas de acuerdo con una modalidad de la presente invención.
DESCRIPCIÓN DETALLADA DE LAS MODALIDADES La Figura 1 ilustra un volumen de datos y una superficie tridimensional de acuerdo con una modalidad de la presente invención. El volumen de datos (100) puede ser o puede incluir un modelo tridimensional de un objeto real o generado por computadora. El volumen de datos (100) puede ser o puede incluir una matriz tridimensional de puntos (102a-d) de datos de volumen. Cada uno de los puntos (102a-d) de datos de volumen puede contener uno o más volúmenes que describen una porción en particular del volumen de datos (100) . Por ejemplo, cada unos de los puntos (102a-d) de datos de volumen puede contener coordinadas x, y, z que especifiquen la ubicación de una porción del volumen de datos (100) . Cada uno de los puntos (102a-d) de datos de volumen además puede contener uno o más volúmenes de datos que correspondan a una o más propiedades especificas. Por ejemplo, cada uno de los puntos (102a-d) de datos de volumen puede contener un volumen de datos que corresponda a una propiedad sísmica, una densidad o alguna otra propiedad . En una implementación, cada uno de los puntos (102a-d) de datos de volumen puede ser o puede incluir un voxel . Cada voxel se puede desplegar como un volumen de color combinado y una variable de opacidad (RGBA) que se derivan de una medición o valor de una propiedad en específico . El volumen de datos (100) se puede definir de cualquier sistema de coordenadas, por ejemplo, en el sistema de coordenadas Cartesiano con un origen (104) . Una superficie poligonal (106) puede estar completa o parcialmente contenida en el volumen de datos (100) . La superficie poligonal (106) puede ser una superficie bidimensional o tridimensional que se elige o especifica por un usuario o una computadora. La superficie poligonal (106) se puede elegir para que el usuario pueda examinar los puntos (102a-d) de datos de volumen que interceptan la superficie poligonal (106) . La superficie poligonal (106) se puede elegir, en algunas aplicaciones, con el fin de modelar exacta o aproximadamente una superficie de origen natural. Por ejemplo, la superficie poligonal (106) se puede elegir con el fin de modelar una interfase entre las capas de la corteza terrestre. La superficie poligonal (106) se puede definir por uno o más polígonos (108a-d) . Son posibles varios métodos para describir cada polígono. Por ejemplo, cada polígono se puede definir con un conjunto de vértices y bordes. En una implementación, los polígonos (108a-d) son triángulos, y cada uno de los polígonos (108a-d) se define con las coordenadas Cartesianas de sus vértices. La Figura 2 es un diagrama de flujo que describe un método para aplicar datos de volumen a una superficie de acuerdo con una modalidad de la presente invención. El método inicia en el paso (200) , en donde se puede proveer el volumen de datos (100) . El volumen de datos (100) se puede generar a partir de datos medidos, como por ejemplo, datos sísmicos, o se pueden generar de algún otro modo. En · el paso (202), se puede proporcionar la superficie poligonal (106) . La superficie poligonal (106) se puede especificar por un usuario o por alguna computadora. La superficie poligonal (106) se puede elegir con el fin de examinar los puntos (102a-d) de datos de volumen gue interceptan la superficie poligonal (106) . La superficie poligonal (106) se puede elegir modelar exacta o aproximadamente una superficie de origen natural o se puede elegir de alguna otra manera. En el paso (204) , se puede retirar el indexado comprimido de los polígonos (108a-d) . En algunas implementaciones, los polígonos (108a-d) se pueden representar empleando una forma de indexado comprimido también llamado indexado de vértice o vaciado selectivo de triángulo. Por ejemplo, cada elemento (110a-d) representa un vértice compartido por dos o más polígonos. Con el fin de retirar esta forma de indexado comprimido y asignar un conjunto de vértices único a cada polígono para una identificación por separado, cada vértice (110a-d) se asigna a un número de vértices Vn y un número de polígonos Pn. De esta manera, cada polígono se puede indexar por separado de acuerdo con su propio conjunto de vértices. Por ejemplo, el polígono vinculado con los elementos (110a-c) se representaría con Vn = 0,1,2 y Pn = 0; el polígono vinculado con los elementos (110b-d) se representaría con Vn = 0,1,2 y Pn = 1; y el polígono vinculado con los elementos (110c-e) se representaría con Vn = 0,1,2 y Pn = 2. Otros métodos de eliminación de esta y otras formas de indexado comprimido se pueden conocer perfectamente en la técnica y, por consiguiente, no se repiten en esta descripción. En el paso (206) , los polígonos (108a-d) se pueden subdividir. Este paso puede asegurar que cada polígono (108a-d) se pueda fijar sobre un mosaico de texturas en el paso (208). En una implementación, se especifica un mosaico de texturas máximo. En esta implementación, algunos polígonos no se pueden fijar sobre el mosaico de texturas más grande permisible. En este caso, estos polígonos se pueden subdividir en polígonos más pequeños que se fijen sobre los mosaicos de texturas de tamaño permisible. En el paso (208), se puede crear un mosaico de texturas para cada polígono (108a-d) . Los mosaicos de texturas creados en este paso se describen haciendo referencia a la Figura 3. Cada mosaico de texturas (300a-d) puede incluir o representar un arreglo bidimensional y otra porción de la memoria electrónica que tenga el tamaño adecuado para fijar un poligono (108a-d) en particular. Si un polígono (108a-d) en particular es más pequeño que el tamaño predeterminado del mosaico, entonces, en una implementación, cada mosaico de texturas (300a-d) incluye el arreglo bidimensional más pequeño que contiene un poligono (108a-d) en particular. En otra implementación donde un poligono (108a-d) en particular es más pequeño que el tamaño predeterminado del mosaico, cada mosaico de texturas (300a-d) incluye las dimensiones de un arreglo que es lo bastante grande para contener un poligono (108a-d) en particular, pero que no contiene el arreglo físico. Cada mosaico de texturas (300a-d) puede contener información que describa el polígono (108a-d) correspondiente en particular. Por ejemplo, cada mosaico de texturas puede contener coordenadas (x, y, z) de los vértices para cada polígono (108a-d) correspondiente, y un número (Pn) que identifica el polígono. Cada mosaico de texturas (300a-d) también puede contener un número (Tn) que identifica el mosaico, un número (An) que identifica el atlas de texturas creado en el paso (210) que se asocia con el mosaico, las coordenadas (s', t') que identifican la ubicación del mosaico en el atlas de texturas, las coordenadas (s, t) que identifican la posición del mosaico en la imagen desplegada, y las coordenadas (?', y') que identifican un origen para la superficie poligonal (106) . En el paso (210) , los mosaicos de texturas (300a-d) se pueden combinar para formar uno o más atlas de texturas. Los atlas de texturas creados en este paso se describen haciendo referencia a la Figura 4. Cada atlas de texturas (400a-c) puede ser o puede incluir un trazado dimensional de mosaicos de texturas (300a-d) . Cada mosaico de texturas (300a-d) se puede colocar en un atlas de texturas (400a-c) . Si no hay espacio en algún atlas de texturas (400a-c) ya existente, se puede crear un nuevo atlas de texturas (400a-c) . En algunas implementaciones, un usuario puede especificar un tamaño objetivo o máximo para cada atlas de texturas (400a-c) . En otra implementación, cada atlas de texturas
(400a-c) puede ser o puede incluir un arreglo bidimensional u otro tipo de memoria electrónica que se configure para contener uno o más mosaicos de texturas (300a-d) . En otra implementación, cada atlas de texturas (400a-c) puede contener información acerca de cómo los mosaicos de texturas (300a-d) se podrían arreglar de manera óptima en un trazado bidimensional, incluyendo donde cada atlas de texturas (400a-c) se localiza en el segmento de memoria (500) discutido tomando como referencia el paso (212). En esta implementación, puede ser necesario que los atlas de texturas tengan bastante memoria física para contener cada mosaico de texturas (300a-d) . Por consiguiente, tal como se describe, la creación de los mosaicos de texturas (300a-d) en los pasos (206) y (208) y la creación de los atlas de texturas (400a-c) en el paso (210) se puede realizar de una manera optimizada. Esto reducirá o minimizará el vacío o espacio sin utilizar en los mosaicos de texturas (300a-d) , los atlas de texturas (400a-c) o en ambos. De esta manera, el espacio de memoria de texturas disponible se optimiza empleando las técnicas anteriores. También se pueden aplicar otras técnicas de optimización bien conocidas, como por ejemplo, las que se describen en el documento Fast Line Integral Convolution for Aritrary Surfaces in 3D por Battke, Stalling y Hege, publicado el la edición de 1997 de Visualization and Mathematics . En el paso (212), se puede asignar un segmento de memoria a cada atlas de texturas (400a-c) . Los segmentos de memoria asignados en este paso se describen tomando como referencia la Figura 5. Las dimensiones del segmento de memoria (500) asignado a un atlas de texturas (400a) en particular pueden ser iguales o proporcionales a las dimensiones del atlas de texturas (400a) . El segmento de memoria (500) puede ser o puede incluir uno o más segmentos de memoria de texturas o caché de texturas. Los segmentos de memoria (500) pueden incluir una pluralidad de texeles (502a-d) . Un texel es la unidad base de un gráfico con texturas, un gráfico que define la superficie de un objeto tridimensional. Los texeles (502a-d) pueden ser unidades indivisibles de texturas presentes en el segmento de memoria (500) . Uno o más texeles (502a) y (502d) pueden corresponder a una porción del atlas de texturas (400a) que está completa o parcialmente contenida en el polígono (108d) . Estos texeles (502a) y (502d) se puede llamar texeles poligonales. Uno o más texeles (502c) pueden corresponder a una porción del atlas de texturas (400a) que está contenido dentro del mosaico de texturas (300d) , pero que no está contenido dentro de alguno de los polígonos (108a-d) . Estos texeles se pueden llamar texeles de mosaico. Uno o más texeles (502d) que no sean texeles poligonales ni tampoco texeles de mosaico se pueden incluir en el segmento de memoria (500) . Debido a que la información contenida en el atlas de texturas y en los mosaicos de texturas se puede emplear para determinar cuales de los texeles en el segmento de memoria son texeles poligonales , los texeles poligonales en el segmento de memoria (500) se pueden considerar que son predeterminados. En el paso (214) , cada polígono (108a-d) se puede convertir por exploración. El paso de conversión por exploración de un polinucleótido se describe tomando como referencia la Figura 6. La conversión por exploración es el proceso por medio del cual los valores de datos contenidos en el volumen de datos (100) se mapean en texeles. Uno o más de los puntos (102a-d) de datos de volumen en el volumen de datos (100) puede interceptar el polígono (108d) en particular. A partir de la información contenida en estos puntos (102a-d) de datos de volumen intersectantes , se crean los texeles (600a-d) que corresponden a los puntos (102a-d) de datos de volumen. Si los puntos (102a-d) de datos de volumen incluyen voxeles, estos últimos se pueden mapear en los texeles (600a-d) correspondientes empleando una técnica matemática bien conocida llamada interpolación trilineal. Haciendo uso de esta técnica, se determina cada texel con una ponderación lineal de ocho (8) voxeles que son los más cercanos al texel en el volumen de datos (100) . Los texeles (600a-d) que se crean en la conversión por exploración pueden corresponder a los texeles poligonales (502a-b) que están contenidos en el segmento de memoria (500) . El arreglo de los mosaicos de texturas dentro de cada atlas de texturas, y la ubicación de cada atlas de texturas dentro del segmento de memoria, no se fija hasta este paso. En el paso (216) , los resultados de la conversión por exploración se pueden escribir en el segmento de memoria (500) . Esto puede incluir la acción de escribir los texeles (600a-d) en los texeles poligonales (502a-b) en el segmento de memoria (500) . En una implementación, cada texel (600a-d) se puede escribir en un texel poligonal (502a-b) correspondiente conforme se vaya creando. En otra implementación, se pueden crear texeles (600a-d) que correspondan a un polígono (108a-d) en particular, y todos los texeles (600a-d) para el polígono (108a-d) se puede escribir en el segmento de memoria (500) . En otras implementaciones, se pueden crear texeles (600a-d) que correspondan a un atlas de texturas (400a-c) en particular y escribir como un grupo, o se pueden crear todos los texeles que correspondan a todos los polígonos (108a-d) y escribir como un grupo. El segmento de memoria (500) puede contener uno o más texeles (502c-d) que no sean texeles poligonales. Estos texeles pueden no contener información que sea útil en la renderización de la superficie (106) . Por ello, estos texeles se pueden considerar inválidos. En una implementación, los texeles (502c-d) inválidos pueden ser texeles en blanco, texeles que contienen únicamente valores iniciales, o texeles que de algún modo están específicamente marcados como inválidos. En otra implementación, los texeles (502c-d) inválidos pueden contener datos de texeles, por ejemplo, datos de texeles provenientes de una renderización de superficie previa u otra operación. Después de que todos los texeles poligonales (502a-b) para todos los polígonos en la superficie poligonal (106) se hayan escrito en los segmentos de memoria (500), los segmentos de memoria (500) pueden contener la información requerida para desplegar la información contenida en el volumen de datos (100) en la superficie (106) . En el paso (218), los resultados se pueden desplegar a un usuario. El contenido de los segmentos de memoria (500) se puede desplegar vía un tubo de rayos catódicos o vía otra pantalla, se pueden imprimir o de alguna otra manera desplegar. El método se puede llevar a cabo junto con otros sistemas y métodos para desplegar de manera gráfica datos de volumen. Por ejemplo, el método se puede emplear junto con un sistema para analizar y para la formación de imágenes de conjuntos de datos de volumen tridimensional, como por ejemplo, el que se describe en la solicitud de patente de los Estados Unidos "Sistema y Método para Analizar y Formar Imágenes de Conjuntos de Datos de Volumen Tridimensional" (System and Met od for Analyzing and Imaging Three-Dimensional Volume Data Sets), número de serie 09/119,635, que se incorpora a esta descripción como referencia. Cuando se pone en práctica la presente invención junto con este tipo de dispositivo, dentro del conjunto de datos de volumen 3D un usuario puede crear, formar, dimensionar y quitar de manera interactiva un número de sondas de muestreo o de superficies especificas de un usuario. La intersección de la sonda de muestreo con el conjunto de datos de volumen 3D se mapea con texturas sobre las superficies de la sonda de muestreo, o el volumen se somete a renderización con varios grados de transparencia dentro de la sonda de muestreo. Por ejemplo, conforme el usuario mueve la sonda de muestreo, como por ejemplo, al "hacer clic o al arrastrar" con un "ratón", el usuario percibe que la textura sobre las superficies de la sonda de muestreo cambia en "tiempo real" con el movimiento de la sonda de muestreo. De esta manera, el usuario puede mover de manera interactiva las sondas de muestreo a través del volumen 3D completo, fácil y efectivamente visualizar e interpretar las características y parámetros físicos que se presentan dentro del espacio geográfico representado por el conjunto de datos de volumen 3D completo. Tomando como referencia la Figura 7, se muestra un diagrama de bloques de un sistema para aplicar una textura de volumen tridimensional a una superficie poligonal de acuerdo con una modalidad de la presente invención. El sistema (700) puede incluir el caché de texturas (702) que contiene una pluralidad de texeles (704) . El sistema (700) también incluye una memoria (706) que puede contener una superficie poligonal (106) y un volumen de datos (100) . La superficie poligonal (106) se puede representar en la memoria (706) mediante una pluralidad de coordenadas vértices que describen una pluralidad de polígonos (108a-d) o mediante algún otro método. El volumen de datos (100) se puede representar en la memoria (706) mediante una pluralidad de puntos (102a-d) de datos de volumen. Cada uno de los puntos (102a-d) de datos de volumen puede ser o puede incluir un voxel. El sistema (700) también contiene un módulo de control (708) puede ser capaz de ejecutar instrucciones ejecutables por la computadora. El módulo de control (708) puede incluir o hacer referencia a instrucciones ejecutables por computadora (710). Las instrucciones ejecutables por computadora (710) se pueden almacenar en el módulo de control (708), en la memoria (706) o en otro sitio. El módulo de control (708) puede ejecutar las instrucciones ejecutables por computadora (710) con el fin de realizar varias funciones. El módulo de control (708) se puede configurar para realizar varias funciones al ejecutar las instrucciones ejecutables por computadora (710). El módulo de control (710) se puede configurar parar quitar el indexado comprimido de la superficie poligonal (106) , por ejemplo, al representar distintamente cada vértice de cada polígono (108a-d) en la superficie poligonal (106) . El módulo de control (708) también se puede configurar para subdividir estos polígonos (108a-d) en la superficie poligonal (106) que son más grandes que un tamaño de mosaico máximo permisible. El módulo de control (708) también se puede configurar para crear un mosaico de texturas (300a-d) para cada polígono (108a-d) contenido en la superficie poligonal (106) . El módulo de control (708) puede almacenar los mosaicos de texturas (300a-d) en la memoria (706) o en sí mismo. El módulo de control (708) además se puede configurar para combinar los mosaicos de texturas (300a-d) en uno o más atlas de texturas (400a-c) . El módulo de control (708) puede almacenar los atlas de texturas (400a-c) en la memoria (706) o en sí mismo. El módulo de control (708) además se puede configurar para asignar un segmento (710a-c) del caché de texturas (702) para cada uno de los atlas de texturas (400a-c) . El módulo de control (708) también se puede configurar para convertir por exploración cada polígono (108a-d) en la 106 en la superficie poligonal (106) basándose en los puntos (102a-d) de datos de volumen contenidos en el volumen de datos (100) . Los resultados de la conversión por exploración pueden ser uno o más texeles, que se pueden escribir en los texeles (704) del caché de texturas (702). Los texeles (704) que se escriben como el resultado de una conversión por exploración de un polígono (108a) en particular pueden ser texeles (704) que están contenidos en el segmento (710a) que se asigna al atlas de texturas (400a) que contiene un trazado que incluye el polígono (108a) . El módulo de control (708) también se puede configurar para desplegar los resultados de la conversión por exploración a un usuario vía un tubo de rayos catódicos, otra pantalla, impresora y otro dispositivo de despliegue . La Figura 8 es un diagrama de flujo que describe una implementación de un método para la subdivisión poligonal y la creación de un mosaico de texturas de acuerdo con una modalidad de la presente invención. Este método puede ser una implementación de los pasos (206) y (208) en la Figura 2. El método inicia en el paso (800) , en donde se puede crear un conjunto de polígonos. El conjunto de polígonos puede ser una representación de los polígonos (108a-d) que constituyen una superficie poligonal (106) . En una implementación, el paso (800) de creación de un conjunto de polígonos puede incluir quitar el indexado comprimido en la representación de los polígonos (108a-d) .
En otra implementación, los polígonos se pueden representar con facilidad sin un indexado comprimido. En el paso (802), se puede crear un conjunto de mosaicos de texturas. El conjunto de mosaicos de texturas se puede configurar para alojar uno o más mosaicos de texturas (300a-d) . El conjunto de mosaicos de texturas puede contener un tamaño máximo de mosaico de texturas, que se puede representar con una anchura y una altura. El conjunto de mosaicos de texturas no puede contener ningún mosaico de texturas (300a-d) cuando se crea. En el paso (804), el conjunto de polígonos se examina para determinar si alguno de los polígonos (108a-d) no procesados permanecen en el conjunto de polígonos. Si el conjunto de polígonos no contiene uno o más polígono sin procesar, el método está completo, y el método termina en el paso (806) . Si el conjunto de polígonos contiene uno o más polígonos (108a-d) no procesados, en el paso (808) se selecciona uno de los polígonos (108a-d) no procesados. En el paso (810) , el polígono (108a-d) se examina con el fin de determinar si el polígono (108a-d) se fijará en un mosaico de texturas (300a-d) de tamaño máximo permisible. Si el polígono (108a-d) no se fijará en un mosaico de texturas (300a-d) de tamaño máximo permisible, el polígono (108a-d) se puede dividir en el paso (812) . La subdivisión puede ser cualquier proceso mediante el cual se crean varios polígonos (108a-d) más pequeños, cuya unión es el polígono (108a-d) original. En una implementación, el polígono (108a-d) se subdivide al bisectar el borde más largo del polígono (108a-d) , y al crear un nuevo borde en el punto de bisección de un vértice del polígono (108a-d) . En otra implementación, el polígono (108a-d) se puede subdividir mediante degeneración centroide. Esto puede incluir encontrar el centroide del polígono (108a-d) , y crear un nuevo borde de cada vértice del polígono (108a-d) en el centroide. En el paso (814), los polígonos (108a-d) resultantes de la subdivisión se pueden colocar en el conjunto de polígonos. Esto puede asegurar que cada uno de estos polígonos (108a-d) se subdivida de ser necesario, y que se cree un mosaico de texturas (300a-d) para cada uno. En el paso (816), el polígono (108a-d) original se puede marcar conforme se procesa. Esto puede incluir, por ejemplo, fijar una variable Boolean o de alguna otra manera indicar que el polígono (108a-d) se ha examinado. No es necesario crear un mosaico de texturas (300a-d) para el polígono (108a-d) original, ya que se crearán mosaicos de texturas (300a-d) para los polígonos (108a-d) resultantes de la subdivisión. Si en el paso (810) se determina que el polígono (108a~d) a examinarse se fijará en un mosaico de texturas (300a-d) de tamaño máximo permisible, en el paso (818) se puede crear un nuevo mosaico de texturas (300a-d) . El mosaico de texturas (300a-d) que se crea puede incluir el polígono (108a-d) o puede contener información que describa el polígono (108a-d) . En una implementación, las dimensiones del mosaico de texturas (300a-d) se pueden elegir para reducir el tamaño del mosaico de texturas (300a-d) al mismo tiempo que se asegura que el mosaico de texturas (300a-d) contiene el polígono (108a-d) . Por ejemplo, en una implementación, el mosaico de texturas (300a~d) puede ser la unidad medidora de carga rectangular más pequeño que contiene el polígono (108a-d) . En el paso (820), el mosaico de texturas (300a-d) se puede agregar al conjunto de mosaicos de texturas. El método después continúa en el paso (816) , en donde el polígono (108a-d) se marca conforme se procesa. El método regresa al paso (804), en donde se determina si existen polígonos (108a-d) sin procesar que aún permanezcan en el conjunto de polígonos. La Figura 9 ilustra un diagrama de flujo que describe una implementación de un método para la generación de atlas de texturas de acuerdo con el paso (210) en la Figura 2. El método inicia en el paso (900), en donde se puede crear un conjunto de atlas de texturas. El conjunto de atlas de texturas se puede configurar para alojar uno o más atlas de texturas (400a-c) . El conjunto de atlas de texturas puede contener un tamaño máximo de atlas de texturas, que se puede representar con una anchura y una altura. El conjunto de atlas de texturas puede no contener ningún atlas de texturas (400a-c) cuando se crea. En el paso (902), se puede examinar un conjunto de mosaicos de texturas para determinar si algún mosaico de texturas (300a-d) sin procesar permanece en el conjunto de mosaicos de texturas. El conjunto de mosaicos de texturas examinado puede ser el conjunto de mosaicos de texturas creado en el Método de la Figura 8. Si el conjunto de mosaicos de texturas no contiene uno o más mosaicos de texturas (300a-d) sin procesar, el método se completa y el método termina en el paso (904) . Si el conjunto de polígonos contiene uno o más mosaicos de texturas (300a-d) sin procesar, en el paso (906) se selecciona uno de los mosaicos de texturas (300a-d) . En el paso (908), el mosaico de texturas (300a-d) y el conjunto de atlas se examinan con el fin de determinar si el mosaico de texturas (300a-d) se fijará en algún atlas de texturas (400a-c) contenido en el conjunto de atlas de texturas. Si el mosaico de texturas (300a-d) no se fija en ningún atlas de texturas (400a-c), en el paso (910) se puede crear un nuevo atlas de texturas (400a-c) . El nuevo atlas de texturas (400a-c) se puede colocar en el conjunto de atlas de texturas. En una implementación, el espacio vacio en el atlas de texturas (400a-c) se representa con los mosaicos de texturas (300a-d) vacíos en el atlas de texturas (300a-c) . Estos pueden ser mosaicos de texturas (300a-d) que se marcan específicamente como vacíos. En esta implementación, al atlas de texturas (400a-c) se puede agregar un solo mosaico de texturas (300a-d) vacío, de las dimensiones del atlas de texturas (400a-c) . En el paso (912), el mosaico de texturas (300a-d) seleccionado en el paso (906) se puede agregar a un atlas de texturas (400a-c) en el conjunto de atlas de texturas. En una implementación, la colocación del mosaico de texturas (300a-d) se puede llevar a cabo de una manera optimizada o de otra manera para reducir el espacio vacío en los atlas de texturas (400a~c) . En una implementación, el espacio vacío en cada atlas de texturas (400a-c) se representa con los mosaicos de texturas (300a-d) . En esta implementación, el mosaico de texturas (300a-d) agregado al conjunto de atlas de texturas se puede colocar en el sitio del mosaico de texturas (300a-d) vacío que tiene la diferencia de área más pequeña con el mosaico de texturas (300a-d) agregado. Una vez que se haya agregado el mosaico de texturas (300a-d) , se pueden crear nuevos mosaicos de texturas (300a-d) vacíos. Estos nuevos mosaicos de texturas (300a-d) puede cubrir el área del atlas de texturas (400a-c) que anteriormente se cubrió con el mosaico de texturas (300a-d) vacio, pero no se cubre con el mosaico de texturas (300a-d) que se agregó. Estos nuevos mosaicos de texturas (300a-d) vacíos se pueden colocar en el" sitio de la diferencia de área entre el mosaico de texturas (300a-d) agregado y el mosaico de texturas (300a-d) vacío. En el paso (914), el mosaico de texturas (300a-d) se puede marcar conforme se procesa. Esto puede incluir, por ejemplo, fijar una variable Boolean o de alguna otra manera indicar que el mosaico de texturas (300a-d) se ha colocado en el conjunto de atlas de texturas. El método regresa al paso (902) , en donde se determina si existen algunos mosaicos de texturas (300a-d) sin procesar que aún permanezcan en el conjunto de mosaicos de texturas. La anterior descripción de la invención es ilustrativa, y aquellos experimentados en la técnica percibirán algunas modificaciones en la configuración e implementación . Por ejemplo, se pueden combinar pasos o se pueden llevar a cabo en cualquier orden. Si bien se han descrito mosaicos de texturas y atlas de texturas como segmentos físicos de memoria electrónica capaces de contener uno o más polígonos, no es necesario que contengan físicamente esta memoria. En lugar de ello, los mosaicos de texturas y atlas de texturas pueden incluir datos que especifiquen las dimensiones de un segmento suficiente de memoria. En algunas modalidades se puede distribuir un hardware, software u otros recursos descritos en particular, y de igual modo se pueden combinar los recursos de las modalidades descritas conforme se distribuyan. El alcance de la presente invención, por consiguiente está destinado, a limitarse únicamente por las siguientes reivindicaciones .