lectura proyectos 3D

31
Capítulo 9: Modelado en 3D y composición de objetos Francisco José Rodríguez Pérez Almudena Vicente Tocino

Transcript of lectura proyectos 3D

Page 1: lectura proyectos 3D

Capítulo 9: Modelado en 3D y composición de objetos

Francisco José Rodríguez Pérez

Almudena Vicente Tocino

Page 2: lectura proyectos 3D

Índice

9.1 Problemática de la representación tridimensional................................ 4

9.2 Necesidad del modelado 3D ................................................................ 5

9.3 Conceptos básicos de 3D .................................................................... 7

9.3.1 Espacio tridimensional .................................................................. 7

9.4 Creación de gráficos 3D....................................................................... 8

9.4.1 Modelado ...................................................................................... 8

9.4.1.1 Fundamentos básicos del modelado en 3D........................... 9

9.4.2 Composición de la escena.......................................................... 12

9.4.2.1 Iluminación de la escena ..................................................... 13

9.4.3 Tesselation y mallas ................................................................... 13

9.4.4 Renderizado................................................................................ 13

9.4.4.1 Proyecciones ....................................................................... 14

9.4.4.2 Proyección ortogonal ........................................................... 15

9.4.4.3 Proyección en perspectiva................................................... 17

9.5 Modelos de reflexión y sombreado .................................................... 20

9.6 Métodos procedimentales para la generación de objetos .................. 21

9.6.1 Métodos basados en gramáticas formales ................................. 21

9.6.2 Geometría fractal ........................................................................ 22

9.6.2.1 Dimensión topológica y dimensión fractal............................ 22

9.6.2.2 ¿Cómo se generan? ............................................................ 23

9.6.2.3 Terrenos fractales................................................................ 24

9.7 APIs de Gráficos 3D........................................................................... 25

9.7.1 OpenGL ...................................................................................... 25

9.7.1.1 Historia de OpenGL ............................................................. 25

9.7.1.2 OpenGL 2.1 ......................................................................... 27

9.7.2 Direct3D...................................................................................... 27

Page 3: lectura proyectos 3D

9.7.2.1 Historia de Direct3D............................................................. 27

9.8 Software de gráficos 3D..................................................................... 29

9.9 Referencias........................................................................................ 31

Page 4: lectura proyectos 3D

9 Modelado en 3D y composición de objetos

9.1 Problemática de la representación tridimensional Las superficies u objetos planos se representan con facilidad en la pantalla. Situando el centro de la figura o su aproximación, en el centro de la pantalla, q pasa a ser considerado como el centro de las coordenadas. Se ha realizado así una sencilla homotecia con el cambio de puntos de origen y de los demás puntos de la figura plana a una superficie bidimensional que aquí es la pantalla, como podía haber sido un papel.

La representación de superficies que no son planas tiene una serie de problemas adicionales. Si se parte de los datos de una estructura definida numéricamente e intentamos transformarlos en una gráfica representada en pantalla, tenemos que pasar de dos a tres dimensiones con un mínimo de perdida o deformación en la información.

Para pasar de la figura real a la grafica se utiliza una proyección elegida en cada caso sobre la pantalla obteniendo un resultado con ciertos detalles. Estos detalles deben de ser tales que la relación entre estos y las magnitudes de las dimensiones sea la mejor posible. Se admite que una gráfica de estas características es representativa y define al objeto real.

La técnica más sencilla de representación bidimensional de modelos tridimensionales consiste en escoger proyecciones ortogonales de todas las caras del cuerpo a representar, o solo de las caras más indicativas cuando las demás son triviales. Así, una sola cara podría considerarse suficiente para representar, por ejemplo, un cubo, y hasta excesiva, pues todas las caras son iguales.

Pero cuando el objeto es más complejo, se necesita proyectar adicionalmente cortes o secciones planas, a definir, del objeto. Estas técnicas no darán la impresión de volumen, solo dibujan superficies. Para conseguir el efecto de relieve, profundidad o fondo en la figura hay estos dos procedimientos:

• Proyectar oblicuamente el objeto sobre la pantalla desde un punto, a elegir, más o menos lejano al objeto desde una posición más o menos ladeada u oblicua.

• Girar el cuerpo respecto a uno o varios de sus ejes y proyectarlo adecuada y repetidamente sobre la pantalla, con o sin traslación de cada proyección.

Como estas proyecciones se hacen desde un foco luminoso puntual, existen partes del objeto, que quedan ocultas y pueden dificultar la interpretación de la gráfica.

Page 5: lectura proyectos 3D

9.2 Necesidad del modelado 3D El diseño ayudado por ordenador representa un gran ahorro de esfuerzo y tiempo. Además se consiguen resultados extraordinarios con respecto a los procedimientos clásicos de diseño. Los programas de diseño industrial o arquitectónico admiten tres maneras de representación de objetos:

• Modelos bidimensionales del objeto o parte de él. Se reproducen separadamente las diferentes caras, planos o cortes para ser estudiados y modificados. Normalmente se utiliza una representación formal del objeto, obteniendo sus vistas desde diferentes puntos de visualización. Se denominan vistas principales de un objeto, a las proyecciones ortogonales del mismo sobre 6 planos, dispuestos en forma de cubo. También se podría definir las vistas como, las proyecciones ortogonales de un objeto, según las distintas direcciones desde donde se mire. Si situamos un observador según las seis direcciones indicadas por las flechas, obtendríamos las seis vistas posibles de un objeto.

Figura 9.1: Vistas 2D

• Modelos tridimensionales que incluyan únicamente un conjunto de puntos y líneas en el espacio. Estos modelos se llaman “wireframe” o alambrado (armazón de alambre). El objeto así representado rota en diferentes ángulos para su estudio o transformación definitiva.

Existen varias formas de representación en modo wireframe:

1. Representación alambrica: Activa este modo de sombreado.

2. Representación alambrica det: Se muestran bordes alámbricos e iluminación

Page 6: lectura proyectos 3D

3. Área de trabajo: Muestra los objetos como área de trabajo solamente. El área de trabajo se define como la caja más pequeña que abarca completamente un objeto.

Figura 9.2: Figura en 3D

• Modelos sólidos que incluyen el dibujo de superficies y son los más completos y complejos.

1. Suavizado + Resaltes: Activa este modo de sombreado, que permite ver la homogeneidad e iluminación de los objetos. También puede presentar mapas en la superficie de objetos. Esto sucede mapa a mapa, pero puede presentar tantos mapas como desee simultáneamente en el visor. Los mapas sólo aparecen en objetos que tienen coordenadas de mapeado.

2. Suavizado: Muestra suavizado, pero no resaltes

Un uso importante de las gráficas es el diseño y representación de diferentes tipos de sistemas. Los sistemas arquitectónicos y de ingeniería, como los proyectos de construcción y los esquemas de circuitos electrónicos, comúnmente se conjuntan utilizando métodos de diseño con ayuda de la computadora. Los métodos gráficos se utilizan asimismo para representar sistemas económicos, financieros organizacionales, científicos, sociales y ambientales. Las representaciones de estos sistemas a menudo se construyen para simular el comportamiento de un sistema en diversas condiciones.

Un aspecto muy importante de esta simulación es el modelado del mundo virtual. El desarrollo de una aplicación empieza inevitablemente por un análisis

Page 7: lectura proyectos 3D

de las tareas. En esta etapa, se describen matemáticamente los procesos subyacentes y los recursos materiales que deberán asignárseles.

Después del análisis de las tareas, deben desarrollarse las bases de datos de los objetos y optimizar el modelo. Es decir, modelar la forma del objeto, su aspecto, su comportamiento, su condicionante etc., ya que, corresponderán a las herramientas de entrada/salida al mundo simulado.

9.3 Conceptos básicos de 3D

9.3.1 Espacio tridimensional El espacio 3d es un espacio matemático virtual creado por el programa de diseño 3d.Este espacio está definido por un sistema cartesiano de tres ejes: X, Y, Z. El punto donde salen las líneas virtuales que definen los ejes se llama origen y sus coordenadas son (0, 0, 0). En este espacio virtual se crean, modifican y disponen los diferentes objetos tridimensionales que van a componer la escena.

Figura 9.3: El espacio 3D

La Figura 9.4 representa los elementos básicos para el diseño en 3D descritos a continuación:

Punto: Es el elemento fundamental de construcción de los programas de diseño 3d. La posición en el espacio de cada punto es definido con un grupo de coordenadas X,Y,Z. - Dimensión 0.

Línea: Definida por el recorrido más corto del espacio entre dos puntos en cualquier dirección. - 1ra Dimensión.

Page 8: lectura proyectos 3D

Plano: Definido por la extensión de la línea en dirección perpendicular. - 2da Dimensión.

Volumen (objeto): Definido por la prolongación del plano en dirección perpendicular. - 3ra Dimensión.

Figura 9.4: Elementos del diseño 3D

9.4 Creación de gráficos 3D

9.4.1 Modelado El modelado consiste en ir dando forma a objetos individuales que luego serán usados en la escena. Existen diversas técnicas de modelado; Constructive Solid Geometry, modelado con NURBS y modelado poligonal son algunos ejemplos. Los procesos de modelado pueden incluir la edición de la superficie del objeto o las propiedades del material (por ejemplo, color, luminosidad, difusión, especularidad, características de reflexión, transparencia u opacidad, o el índice de refracción), agregar texturas, mapas de relieve (bump-maps) y otras características.

El proceso de modelado puede incluir algunas actividades relacionadas con la preparación del modelo 3D para su posterior animación. A los objetos se les puede asignar un esqueleto, una estructura central con la capacidad de afectar la forma y movimientos de ese objeto. Esto ayuda al proceso de animación, en el cual el movimiento del esqueleto automáticamente afectara las porciones correspondientes del modelo.

El modelado puede ser realizado por programas dedicados (como Blender, Lightwave 3D, Rhinoceros 3D o Moray), un componente de una aplicación (Shaper, Lofter en 3D Studio) o por un lenguaje de descripción de escenas (como en POV-Ray). En algunos casos, no hay una distinción estricta entre estas , el modelado es sólo una parte del proceso de creación de escenas (por ejemplo, con Caligari trueSpace).

Page 9: lectura proyectos 3D

9.4.1.1 Fundamentos básicos del modelado en 3D El 3D es una mera representación de coordenadas, que conforman estructuras envueltas por una textura.

Por tanto, primero se deben construir un modelo, para ello hay técnicas de modelado comunes, en las cuales se encuentran:

1. Estructuras Predefinidas: Aquellas estructuras ya armadas por el sistema. Existen tres tipos:

a. Primitivas: caja, cono, esfera, geo esfera, cilindro, tubo, anillo, pirámide, tetera y plano.

b. Primitivas Extendidas: hedra, nudo toroide, caja "redondeada", cilindro "redondeado", tanque de aceite, capsula, sprindle, forma L, gengon, forma c, anillo ondulado, hose, prisma.

c. Librerías: son formas armadas, disponibles en 3d Max 7; puertas, ventanas, árboles, escaleras.

Todas estas estructuras nos sirven para poder modelar objetos o escenas más complejas a partir de ellas. Por ejemplo, con 3 cajas podríamos armar una escena para una habitación.

Figura 9.5: Estructuras predefinidas

2. Box Modeling: Como su nombre lo indica, es el modelado de figuras complejas a través de una caja. Empleando un modificador de mallas, Edith Mesh, podrán ir extendiendo la caja, convirtiéndola en otra cosa.

Figura 9.6: Objeto diseñado con Box Modeling

Page 10: lectura proyectos 3D

3. NURBS Modeling: Es una técnica para construir mallas de alta complejidad, de aspecto orgánico ó curvado, que emplea como punto de partida splines (figuras 2d) para mediante diversos métodos, crear la malla 3d anidando los splines.

Figura 9.7: Objeto diseñado con NURBS Modeling

4. Operaciones Booleanas: Consiste, en tomar dos mallas y aplicarles una de tres operaciones booleanas disponibles:

a. Resta: resta dos figuras A – B ó B – A.

b. Intersección: da como resultado sólo lo que esta "tocándose" de ambas figuras.

c. Unión: funde ambas figuras creando una única nueva.

Figura 9.8: Objeto diseñado aplicando operaciones booleanas

5. Extrude || Lathe. Son dos técnicas que a partir, de una figura 2d (spline) crea el volumen.

a. Extrude: da profundidad a un objeto 2d. Extiende la profundidad.

b. Lathe: tomando un spline, lo reproduce por un eje en toda su rotación. Ideal para botellas, copas, y demás objetos sin diferencia en sus costados. Aunque puede combinarse con otra técnica luego, y crear por ejemplo, una tasa.

Page 11: lectura proyectos 3D

Figura 9.9: Imagen de ejemplo Extrude

Figura 9.10: Imagen de ejemplo Lathe

6. Loft: Se deben emplear 2 ó más splines, para crear una malla 3d continua. El primer spline, funciona como path (camino) mientras que los demás, dan forma, extendiéndose, a traves del path. Ideal para crear cables, botellas, etc.

Figura 9.11: Objeto diseñado con la técnica Loft

7. Sistema de Partículas: Es como su nombre lo indica, un sistema de partículas (proyección de formas geométricas, de forma controlada mediante parámetros varios tales como choque, fricción y demás). Es combinable, con efectos de dinámica y deformadores. Es ideal para crear humo, agua, ó cualquier cosa que sea muchos objetos y repetitivos.

Page 12: lectura proyectos 3D

Figura 9.12: Objeto diseñado utilizando un sistema de partículas

8. Modelos por Texturas: Este tipo de modelado, si es que se lo puede denominar así, en vez de emplear deformadores en la malla, engañan la vista, con mapas del canal alpha (transparencia) para crear recortes, ó engaños directos de relieve (con un canal especial para esto independiente del de relieve) para crear terrenos por ejemplo. Es un tipo de modelado, usado mucho para abstractos en 3d, y no es muy difícil de emplear, simplemente se deben manipular los canales para engañar la vista.

Figura 9.13: Objeto diseñado utilizando un modelo por texturas

9.4.2 Composición de la escena Esta etapa involucra la distribución de objetos, luces, cámaras y otras entidades en una escena que será utilizada para producir una imagen estática o una animación. Si se utiliza para Animación, esta fase, en general, hace uso de una técnica llamada "Keyframing", que facilita la creación de movimientos complicados en la escena. Con la ayuda de la técnica de keyframing, en lugar de tener que corregir la posición de un objeto, su rotación o tamaño en cada cuadro de la animación, solo se necesita marcar algunos cuadros clave (keyframes). Los cuadros entre keyframes son generados automáticamente, lo que se conoce como 'Interpolación'.

La iluminación es un aspecto importante de la composición de la escena. Como en la realidad, la iluminación es un factor importante que contribuye al resultado estético y a la calidad visual del trabajo terminado. Por eso, puede ser un arte difícil de dominar. Los efectos de iluminación pueden contribuir en gran medida

Page 13: lectura proyectos 3D

al humor y la respuesta emocional generada por la escena, algo que es bien conocido por fotógrafos y técnicos de iluminación teatral.

9.4.2.1 Iluminación de la escena La intensidad de la luz que se observa en cada superficie de un objeto depende del tipo de fuentes de luz situadas en la vecindad y de las características de la superficie del objeto. Algunos objetos tienen superficies brillantes y algunos tienen superficies opacas o mate. Además, algunos objetos se construyen con materiales opacos, mientras que otros son más o menos transparentes. Un modelo de sombreado para producir intensidades realistas sobre superficies de un objeto debe tomar en consideración estas diversas propiedades.

Cuando se observa un objeto, se percibe la intensidad de luz reflejada de sus superficies. La luz que se refleja de las superficies proviene de las diversas fuentes de luz que rodean al objeto. Si el objeto es transparente, también se percibe luz de cualquier fuente que pueda estar situada detrás del mismo. Las fuentes de luz que iluminan un objeto son de dos tipos básicos:

• Fuentes emisoras de luz: entre las que se incluyen los focos y el Sol.

• Fuentes reflectoras de luz: son superficies iluminadas de otros objetos, como las paredes de un cuarto, que están próximas al objeto que se está observando. Una superficie que no esta expuesta directamente a una fuente emisora de luz seguirá siendo visible si se iluminan los objetos circunvecinos. Las múltiples reflexiones de luz que proviene de estos objetos cercanos se combinan para producir una iluminación uniforme denominada luz ambiente o bien luz de fondo.

9.4.3 Tesselation y mallas El proceso de transformar la representación de objetos, como el punto medio de coordenadas de una esfera y un punto en su circunferencia, en una representación poligonal de una esfera, se conoce como tesselation. Este paso es usado en el rénder basado en polígonos, donde los objetos son descompuestos de representaciones abstractas primitivas como esferas, conos, etcétera, en las denominadas mallas, que son redes de triángulos interconectados.

Las mallas de triángulos son populares ya que está probado que son fáciles de 'renderizar' usando Scanline rendering.

Las representaciones poligonales no son utilizadas en todas las técnicas de rénder, y en estos casos, el paso de tesselation no es incluido en la transición de representación abstracta y la escena 'renderizada'.

9.4.4 Renderizado El renderizado es un proceso de cálculo complejo desarrollado por un ordenador destinado a generar una imagen 2D a partir de una escena 3D. Así podría decirse que en el proceso de renderización, la computadora "interpreta" la escena 3D y la plasma en una imagen 2D.

Page 14: lectura proyectos 3D

La renderización se aplica a los gráficos por ordenador, más comúnmente a la infografía. En infografía este proceso se desarrolla con el fin de imitar un espacio 3D formado por estructuras poligonales, comportamiento de luces, texturas, materiales, animación, simulando ambientes y estructuras físicas verosímiles, etc. Una de la partes más importantes de los programas dedicados a la infografía son los motores de render los cuales son capaces de realizar técnicas complejas como radiosidad, raytrace (trazador de rayos), canal alpha, reflexión, refracción, iluminación global, etc.

Cuando se trabaja en un programa de diseño 3D por computadora, no es posible visualizar en tiempo real el acabado final deseado de una escena 3D compleja ya que esto requiere una potencia de cálculo demasiado elevada. Por lo que se opta por crear el entorno 3D con una forma de visualización más simple y técnica y luego generar el lento proceso de renderización para conseguir los resultados finales deseados.

9.4.4.1 Proyecciones En dos dimensiones, las operaciones de visión transfieren puntos bidimensionales en el plano coordenado mundial a puntos bidimensionales en el plano de coordenadas del dispositivo. Las definiciones de objetos, sujetados contra el marco de una ventana, se delinean en un puerto de visión (viewport). Estas coordenadas de dispositivo normalizadas se convierten después en coordenadas de dispositivo y el objeto se despliega en el dispositivo de salida.

Figura 9.14: Ejemplo de proyección

En tres dimensiones, la situación es un poco más complicada, ya que ahora tenemos algunas alternativas como la forma en que se van a generar las vistas. Podríamos visualizar una escena desde el frente, desde arriba o bien desde atrás. También podríamos generar una vista de lo que observaríamos si estuviéramos parados en medio de un grupo de objetos. Además, las descripciones tridimensionales de objetos deben proyectarse en la superficie de visión plana del dispositivo de salida.

La visualización en nuestro caso significa información del mundo real en la pantalla. La visualización 2D son las operaciones de transferencia de puntos bidimensionales en el plano coordenado del mundo en el plano coordenado del dispositivo.

Existen dos métodos básicos para proyectar objetos tridimensionales sobre una superficie de visión bidimensional. Estas dos maneras, dependen de si todos

Page 15: lectura proyectos 3D

los puntos del objeto pueden proyectarse sobre la superficie a lo largo de líneas paralelas o bien los puntos pueden proyectarse a lo largo de líneas que convergen a una posición denominada centro de proyección. En ambos casos, la intersección de una línea de proyección con la superficie de visión determina las coordenadas del punto proyectado sobre este plano de proyección.

9.4.4.2 Proyección ortogonal Una proyección ortogonal (o en paralelo) preserva dimensiones relativas de los objetos y esta es la técnica que se utiliza en el dibujo mecánico para producir la traza a escala de objetos en tres dimensiones. Este método sirve para obtener vistas exactas de varios lados de un objeto, pero una proyección en paralelo no ofrece una representación realista de un objeto tridimensional.

Figura 9.15: Ejemplo de proyección ortogonal

Las vistas formadas con proyecciones en paralelo pueden caracterizarse de acuerdo con el ángulo que la dirección de proyección forma con el plano de proyección. Así tenemos:

• Proyección ortogonal: Cuando la dirección de proyección es perpendicular al plano de proyección

• Proyección ortogonal axonométrica: Si la vista muestra más de una cara del objeto. La proyección axonométrica más usada es la isométrica, que se obtiene alineando el plano de proyección de modo que corte con cada eje coordenado en el cual se defina el objeto a la misma distancia del origen.

• Proyección oblicua: Proyección que no es perpendicular al plano.

En las figuras siguientes se puede apreciar las diferencias en estos tipos de proyecciones.

Page 16: lectura proyectos 3D

Figura 9.16: a) Construcción de una proyección axonométrica. b) Vista desde arriba. c) Vista lateral

Figura 9.17: Vistas axonométricas.

Figura 9.18: a) Construcción de una proyección oblicua. b) Vista desde arriba. c) Vista lateral. Son las vistas paralelas más utilizadas Los proyectores tienen

un ángulo arbitrario con el plano de proyección.

Page 17: lectura proyectos 3D

Figura 9.19: Proyecciones ortogonales

Las proyecciones ortogonales se utilizan con mayor frecuencia para producir las vistas de frente, lado y fondo de un objeto. Estas vistas se denominan elevaciones y las vistas de la parte superior se conocen como plantas. Los trazos de ingeniería comúnmente emplean estas proyecciones ortogonales, ya que las longitudes y los ángulos se representan en forma más exacta y pueden medirse a través de los trazos.

9.4.4.3 Proyección en perspectiva

Figura 9.20: Proyección en perspectiva de una línea sobre una superficie de visión (plano de proyección)

Una proyección en perspectiva produce vistas realistas pero no preserva las dimensiones relativas. Las líneas distantes se proyectan como menores que aquellas que están más próximas al plano de proyección.

Page 18: lectura proyectos 3D

Para obtener una proyección en perspectiva de un objeto tridimensional, se proyectan los puntos a lo largo de líneas de proyección que se interceptan en el centro de proyección. Puede elegirse cualquier posición par el centro e proyección, pero la elección de una posición a lo largo del eje z simplifica los cálculos en las ecuaciones de transformación.

Figura 9.21: Proyección en paralelo de una figura sobre una superficie de visión (plano de proyección)

Cuando un objeto tridimensional se proyecta sobre un plano mediante ecuaciones de transformación de perspectiva, cualquier conjunto de líneas paralelas del objeto que no sean paralelas al plano se proyectan en líneas convergentes. Las líneas paralelas que son paralelas al plano se proyectan como líneas paralelas. El punto en el cual un conjunto de líneas paralelas parece converger se denomina punto de fuga. Cada conjunto de líneas paralelas proyectadas tendrá un punto de fuga aparte. En la figura se muestra el resultado de una proyección en perspectiva con varios puntos de fuga distintos.

El proceso de rendering de una escena es un proceso bastante simple por un lado, pues es hacer siempre lo mismo, y muy complejo por otro, pues hay que saber qué parámetros poner para obtener lo que queremos. En general, el proceso es el siguiente:

• se describe una escena en base a unos modelos matemáticos, donde se especifican los objetos que intervienen y la posición tanto de la cámara (punto de vista del observador) como la de las fuentes de iluminación.

• se calcula la imagen fotorealista a partir de la especificación anterior, y por medio de un programa de rendering. Hay muchos, tanto comerciales (RenderMan, Alias, 3D Studio) como freware/shareware (POV, RayShade, PolyRay, BobTracer).

• se postprocesa (por medio de técnicas para oscurecer, aclarar, rotar la imagen) y se visualiza

Dependiendo del algoritmo de cálculo en el proceso de rendering, se tienen los siguientes tipos:

• métodos scanline: tienen en cuenta sólo la iluminación de los objetos, y no las propiedades físicas de estos. Son métodos muy rápidos, pero los resultados que se obtienen son los menos realistas (3D Studio).

Page 19: lectura proyectos 3D

• métodos radiosity: calculan las ecuaciones de radiosidad para cada objeto, en función de la energía que reciben, emiten y propagan. Son métodos independientes del punto de vista del observador, muy lentos, pero que producen los mejores efectos de sombreado/iluminación. Tienen en cuenta las propiedades físicas relacionadas con la reflexión, pero no la refracción (Radiosity).

• métodos de raytracing: calculan las trayectorias de los rayos de luz que inciden en la cámara, provenientes de las fuentes de iluminación. Se tienen en cuenta tanto las propiedades de reflexión como las de refracción. Son métodos muy lentos (los que más), pero que consiguen, en general, los mejores efectos fotorealistas ya que son capaces de calcular reflexiones, refracciones, transparencias, sombras, etc. El fallo más importante de estos métodos es precisamente en el sombreado, que, si bien, es más realista que con métodos scanline, lo es menos que con radiosity. Dentro del raytracing, se encuentran básicamente dos submétodos:

o photom tracing: se calculan las trayectorias directas, entre las fuentes de ilumi y el observador. Método poco usado.

o el visible tracing: se calculan las trayectorias inversas, entre el observador y las fuentes de iluminación. Es el método más usado, y el que se usará en el presente curso. Es el que implementan programas como: RenderMan, Alias, POV, etc.

El método de raytracing presenta una serie de limitaciones y/o inconvenientes, que se solventan por medio de una serie de técnicas.

• líneas escalonadas: debido a la discretización en pantalla de los rayos de luz (pixel), las líneas rectas inclinadas se ven como hechas a escalones (aliasing). La solución es colorear en todos más suaves los pixel que quedan entre los escalones (antialiasing). Método que ralentiza la generación de imágenes, pero consigue mayor calidad.

• desaparición de objetos diminutos: debido al grosor de los pixel, estos son el promedio de los rayos que llegan. Si se trazan pocos rayos, pueden desaparecen objetos. Una de las técnicas para solventar esto es el supersampling, que consiste en tener internamente muchos más pixels de los que se van a representar, y luego promediar. Se consiguen buenas soluciones, aunque el tiempo de rendering se multiplica por 10-100.

• falta de difracción: la refracción desvía la luz, pero no de igual forma en todas las longitudes de onda. Por este motivo, cuando la luz blanca atraviesa un prisma, se descompone en colores (arco iris). Esto es imposible por medio de raytracing.

• falta de sombras suaves: puesto que las fuentes de iluminación son puntos infinitamente pequeños, no se crean zonas de penumbra, y en cambio entre zona con sombra y zona iluminada es muy drástico.

Page 20: lectura proyectos 3D

• falta de reflexión especular: la luz, al incidir en una superficie reflexiva no rebota. La mayoría de los raytracers no solucionan el problema.

• falta de reflexión difusa: no sólo los objetos especulares reflejan la luz, si no también los mates. Se puede intenta remediarlo con la iluminación ambiental, como si todos los objetos reflejaran una cantidad constante y pequeña de luz.

• falta de efectos cáusticos: efectos que se producen debido a la refracción no uniforme de la luz (p.e. en lentes).

• reflejos defectuosos: los reflejos se producen debido tanto a la reflexión especular como a la difusa, generalmente en las superficies curvadas. Debido a la imposibilidad de calcular ambas reflexiones, estos efectos se simulan por medio de métodos matemáticos aproximados. Entre los disponibles, se utilizan reflexiones Phong y especulares

9.5 Modelos de reflexión y sombreado Los gráficos 3D por ordenador modernos cuentan con un modelo de reflexión llamado Phong reflection model, que no debe ser confundido con Phong shading, que es algo completamente diferente.

Este modelo de reflexión y las técnicas de sombreado que permite, se aplican solo a rénders basados en polígonos. Por ejemplo, raytracing y radiosity no lo utilizan.

Técnicas de rénder de reflexión populares son:

• Flat shading: Una técnica que sombrea cada polígono de un objeto basado en la normal del polígono y la posición e intensidad de una fuente de luz.

• Gouraud shading: Inventado por H. Gouraud en 1971, es una rápida técnica de sombreado de vértices usada para simular superficies suavemente sombreadas.

• Texture mapping: Es una técnica para simular un gran nivel de detalle superficial, aplicando imágenes (texturas) sobre los polígonos.

• Phong shading: Inventado por Wu Tong Phong, es utilizado para simular brillos especulares y superficies sombreadas suaves.

• Bump mapping: Creado por Jim Blinn, es una técnica de perturbación utilizada para simular superficies rugosas que es bastante popular actualmente. Se usa cuando se desea dar un efecto de relieve en el objeto. Esta técnica modifica las normales de la superficie a modificar, sin modificar su geometria. Lógicamente, las normales originales de la superficie serán perpendiculares a la misma. El bump mapping se encarga de eliminar esa perpendicularidad y modificar estas normales para lograr el efecto deseado, todo ello sin modificar en ningún momento la topología ni la geometría del objeto. El resultado es bastante rico y

Page 21: lectura proyectos 3D

detallado, y pueden lograrse grandes parecidos a elementos naturales (como puede ser la textura de una naranja.

9.6 Métodos procedimentales para la generación de objetos

9.6.1 Métodos basados en gramáticas formales La idea básica consiste en partir de una forma simple, e ir añadiendo nueva información geométrica. La técnica consiste en aplicar una serie de reglas de transformación a la forma original.

Hay muchos objetos naturales que son candidatos a ser modelados de forma recursiva.

Partes del objeto se asemejan al propio objeto. Por tanto, estos objetos pueden a ser modelados de forma algorítmica. Un ejemplo de estos son los árboles. Aunque no hay dos árboles iguales, se pude ver que de su tronco parten las ramas, de las cuales a su vez salen más y así durante un cierto número de iteraciones. Las diferencias entre dos árboles pueden ser perfectamente modeladas mediante una distribución de probabilidad. Esta distribución puede ser uniforme o incluso para obtener más realismo, una distribución normal. No hay ningún problema en simular computacionalmente estas distribuciones de probabilidad. La recursividad se puede definir matemáticamente mediante gramáticas formales. Las gramáticas a su vez definen lenguajes a través de los símbolos terminales. Los símbolos terminales en el contexto de los gráficos pueden interpretarse de varias formas, todas ellas relacionadas con la geometría o forma del objeto a representar. Por tanto, el lenguaje generado por la gramática, interpretado de forma apropiada, nos da la sucesión de operaciones que debemos realizar para generar el objeto.

En general, hay más de una regla de producción que puede aplicarse a un mismo símbolo no terminal. Por tanto, si seleccionamos la regla de forma aleatoria se pueden generar objetos muy parecidos con ciertas diferencias. Esto se puede utilizar en el ejemplo de los árboles. Hay diferentes formas para la interpretación de los símbolos terminales de la gramática.

Una forma podría ser la siguiente: Supongamos un bolígrafo que va trazando líneas de acuerdo a las reglas definidas por el lenguaje. Así, el bolígrafo puede moverse una unidad hacia delante, torcer a la derecha o a la izquierda. El ángulo en el que puede girar el bolígrafo se considera constante. Se pueden denotar estas operaciones mediante los símbolos: A, D, I, para representar: hacia delante, a la derecha y a la izquierda. Suponiendo que el ángulo sea de 120 grados, la cadena ADADAD genera un triángulo equilátero.

Con un ángulo de 60 grados. La interpretación gráfica de esta regla se muestra en la figura:

Page 22: lectura proyectos 3D

Si se sustituye cada símbolo terminal ‘A’ por su regla de producción, se obtiene la siguiente sucesión de figuras:

9.6.2 Geometría fractal Un fractal se puede definir como una característica o una propiedad que tienen todos los elementos que poseen forma, aunque tradicionalmente un fractal se le asocia a ciertas imágenes que son generadas a partir de fórmulas matemáticas. En realidad estas imágenes son “Imagenes Fractales”, pero por abreviar simplemente se les dice “Fractales”.

Una definición más completa sería la siguiente: Un fractal es aquel ente geométrico que tiene una dimensión fractal, estrictamente mayor que su dimensión topológica.

Para poder hablar de fractales es necesario entender y establecer primero lo que significa la dimensión topológica y lo que significa la dimensión fractal, para, a partir de ello, definir el objeto fractal y su correspondiente geometría, asi como sus aplicaciones más básicas, para hacer esto hay que entender ciertos conceptos y fórmulas matemáticas.

9.6.2.1 Dimensión topológica y dimensión fractal Desde un cierto punto de vista (que llamaremos topológico) una circunferencia y un segmento de recta son la misma curva y encierran el mismo tipo de superficie puesto que es posible transformar una en la otra mediante una deformación continua, es decir, sin cortar o someter a manipulaciones “no topológicas”.

Desde otro punto de vista (métrico) no son la misma curva, ya que la circunferencia y el área que encierra, el círculo, son finitos, y, en cambio, el segmento, aunque es finito, no encierra con su borde un área finita.

Aquí aparece una característica distinta de las matemáticas: intentar clasificar los objetos por lo que se conserva, y analizar, por otra parte, qué ocurre con lo que no se conserva. En el ejemplo anterior, lo que se conserva es su carácter topológico, es decir, su dimensión topológica.

La definición de dimensión topológica dada por Henri Poincaré fue la siguiente:

• El conjunto vacío tiene dimensión -1.

Page 23: lectura proyectos 3D

• Si los bordes de los entornos pequeños de todos los puntos del ente son espacios (n-1)-dimensionales, decimos que el espacio que consideramos es n-dimensional.

Así, según esto, se tiene:

• conjunto vacío: dimensión topológica: D = -1

• punto: dimensión topológica: D = 0

• segmento: dimensión topológica: D = 1

• cuadrado: dimensión topológica: D = 2

• cubo: dimensión topológica: D = 3

La dimensión topológica en el sentido de Poincaré o de Devlin coincide en general con la dimensión por semejanza de Hausdorff-Besicovich como por ejemplo los “cuerpos euclídeos” (rectas,segmentos,etc), esto es : Dt = Df. Pero hay ciertos objetos geométricos en los que no ocurre así, es decir Dt < Df. Y estos objetos son precisamente los Fractales.

Las características que definen un fractal son las siguientes:

Autosimilitud: A diferentes escalas, un fractal conserva la misma apariencia, siempre existe una clara similitud entre partes muy distantes de una misma figura fractal.

Infinito Detalle: Relacionada con la anterior característica al ampliar un fractal tanto más detalle revela este sin que se tenga un límite en el que se aprecien bloques.

Dimensión no entera: Al contrario de la geometría clásica, en la que las figuras tienen 1, 2 o 3 dimensiones, un fractal puede desarrollarse en una dimensión no entera, como, por ejemplo la curva de Koch, que lo hace en la dimensión 1.26, puesto que ocupa parte del plano pero no llega a tener la entidad de una figura bidimensional.

En general, un fractal tiene tantos puntos como todo el espacio tridimensional y tiene tal estructura que cada una de sus partes, observada con una lente de aumento adecuada, reproduce en cierto sentido el conjunto generador de partida (autosemejanza).

Entendemos por Geometría Fractal a la parte de la matemática que estudia la generación, dimensionalidad y aplicación práctica de los fractales.

9.6.2.2 ¿Cómo se generan? Existen diversas formas para la generación de un fractal, sin embargo, matemáticamente se define como la repetición constante de un cálculo simple, esto es, la iteración. Así entonces los fractales se generan a través de iteraciones de un patrón geométrico establecido como fijo.

Page 24: lectura proyectos 3D

La siguiente figura representa La curva de Koch (copo de Nieve) la cual se forma a partir de un triángulo equilátero al cual se dividen sus lados en tres partes iguales, de forma tal que en los tercios medios se coloca otro triángulo semejante al primero. Esta iteración, en un alto grado de complejidad, se asemejará a una circunferencia, ya que los triángulos se irán colocando infinitamente. Ahora su dimensión fractal es:

9.6.2.3 Terrenos fractales Una de las principales aplicaciones de la geometría fractal para los gráficos por ordenador son los terrenos y montañas fractales. Se pueden generar una montaña mediante una subdivisión recursiva de un tetraedro. La subdivisión puede ser semejante a la utilizada en la curva de Koch. Por tanto, se van escogiendo los puntos medios de los lados del tetraedro y se desplazan.

Se puede utilizar la función Random() para controlar el desplazamiento de los puntos medios. Así se generan objetos más irregulares y diferentes en cada ejecución del algoritmo.

Este algoritmo puede ser utilizado también para la generación de terrenos. Se puede utilizar como axioma de la gramática un terreno hecho mediante rectángulos en el plano (x, z).

Figura 9.22: Terreno fractal

Subdividiendo cada rectángulo en cuatro rectángulos más pequeños y desplazando todos los vértices en la dirección del eje y obtenemos un terreno más rugoso y realista.

Figura 9.23: Imagen generada mediante fractales

Page 25: lectura proyectos 3D

9.7 APIs de Gráficos 3D Los gráficos 3D se han convertido en algo muy popular, particularmente en juegos de computadora, al punto que se han creado APIs especializadas para facilitar los procesos en todas las etapas de la generación de gráficos por computadora. Estas APIs han demostrado ser vitales para los desarrolladores de hardware para gráficos por computadora, ya que proveen un camino al programador para acceder al hardware de manera abstracta, aprovechando las ventajas de tal o cual placa de video.

Las APIs más populares actualmente son dos:

• OpenGL

• Direct3D

9.7.1 OpenGL OpenGL es una especificación estándar que define una API multilenguaje y multiplataforma para escribir aplicaciones que produzcan gráficos 2D y 3D. Fue desarrollada por Silicon Graphics Inc. (SGI) en 1992[1]. Su nombre viene del inglés Open Graphics Library, cuya traducción es biblioteca de gráficos abierta (o mejor, libre, teniendo en cuenta su política de licencias[2]).

OpenGL se utiliza en campos como CAD, realidad virtual, representación científica y de información, simulación de vuelo o desarrollo de videojuegos, en el que su principal competidor es Direct3D de Microsoft Windows.

9.7.1.1 Historia de OpenGL En los años 1980 el desarrollo de software que fuese compatible con un amplio rango de hardware gráfico era un verdadero reto para los desarrolladores. Había que tratar con interfaces muy diferentes y escribir drivers específicos para cada tipo de hardware, resultando muy costoso; por ello, se subcontrataban equipos de programadores para agilizar el desarrollo. Dado que cada equipo trabajaba por separado en sus interfaces, se producía mucho código redundante. Además, era un proceso caro, por lo que varios grupos innovadores aceptaron el reto de encontrar un método mejor.

Al principio de los años 1990 SGI era un grupo de referencia en gráficos 3D para estaciones de trabajo. Suya era la API IRIS GL[7], considerada puntera en el campo y estándar de facto, llegando a eclipsar a PHIGS, basada en estándares abiertos. IRIS GL se consideraba más fácil de usar y, lo más importante, soportaba renderizado en modo inmediato. Además, PHIGS, aparte de su mayor dificultad, fue considerada inferior a IRIS GL respecto a funcionalidad y capacidad.

La competencia de SGI (Sun Microsystems, Hewlett-Packard e IBM, entre otros) fue capaz de introducir en el mercado hardware 3D compatible con el estándar PHIGS mediante extensiones. Esto fue reduciendo la cuota de mercado de SGI conforme iban entrando diferentes proveedores en el

Page 26: lectura proyectos 3D

mercado. Por todo ello, en un intento de fortalecer su influencia en el mercado, SGI decidió convertir el estándar IRIS GL en un estándar abierto.

SGI observó que la API IRIS GL no podía ser abierta debido a conflictos de licencias y patentes; también contenía funciones no relevantes para los gráficos 3D como APIs para ventanas, teclado o ratón (en parte, porque fue desarrollada antes de la aparición del X Window System o de los sistemas NeWS de Sun). Además, mientras iba madurando el soporte del mercado para el nuevo estándar, se pretendía mantener los antiguos clientes mediante bibliotecas añadidas como Iris Inventor o Iris Performer.

El resultado de todo lo anterior fue el lanzamiento del estándar OpenGL.

Algunos de los logros que se consiguieron fueron:

• Estandarizar el acceso al hardware.

• Trasladar a los fabricantes la responsabilidad del desarrollo de las interfaces con el hardware.

• Delegar las funciones para ventanas al sistema operativo.

Con la variedad de hardware gráfico existente, lograr que todos hablasen el mismo lenguaje obtuvo un efecto importante, ofreciendo a los desarrolladores de software una plataforma de alto nivel sobre la que trabajar.

En 1992[8], SGI lideró la creación del OpenGL Architecture Review Board (OpenGL ARB), grupo de empresas que mantendría y extendería la especificación OpenGL en los años siguientes. OpenGL evolucionó desde IRIS GL, superando su problema de dependencia del hardware al ofrecer emulación software para aquellas características no soportadas por el hardware del que se dispusiese. Así, las aplicaciones podían utilizar gráficos avanzados en sistemas relativamente poco potentes.

En 1994 SGI barajó la posibilidad de lanzar un producto denominado OpenGL++, el cual incluía elementos como una API de scene-graph (basada presumiblemente en la tecnología de Performer). Dicha especificación fue divulgada entre unos pocos grupos interesados, pero nunca apareció finalmente como producto[9].

En 1995 Microsoft lanzó Direct3D, que se convertiría en el principal competidor de OpenGL. El 17 de diciembre de 1997[10] Microsoft y SGI iniciaron el proyecto Fahrenheit, esfuerzo cooperativo con el objetivo de unificar las interfaces de OpenGL y Direct3D (y añadir también una API scene-graph). En 1998 se uniría al proyecto Hewlett-Packard[11]. Pese a tener un principio prometedor en estandarizar las APIs de gráficos 3D, debido a restricciones financieras en SGI y la falta general de apoyo por parte de la industria, fue finalmente abandonado en 1999[12].

Page 27: lectura proyectos 3D

9.7.1.2 OpenGL 2.1 El 2 de agosto de 2006 se publicó OpenGL 2.1. Siendo completamente compatible con las versiones anteriores[13], aporta además nuevas características como:

• Revisión 1.20 del OpenGL Shading Language (GLSL).

• Comandos que soportan la especificación de matrices no cuadradas.

• Objetos Pixel buffer para acelerar el tráfico de imágenes en los buffers en comandos como glTexImage2D y glReadPixels. Esta funcionalidad corresponde a la extensión ARB_pixel_buffer_object.

• Texturas sRGB. Esta funcionalidad corresponde a la extensión GL_EXT_texture_sRGB.

9.7.2 Direct3D Direct3D es parte de DirectX, una API propiedad de Microsoft disponible tanto en los sistemas Windows de 32 y 64 bits, como para sus consolas Xbox y Xbox 360 para la programación de gráficos 3D.

El objetivo de esta API es facilitar el manejo y trazado de entidades gráficas elementales, como líneas, polígonos y texturas, en cualquier aplicación que despliegue gráficos en 3D, así como efectuar de forma transparente transformaciones geométricas sobre dichas entidades. Direct3D provee también una interfaz transparente con el hardware de aceleración gráfica.

Se usa principalmente en aplicaciones donde el rendimiento es fundamental, como los videojuegos, aprovechando el hardware de aceleración gráfica disponible en la tarjeta gráfica.

9.7.2.1 Historia de Direct3D En 1992, Servan Keondjian fundó RenderMorphics, una compañía que desarrollaba una API de gráficos 3D llamada Reality Lab. Esta API se usaba en programas de CAD y representación de imágenes médicas. En febrero de 1995, Microsoft compró RenderMorphics, incorporando a Keondjian a la compañía para implementar un motor gráfico para Windows 95. El resultado fue la primera versión de Direct3D, incluída en DirectX 2.0 y DirectX 3.0.

Inicialmente, Direct3D se implementó sobre dos APIs: la API retained mode y la API inmediate mode. El modo retenido era una API de escenarios gráficos basada en el COM (Computer Object Model) de Microsoft, que tuvo escasa acogida. Los desarrolladores de juegos solicitaron un control más directo sobre las actividades del hardware del permitido en el Retained Mode. Solamente el juego Lego Island se basó en dicha API, por lo que Microsoft abandonó la evolución de dicho modo después de DirectX 3.0, quedando intacto desde entonces.

Page 28: lectura proyectos 3D

La primera versión del modo inmediato de Direct3D consistía en un modelo de programación basado en un buffer de ejecución. Microsoft confiaba en que dicho buffer fuera soportado directamente por los vendedores de hardware pretendiendo que se almacenaran en memoria y fueran parseados por hardware, con el objetivo de realizar renderización 3D. Dichos buffers resultaron ser muy difíciles de programar, frenando la adopción de la nueva API y generando una corriente de opinión que solicitaba la adopción de OpenGL como la oficial para renderización 3D en Microsoft. Microsoft decidió seguir mejorando Direct3D, no solo para ser competitivos con OpenGL, sino también para competir de forma más efectiva contra otras APIs propietarias como Glide de 3dfx. Se encargó a un equipo de Redmond hacerse cargo del desarrollo del modo inmediato de Direct3D, mientras el equipo de RenderMorphics continuaba el trabajo sobre el modo retenido, abandonado no mucho después como ya se ha dicho.

A continuación se muestra una relación de las diferentes versiones de Direct3D con las mejoras más importantes que aportaron:

• Direct3D 5.0 introdujo el conjunto de primitivas DrawPrimitive que eliminaba la necesidad de construir buffers de ejecución por parte de las aplicaciones.

• Direct3D 6.0 introdujo numerosas características para la abstracción del hardware (como multitexturas y buffers de patrones), optimizó el uso de las pipelines de geometría para x87, SSE y 3DNow!, y la gestión opcional de texturas para simplificar la programación.

• Direct3D 7.0 introdujo el formato de texturas .dds y soporte para la aceleración hardware de transformaciones y luces. También añadió la posibilidad de almacenar buffers de vértices en memoria hardware. Los buffers hardware de vértices supusieron la primera mejora sustancial con respecto a OpenGL en la historia de DirectX. También se aumentó el soporte para multitexturas. Aunque Direct3D 7.0 era muy potente, era tan complicado de programar que necesitaba un nuevo modelo de programación para mostrar las capacidades de shading que proporcionaba el hardware.

• Direct3D 8.0 introdujo programabilidad en forma de vertex y pixel shaders, permitiendo a los desarrolladores escribir código sin preocuparse del hardware. Programar shaders sencillos equivalían a tareas sencillas, y shaders más complejos se usaban para tareas más complejas. El driver de pantalla compilaba estos shaders en instrucciones comprensibles por el hardware. Direct3D 8.0 también eliminó la API DirectDraw, absorbiéndola. Se resolvieron muchos problemas de usabilidad. Además, se incluyeron características muy potentes como niebla (fog), bump mapping y texture mapping.

• Direct3D 9.0 añadió una nueva versión del High Level Shader Language (HLSL, lenguaje de programación de shaders), soporte para HDR, renderización de múltiples objetos e indexación del buffer de vértices.

Page 29: lectura proyectos 3D

• Direct3D 10 consigue un aumento considerable en el rendimiento eliminando el llamado object overhead, que consiste en realizar llamadas entre la API y el driver usando la CPU. Dichas llamadas producían un cuello de botella, limitando, a unos 500, la cantidad de objetos que se podían representar en una escena. Direct3D 10 incorpora además, los shaders de geometría (geometry shaders) junto con la nueva función Stream Out; esta nueva función permite guardar en un buffer información de los shaders permitiendo operaciones de varias pasadas en el shader de geometría. Otra novedad de Direct3D 10 es la unificación de los pixel y vertex shaders, que a partir de ahora pasarán a funcionar como pixel, vertex o geometry shaders, dependiendo de la situación. Con Direct3D 10 se conseguirá un mayor nivel de detalle en las texturas, permitiendo un mayor realismo sin incrementar la complejidad; además, la generación de sombras dejará de ser tarea del procesador central para ser la GPU la que las genere y posteriormente renderice. También se ha mejorado la generación dinámica de geometría, que anteriormente se realizaba en el procesador y ahora también calcula la GPU, y otros efectos como el motion blur que resulta más realista. El principal problema de DirectX 10 es que sólo funciona con el sistema operativo Windows Vista, mientras que DirectX 9.0 trabaja con toda la familia de Windows a partir de Windows 98. El SDK de DirectX 10 está disponible desde Febrero de 2007.

9.8 Software de gráficos 3D A pesar de haber muchos paquetes de modelado y animación 3D, los cuatro que se han ganado la mayor popularidad son:

• Maya (Alias Wavefront). Es el software de modelado más popular en la industria. Tras la adquisición de la empresa fabricante, ALIAS, por parte de AUTODESK, la versión octava de Maya fue publicada. Es utilizado por multitud de importantes estudios de efectos visuales en combinación con RenderMan, el motor de rénder fotorrealista de Pixar. Última versión a octubre de 2006: Maya 8.

• 3D Studio Max (Discreet). Fue originalmente escrito por Kinetix (una división de Autodesk) como el sucesor de 3D Studio para DOS. Más tarde Kinetix se fusionaría con la última adquisición de Autodesk, Discreet Logic. La versión más reciente en Octubre de 2006 era la 9.0. Es el líder en el desarrollo 3D de la industria del videojuego y es muy utilizado a nivel amateur.

• Lightwave 3D (Newtek). Fue originalmente desarrollado por Amiga Computers a principios de la década de los 90. Más tarde evolucionó en un avanzado paquete gráfico y animación 3D. Actualmente disponible para Windows, Mac OS y Mac OS X. La versión a principios del 2006 era la 8.5. El programa consiste en dos componentes: el modelador y el editor de escena. Es utilizado en multitud de productoras de efectos visuales como Digital Domain.

Page 30: lectura proyectos 3D

• Softimage XSI (Avid). El contrincante más grande de Maya. En 1987, Softimage Inc, una compañía situada en Montreal, escribió Softimage|3D, que se convirtió rápidamente en el programa de 3D más popular de ese período. En 1994, Microsoft compró Softimage Inc. y comenzaron a reescribir SoftImage|3D para Windows NT. El resultado se llamó Softimage|XSI. En 1998 Microsoft vendió Softimage a Avid. La versión a mediados del 2003 era la 3.5.

Junto a estos paquetes mayores, hay otros que no se han ganado tal aceptación general, pero que no son simples juguetes. Algunos son:

• Caligari trueSpace - una aplicación 3D integrada, con una interfase muy intuitiva. Una característica distintiva de esta aplicación es que todas las fases de creación de gráficos 3D son realizadas dentro de un único programa. No es tan avanzado como los paquetes líderes, pero provee características como simulación de fenómenos físicos (viento, gravedad, colisiones entre cuerpos).

• Cinema4d - Motor de rénder rápido, cálculo de radiosidad.

• formZ - Ofrece manipulación topológica de las geometrías.

• Rhinoceros 3D - Un potente modelador bajo NURBS.

• POV-Ray - Un avanzado software gratuito de Raytracing. Usa su propio lenguaje de descripción de escena, con características como macros, bucles y declaraciones condicionales. Es completamente gratuito aunque no fue lanzado bajo GPL. No incluye modelador.

• Moray - Modelador para POV-Ray.

• Blender (NaN) - Programa de modelado y animación libre, con características como soporte para programación bajo Python con un amplia gamma de script en constante desarrollo, posee un engine robusto para la programación de juegos, un Motor de render propio y una comunidad de usuarios totalmente abierta y dispuesta a colaborar.

• RealSoft3D - Modelador 3D para Linux y Windows. Incluye rénder.

• Universe por Electric Image - Paquete de modelado y animación con uno de los motores de rénder más rápidos que existen.

Page 31: lectura proyectos 3D

9.9 Referencias http://lsi.ugr.es/~mode3d/

http://www.cristalab.com/tutoriales/148/fundamentos-basicos-de-modelado-3d

http://www3.uji.es/~ribelles/Investigacion/3GT/index.html

http://es.wikipedia.org/wiki/Gr%C3%A1ficos_3D_por_computadora

http://www.casa3d.com/