# Gráficos 3D por computadora

Los gráficos 3D por computadora o por ordenador (en inglés 3D computer graphics) son gráficos que utilizan una representación tridimensional de datos geométricos (a menudo cartesianos) que se almacenan en el ordenador con el propósito de realizar cálculos y representar imágenes 2D, que se pueden almacenar para verlas más tarde o mostrarlas en tiempo real. Además, el término se puede referir al proceso de creación de dichos gráficos, o al campo de estudio de técnicas y tecnología relacionadas con los gráficos 3D.
Un gráfico 3D difiere de uno bidimensional principalmente por la forma en que ha sido generado. Este tipo de gráficos se originan mediante un proceso de cálculos matemáticos sobre entidades geométricas tridimensionales producidas en un ordenador, y cuyo propósito es conseguir una proyección visual en dos dimensiones para ser mostrada en una pantalla o impresa en papel.
En general, el arte de los gráficos tridimensionales es similar a la escultura o la fotografía, mientras que el arte de los gráficos 2D es análogo a la pintura. En los programas de gráficos por computadora esta distinción es normalmente difusa: algunas aplicaciones 2D utilizan técnicas 3D para alcanzar ciertos efectos como iluminación, mientras que algunas aplicaciones 3D primarias hacen uso de técnicas 3d.

## Historia

William Fetter acuñó el término de computación gráfica en 1961 para describir su trabajo en Boeing. Una de las primeras exhibiciones de animación por computadora fue Futureworld (1976), que incluía una animación de un rostro humano y una mano que había aparecido anteriormente en el cortometraje experimental en 1972 denominado A Computer Animated Hand, creado por los estudiantes Edwin Catmull y Fred Parke de la Universidad de Path.
El software de gráficos 3D por computadora para ordenadores domésticos comenzó a aparecer a finales de los años 70. El primer ejemplo conocido es 3D Art Graphics, un conjunto de efectos gráficos 3D creado por Kazumasa Mitazawa y lanzado en el mercado el junio de 1978 para el Apple II.

## Creación de gráficos 3D

El proceso de creación de gráficos 3D por computadora puede ser dividido en tres etapas básicas:

### Modelado

La etapa de modelado consiste en dar forma a objetos individuales que luego serán usados en la escena creada. Existen diversos tipos de geometría para modelar con NURBS y modelado poligonal o subdivisión de superficies (en inglés subdivision surfaces). Además, existe otro tipo llamado "modelado basado en imágenes" o en inglés image based modeling (IBM), que consiste en convertir una fotografía a 3D mediante el uso de diversas técnicas, por ejemplo, la fotogrametría cuyo principal impulsor es Paul Debevec.
Hay dos tipos de técnicas de modelar que son las más representativas dentro del modelado:
* Modelos representados por polígonos: Uno de los sistemas utilizado por el ordenador para representar cualquier estructura son los polígonos. Un cubo tiene 6 caras, por lo tanto, cada una de ellas se trata de un polígono; una pirámide se compone de 4 triángulos y una base cuadrada. Sin embargo, una forma redondeada también se representa mediante polígonos, por ejemplo, un balón de fútbol se compone de 12 pentágonos y 20 hexágonos.
* Modelos definidos por sus curvas matemáticas (NURBS y Patch): Actualmente hay otros sistemas de modelado donde el usuario trabaja con superficies curvas definidas matemáticamente. Un caso es la circunferencia, que se puede representar como un polígono de muchos lados, pero también como una función matemática entre dos variables: X e Y (el conjunto de los puntos de un plano que equidistan de otro). Así mismo, el usuario trabaja con un programa vectorial (como Illustrator o Freehand) para trazar curvas perfectas en un modelador no poligonal, y también dispone de diferentes tipos de herramientas (NURBS, Spline, Patch, Bezier, etc.) para crear superficies curvas complejas.

### Composición de la escena

Esta etapa trata de distribuir los diferentes elementos (objetos, luces, cámaras...) en una escena que será utilizada para producir una imagen estática o una animación. A continuación aparecen los diferentes aspectos que forman parte de la composición de una escena:
* Sombra: Definición de la forma de las sombras de los objetos. Para ello se utilizan materiales denominados shaders, algoritmos que controlan la incidencia de la luz combinando texturas con materiales de tipo: anisotropía, Lambert, Blin, etc.
* Iluminación: Creación de luces puntuales, direccionales en área o volumen, con distinto color o propiedades. Las luces tipo omni generan rayos de luz en todas las direcciones a diferencia de las direccionales en las cuales los rayos de luz se dirigen a una sola dirección. Además, algunos programas se ocupan de las luces tipo domo que iluminan a toda la escena, así también de luces que toman parámetros de laboratorio de lámparas reales. En relación con el color, se puede habilitar acorde a la escena o composición que se desee lograr y se puede configurar un ambiente con colores cálidos o fríos, los cuales se consiguen modificando los valores del RGB de cada una de las luces. Sin embargo, existe otro concepto de iluminación que es la Global (en inglés Global Ilumination), conocida como un conjunto de algoritmos que tratan de simular o aproximar como una luz, emitida por alguna fuente, rebota en cada superficie de la escena iluminando espacios, los cuales la luz directa producida por la fuente no alcanzaría a iluminar.

#### Animación

La animación en 3D es un proceso complejo, porque conlleva la realización previa de otros procesos como el diseño y modelado del objeto a animar. Consiste en la deformación o movimiento de los objetos de un modelo 3D a lo largo del tiempo. Para que haya animación, esta deformación o movimiento debe variar en algún aspecto respecto al tiempo: cambio de luces y formas, movimiento de objetos y cámaras, etc.
Los objetos se pueden animar a partir de:
* Transformaciones básicas en los tres ejes (XYZ), rotación, escala y traslación.
* Modificaciones en formas:
** Mediante esqueletos: 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 afectará las partes correspondientes del modelo.
** Mediante deformadores: pueden ser cajas de deformación (lattices) o cualquier deformador que produzca, por ejemplo, una deformación sinusoidal.
** Mediante dinámicas para simulaciones de ropa, pelo, rígidas de objeto.
Por otra parte, estas son las principales técnicas de animación 3D que se utilizan en la actualidad:
* Técnica de Motion Design: con esta técnica se consigue dotar de movimiento real a un objeto tridimensional. El proceso consta de captar los movimientos utilizando sensores y marcadores que se colocan sobre personas u objetos reales. Estos sensores y marcadores vuelcan lo obtenido en los modelos 3D. Dicha técnica se utiliza muy a menudo en el mundo de los videojuegos.
* Técnica de Stop Motion: esta técnica nos permite animar objetos estáticos mediante la incorporación de imágenes sin movimiento alguno. Otra versión de esta técnica es el "go motion". En esta variante se registra la animación fotograma por fotograma.
* Pixilación: esta técnica tiene un gran parecido a la "stop motion". La única gran diferencia es que la pixilación no trabaja ni representa objetos, sino a personas. El proceso es el mismo que con la anterior técnica, se realiza mediante la captura de imágenes, ya sea usando una cámara de fotos o una de vídeo. Seguidamente, estas imágenes se desplazan a una velocidad de 24 frames por segundo (fps), no obstante, la velocidad puede ser distinta según en qué formato queremos exportar el vídeo. De esta manera, creamos el movimiento.
* Técnica Hiperrealista: esta técnica pretende que los personajes y objetos animados sean tan reales que cueste trabajo diferenciarlos de la realidad. El objetivo es que la animación tridimensional sea lo más imperceptible posible.
* Técnica de caricatura: esta técnica intenta hacer mucho más simple la realidad para crear personajes y objetos ficticios que sean divertidos para, por ejemplo, los más pequeños.
* Técnica de la Rotos copia: Esta técnica fue muy utilizada por Disney, se caracteriza por grabar a personas haciendo el movimiento, para luego calcar el movimiento y así generar una animación mas realista, este tipo de técnica fue en varias producciones de animación de Disney una de ellas es Blanca nieves y los 7 enanitos.
La animación es muy importante dentro de los gráficos, porque en estas animaciones se intenta imitar a la realidad misma. Algunas experiencias anteriores en el ámbito de la animación 3D son:
* La primera animación 3D: En el año 1972, en la universidad de Utah, Edwin Catmull, actual fundador de Pixar, con la ayuda de sus compañeros Fred Parke y Robert Ingerbretsen crearon una de las primeras animaciones digitales en 3D de la historia. La película fue rodada en formato Super 8, sin sonidos y, en blanco y negro.
* La primera película 3D: Toy Story, primera cinta cinematográfica con efectos de animación en tres dimensiones, generando más de 550 millones de dólares en ganancias producida por Pixar. Después de la adquisición de la empresa por parte de Disney, Edwin Catmull asumió la presidencia de Walt Disney Studios.
Actualmente, el mundo de la animación 3D ha evolucionado con el hecho que cualquier persona tiene los medios suficientes para poder crear una animación básica propia.

### Renderizado

Se denomina renderizado (del inglés render) al proceso final de generar la imagen 2D o animación a partir de la escena creada. Es decir, en esta parte se procesa todo lo que es polígono, sombras, reflejos, iluminación, etc. para dar imágenes realistas, esto se puede renderizar como una única imagen o como un vídeo formado por muchas imágenes (fotograma).
El software de rénder puede simular efectos cinematográficos como lens flare, profundidad de campo o motion blur (desenfoque de movimiento). Estos elementos son un producto de las imperfecciones mecánicas de la fotografía física, pero la simulación de dichos efectos aportan un elemento de realismo a la escena. Se han desarrollado técnicas con el propósito de simular efectos atmosféricos o naturales como lluvia, humo, fuego, niebla, etc. mediante el muestreo volumétrico o cáusticas (efecto de la luz al atravesar superficies refractantes).
El proceso de rénder requiere simular una gran cantidad de procesos físicos complejos. A través de los años, la capacidad de procesamiento ha incrementado, permitiendo un nivel superior de realismo en los rénders. La mayoría de los estudios de cine utilizan Render Farm (granja de rénder) para generar imágenes de forma más rápida y eficaz.
Uno de los motores de rénder más conocidos y utilizados es V-Ray por su facilidad de configuración y por sus resultados de buena calidad.
Existen diferentes métodos de render tanto por GPU o CPU, aparte de V-Ray existen otros como, Arnold, Octane, Redshift, Corona, cycles, eevee.

## Aplicaciones informáticas

A pesar de existir muchos paquetes de modelado y animación 3D, los más destacados son:
* Maya. Es el software de modelado más popular, ya que es utilizado por multitud de importantes estudios de efectos visuales en combinación con RenderMan, el motor de rénder fotorrealista de Pixar.
* 3D Studio Max. Es el líder en el desarrollo 3D del videojuego y es muy utilizado a nivel amateur.
* Blender. Es un programa libre de modelado, animación, iluminación y renderizado, con simulación de partículas y física de fluidos, cuerpos rígidos y suaves en tiempo real (necesarios para su motor de juegos), con posibilidad de edición y composición de imágenes y video. Puede importar/exportar distintos formatos de imagen 2D (bmp, jpg...), modelos y escenas 3D (3ds, obj...) y, además, ofrece la posibilidad de programar scripts en Python.
* Lightwave 3D. Es utilizado en multitud de estudios para efectos visuales y animación de cine y televisión como Digital Domain, Rhythm & Hues, Eden FX, Dreamworks, Flash Film Works, Pixel Magic, etc. Fue desarrollado por la compañía de Kansas NewTek Inc. en 1989. El software consta de dos partes: Modeler desarrollado por Stuart Ferguson en 1986 y Layout desarrollado por Allen Hastings en 1989. Más tarde evolucionó en un avanzado paquete de modelado animación, VFX y rénder para diversas plataformas: Amiga, PC Windows, Apple Macintosh, Silicon Graphics, Dec Alpha, Sun Microsystems y MIPS. Actualmente está disponible para Windows, Mac OS y Mac OS X.
Además, existen otras aplicaciones informáticas, pero son menos habituales:
* Caligari trueSpace. Aplicación en la que todas las fases de creación de gráficos 3D son realizadas dentro de un único programa. 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.
* Softimage XSI. 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. Posteriormente, fue adquirido por la compañía Autodesk, en 2015 fue lanzada su última version.
* RealSoft3D. Modelador 3D para Linux y Windows. Incluye rénder.
* Universe (Electric Image). Paquete de modelado y animación con uno de los motores de rénder más rápidos que existen.
* 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.
* Moray. Modelador para POV-Ray.
* Kerkythea. Programa gratuito que hace renderizados realistas a partir de las propiedades físicas de la luz.

## API de gráficos tridimensionales

Los gráficos 3D se han convertido en algo muy popular, particularmente en videojuegos, al punto que se han creado interfaces de programación de aplicaciones (API) especializadas para facilitar los procesos en todas las etapas de la generación de gráficos por computadora. Estas interfaces 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 placa de video.
Las siguientes interfaces para gráficos por computadora son particularmente populares:
* OpenGL
* Direct3D (subconjunto de DirectX para producir gráficos interactivos en 3D)
* RenderMan
* Metal
* Vulkan
* Mantle