Resumen PDF sobre Realidad Aumentada y Virtual - Estudio

Summary

El documento es un resumen sobre las tecnologías de realidad aumentada y virtual, abarcando conceptos clave, tipos de tecnologías y su evolución. Explora el desarrollo de sistemas de RV y la programación de entornos gráficos, incluyendo renderizado y herramientas de desarrollo. El contenido sirve de introducción al tema.

Full Transcript

Tema 1: Introducción a las Tecnologías de Realidad Aumentada y Realidad Virtual Índice 1. Tipo y evolución de las tecnologías 2. Uso en distintos ámbitos Realidad Virtual Conceptos clave: - ¿Tipos de experiencia virtual? ¿Qué es la percepción de la realidad? - Experiencia Virtual: control total, e...

Tema 1: Introducción a las Tecnologías de Realidad Aumentada y Realidad Virtual Índice 1. Tipo y evolución de las tecnologías 2. Uso en distintos ámbitos Realidad Virtual Conceptos clave: - ¿Tipos de experiencia virtual? ¿Qué es la percepción de la realidad? - Experiencia Virtual: control total, estimulación artificial, sensaciones como felicidad, emoción o dolor. - Impacto en el aprendizaje, alucinaciones, problemas de salud, entre otros. Tipos y Evolución de las Tecnologías La realidad se divide en diferentes categorías según su nivel de virtualidad: - Entorno Real - Realidad Aumentada - Virtualidad Aumentada - Realidad Virtual - Realidad Mezclada La Realidad Mezclada permite la fusión del mundo real y virtual, donde los objetos pueden coexistir e interactuar en tiempo real. Definiciones de Realidad Virtual Históricamente, la Realidad Virtual ha evolucionado con hitos importantes: - 1929: Simulador de vuelo de Edwin Link. - 1960-62: Morton Heilig patenta TV estereoscópica y Sensorama. - 1965-68: Ivan Sutherland desarrolla The Ultimate Display y HMD. - 1987: Jaron Lanier acuña el término Realidad Virtual. Definición formal: "La Realidad Virtual es una disciplina científica y técnica que utiliza ciencias de la computación e interfaces sensoriales para simular en un mundo virtual el comportamiento de entidades tridimensionales que interactúan en tiempo real." 1 Características de la Realidad Virtual - Se requiere inmersión y sensación de presencia. - El entorno es completamente virtual. - Implementación mediante tecnologías de interacción como CAVE y HMD. - Sensado de posición rápido y preciso. - Necesidad de pantallas 3D o estereoscópicas. Realidad Aumentada - Mezcla el mundo real con elementos virtuales. - Se utilizan tecnologías como gafas de Realidad Aumentada y dispositivos móviles. - Necesidad de tecnologías de sensado y captura para registrar el entorno. - Interacción bidireccional en tiempo real. Evaluación de Experiencias Virtuales - Sensación de presencia: sentir que se está en el entorno virtual. - Factores clave: estímulos sensoriales, coherencia entre acción y reacción, contenidos personalizados. - Medidas subjetivas y objetivas (comportamiento, psicofisiología, etc.). - Posibles efectos adversos: motion sickness. Desarrollo de un Sistema de Realidad Virtual - Caracterización del sentido de la visión: resolución, campo de visión, percepción de profundidad. - Caracterización del oído: frecuencias audibles, localización de sonidos. - Sentido háptico: tacto, propiocepción, sensado de fuerza y presión. - Uso del equilibrio y otros sentidos como el olfato y gusto. Además de vista y háptico. - El sentido del equilibrio: Sistema de control sensorimotor complejo que incluye información procedente de la visión, propiocepción y el sistema vestibular. El sistema vestibular asociado con el movimiento, equilibrio y orientación espacial está formado por partes del oído interno y el cerebro. 2 El sistema propioceptivo es el conjunto de sensores y mecanismos que permiten al cuerpo percibir su posición, orientación y movimiento en el espacio sin necesidad de la vista. Se basa en la información recogida por los mecanorreceptores, que están ubicados en músculos, tendones, articulaciones y ligamentos. En el contexto de la percepción de profundidad, el sistema propioceptivo contribuye a la percepción espacial a través de dos mecanismos clave: 1. Acomodación: Es el ajuste que realiza el cristalino del ojo para enfocar objetos a diferentes distancias. Este cambio en la forma del cristalino proporciona información sobre la profundidad de los objetos. 2. Convergencia: Se refiere al movimiento coordinado de los ojos hacia adentro cuando observamos objetos cercanos. Cuanto más se acercan los ojos entre sí, más cerca percibimos el objeto. Estos mecanismos ayudan al cerebro a interpretar la distancia y la profundidad en el entorno, complementando la información visual. Se combinan con otras señales, como los indicios estáticos (oclusiones, perspectiva, tamaño) y los indicios dinámicos (paralaje de movimiento), para generar una representación tridimensional del espacio. 3 Tecnologías de Interacción - Visual: HMD, CAVE, monitores 3D, proyectores. - Audio: auriculares, sonido envolvente, HRTF. - Háptico: sensores mecánicos, retroalimentación de fuerza. - Tracking: sensores de posición y orientación (IMUs, cámaras, GPS, infrarrojos). Renderizado - Proceso por el que se sintetiza en un ordenador la información que el usuario debe percibir en cada momento acerca del entorno virtual. - Los dispositivos que estimulan los sentidos usan la información que se extrae del renderizado. Tipos de renderizado: - Renderizado visual o gráfico: Motores gráficos. Librerías ligadas al hardware de las tarjetas gráficas. Implementan efectos: simulación de sombras, iluminación, niebla, etc. Uso de shaders-> programas que se ejecutan en la tarjeta gráfica. - Renderizado auditivo. Genera estímulos sonoros para simular la ubicación de fuentes virtuales. Se aplican modelos de propagación del sonido. - Renderizado háptico: Más complejo. Muy ligado al tipo de dispositivo. 4 Tema 2: Programación de entornos gráficos y herramientas Índice Este tema cubrirá los siguientes puntos fundamentales para la programación de entornos gráficos: 1. Conceptos básicos. Comprenderemos los principios del renderizado, las vistas, las texturas, los materiales y la iluminación en gráficos 3D. 2. Representación basada en jerarquías de nodos. Exploraremos cómo organizar y representar escenas 3D utilizando estructuras jerárquicas basadas en nodos. 3. Construcción de geometrías. Operaciones básicas. Aprenderemos a construir geometrías 3D y las operaciones fundamentales para manipularlas. 4. Propiedades básicas: Color, material, texturas e iluminación. Profundizaremos en las propiedades esenciales que definen la apariencia de los objetos en entornos gráficos. 5. Mecanismos de interacción. Desarrollo de una GUI con interacción básica (teclado, ratón). Detección de colisiones. Estudiaremos cómo implementar la interacción del usuario en entornos gráficos, incluyendo la creación de interfaces de usuario básicas y la detección de colisiones entre objetos virtuales. 6. Aspectos especiales. Importación de modelos 3D, animación, LOD (Level of Detail). Abordaremos temas avanzados como la importación de modelos 3D externos, la creación de animaciones y la optimización del nivel de detalle. 7. Virtualización y Realidad Aumentada. Incorporación de imágenes reales en un entorno virtual y de objetos virtuales en un entorno real. Exploraremos los conceptos de virtualización y realidad aumentada, y cómo integrar elementos reales y virtuales en un mismo entorno. 8. Herramientas de desarrollo. Revisaremos las diversas herramientas de desarrollo disponibles, desde OpenGL y GLUT hasta motores más avanzados como Unity y Ogre, pasando por Java 3D y ARToolkit. 5 2.1 Renderizado. (Continuación) Profundizando en el proceso de renderizado, es importante entender las primitivas geométricas y dónde se lleva a cabo este proceso. Primitivas geométricas comunes Las primitivas geométricas son los bloques de construcción básicos para crear objetos en gráficos 3D. Las más comunes requieren trabajar con: Vértices: Son puntos en el espacio 3D que definen la forma de los objetos. Además de su posición, cada vértice suele tener asociada una normal, que es un vector unitario perpendicular a la superficie en ese punto. Las normales son fundamentales para calcular la iluminación y la orientación de las superficies. Triángulos: Son la primitiva geométrica más utilizada en gráficos 3D. Un triángulo se define por un conjunto de tres vértices. Los modelos 3D complejos se construyen generalmente mediante la unión de millones o incluso billones de triángulos, especialmente en aplicaciones que requieren alta resolución y detalle. La elección de triángulos se debe a su simplicidad para los cálculos y a su capacidad para aproximar cualquier superficie. ¿Dónde se realiza el renderizado? El proceso de renderizado es computacionalmente intensivo y se lleva a cabo principalmente en la tarjeta gráfica (GPU - Graphics Processing Unit). La GPU está diseñada específicamente para realizar cálculos gráficos de manera eficiente y paralela. 2.1 Conceptos básicos. Arquitectura de un modelo simple de RV. Para entender mejor dónde se realiza el renderizado y cómo funciona un sistema de realidad virtual básico, podemos analizar la arquitectura de un modelo simple. Arquitectura de un modelo simple Imagina un sistema de realidad virtual rudimentario: 1. Seguimiento de la cabeza (Head Tracker): Un sensor, como un "Head Tracker", detecta la posición y orientación de la cabeza del usuario. Esta información es crucial para ajustar la perspectiva de la escena virtual según los movimientos del usuario. 2. Procesamiento en el PC (Proces. PC): Un ordenador personal (PC) actúa como el cerebro del sistema. Dentro del PC, encontramos: Modelo: Representa la escena virtual en 3D, incluyendo objetos, luces, etc. Motor de Renderizado: Es el software encargado de realizar el proceso de renderizado. Toma la descripción de la escena (modelo) y la información de la posición de la cabeza, y genera las imágenes 2D correspondientes. Frame Buffer: Es una memoria dentro de la tarjeta gráfica donde se almacenan las imágenes renderizadas antes de ser mostradas. 6 3. Driver de Pantalla (Driver Pantalla): El driver de la tarjeta gráfica gestiona la salida de video y envía las imágenes desde el Frame Buffer a la pantalla del dispositivo de visualización. 4. Pantalla (lentes): En este modelo simple, se representan unas "lentes" que simbolizan el dispositivo de visualización, como unas gafas de realidad virtual. Estas lentes muestran las imágenes renderizadas al usuario, creando la sensación de inmersión en el Entorno Virtual. 5. Red: La "Red" puede representar la conectividad del sistema con otros dispositivos o redes, aunque en este modelo simple no se detalla su función. En resumen, el sistema rastrea la cabeza del usuario, el PC procesa la escena y genera las imágenes, y la pantalla las muestra al usuario, creando una experiencia virtual básica. 2.1 Arquitectura de gráficos de RV. La arquitectura de gráficos de Realidad Virtual (RV) se puede dividir en capas, cada una con funciones específicas y distintos niveles de aceleración por hardware (CPU o GPU). Capas de la arquitectura de gráficos de RV 1. Capa de Aplicación (Aceleración de CPU): Esta es la capa de más alto nivel y se ejecuta principalmente en la CPU (Unidad Central de Procesamiento). Sus funciones principales son: Librerías de interfaces de usuario: Gestiona la interfaz con el usuario, permitiendo la interacción a través de menús, botones, etc. Código de simulación/comportamiento: Implementa la lógica de la aplicación, incluyendo la simulación del comportamiento de los objetos virtuales, la física del entorno y las reglas del juego o aplicación. Aquí se aplican conceptos de Algoritmia e Inteligencia Artificial para crear comportamientos complejos y realistas. Especificación de la interacción con el usuario: Define cómo el usuario interactúa con el entorno virtual, procesando las entradas del usuario (teclado, ratón, etc.) y traduciéndolas en acciones dentro de la escena virtual. 2. Capa de Gráficos o Geometría (Aceleración de la CPU y GPU): Esta capa se encarga de la gestión de la geometría de la escena y se beneficia de la aceleración tanto de la CPU como de la GPU. Sus funciones son: Especificación del grafo de escena: Define la estructura jerárquica de la escena, organizando los objetos y sus relaciones. Motor de física de los objetos: Implementa la Simulación física, calculando las interacciones físicas entre los objetos virtuales, como colisiones, gravedad, etc. Caracterización de los objetos gráficos en distintas coordenadas: Gestiona la transformación de las coordenadas de los objetos a través de diferentes espacios (modelo, mundo, vista, etc.), preparando la geometría para el renderizado. 3. Capa de Renderizado/Rasterización (Aceleración de la GPU): Esta capa es la encargada del proceso de renderizado propiamente dicho y se ejecuta principalmente en la GPU, aprovechando su capacidad de procesamiento paralelo. Sus funciones son: Código de gráficos de bajo nivel: Implementa las funciones de renderizado a nivel de hardware, utilizando bibliotecas gráficas como OpenGL o Direct3D. 7 Renderizado de polígonos/píxeles: Convierte las primitivas geométricas (polígonos) en píxeles en la pantalla, aplicando texturas, materiales e iluminación. Este proceso se conoce como Rasterización. Interfaz con la tarjeta gráfica y el buffer de trama (imágenes): Gestiona la comunicación con la tarjeta gráfica y el buffer de trama, que es la memoria donde se almacenan los píxeles que forman la imagen final antes de ser mostrada en la pantalla. 2.1 Conceptos básicos. ¿Dónde se realiza el renderizado? (Diagrama) Para visualizar mejor el flujo del proceso de renderizado y dónde se ubica la GPU, podemos observar un diagrama simplificado de la arquitectura. Diagrama del proceso de renderizado El diagrama muestra el flujo de información y el papel de la CPU y la GPU en el proceso de renderizado: 1. Inputs: Las entradas al sistema pueden ser diversas, como la información de seguimiento del usuario (posición de la cabeza, movimientos de las manos), datos de la aplicación o de la red. 2. CPU (Central Processing Unit): La CPU, o Unidad Central de Procesamiento, se encarga de la Aplicación, gestionando la lógica del programa, la simulación física y la interacción con el usuario. También prepara los datos de la escena para el renderizado. 3. Main Memory (RAM): La memoria RAM (Random Access Memory) almacena los datos que la CPU necesita para operar, incluyendo la escena virtual, los programas y los datos temporales. 4. Graphics Subsystem: El subsistema gráfico es donde se lleva a cabo el renderizado propiamente dicho y está compuesto por: GPU (Graphics Processing Unit): La GPU, o Unidad de Procesamiento Gráfico, es el corazón del renderizado. Recibe los datos de la escena desde la CPU y realiza los cálculos necesarios para generar la imagen final. Graphics Memory (VRAM): La memoria VRAM (Video RAM) es la memoria dedicada de la tarjeta gráfica. Almacena texturas, modelos 3D y otros datos gráficos que la GPU necesita para el renderizado. Frame Buffer: Dentro de la VRAM, el Frame Buffer es una región de memoria donde la GPU escribe los píxeles de la imagen renderizada antes de ser mostrada en la pantalla. 5. Display: La pantalla es el dispositivo de visualización donde se muestra la imagen renderizada, permitiendo al usuario ver el entorno virtual. 6. External Memory: La memoria externa, como un disco duro o SSD, almacena datos a largo plazo, como los modelos 3D, las texturas y el programa de la aplicación. En resumen, la CPU prepara la escena y la envía a la GPU, la GPU realiza el renderizado y almacena la imagen en el Frame Buffer, y finalmente, la imagen se muestra en la pantalla. 8 2.1 Conceptos básicos. Rasterización y píxeles. Profundicemos ahora en el concepto de rasterización y cómo se forman las imágenes digitales a partir de píxeles. Rasterización: de vectores a píxeles El proceso de rasterización es fundamental para convertir una imagen descrita en un formato vectorial (basado en líneas y formas geométricas) en un conjunto de píxeles. Los píxeles son los elementos básicos que componen una imagen digital en una pantalla. Píxeles: color y posición ¿Qué son los píxeles? Cada píxel es esencialmente un pequeño punto de color en la pantalla. Cada píxel tiene dos propiedades principales: Color: Define el color del píxel. El color se representa generalmente mediante componentes de color, como Rojo, Verde y Azul (RGB). Posición: Define la ubicación del píxel en la pantalla. La pantalla se puede entender como una cuadrícula bidimensional de píxeles, donde cada píxel tiene una coordenada (x, y). Frame Buffer y doble buffer El color de cada píxel se almacena en el Frame Buffer, que ya hemos mencionado como una memoria dentro de la tarjeta gráfica. Para evitar parpadeos y mostrar animaciones fluidas, se suele utilizar una técnica llamada doble buffer. Esto significa que se utilizan dos Frame Buffers: Front Buffer: Es el buffer que se está mostrando actualmente en la pantalla. Back Buffer: Es el buffer donde la GPU está dibujando la siguiente imagen. Una vez que la GPU ha terminado de dibujar la imagen en el Back Buffer, los dos buffers se intercambian (buffer swap). El Back Buffer se convierte en el Front Buffer y se muestra en la pantalla, mientras que el antiguo Front Buffer se convierte en el nuevo Back Buffer y está listo para recibir el dibujo de la siguiente imagen. Frecuencia de refresco (refresh rate) La frecuencia de refresco o refresh rate es la velocidad a la que la pantalla se actualiza con nuevas imágenes, medida en hercios (Hz). Por ejemplo, una frecuencia de refresco de 60 Hz significa que la pantalla se actualiza 60 veces por segundo. La frecuencia de refresco determina la suavidad de las animaciones y la percepción de movimiento en la pantalla. Es la frecuencia a la que se realiza el proceso de rasterizado y se actualiza el Frame Buffer para mostrar una nueva imagen. 9 Trama o frame Una imagen renderizada y almacenada en el Frame Buffer también se conoce como trama o frame. En una animación o video, se muestra una secuencia de frames a una determinada frecuencia (frame rate) para crear la ilusión de movimiento. Coordenadas 2D de la pantalla El sistema de coordenadas 2D de la pantalla generalmente tiene su origen (0, 0) en la esquina superior izquierda. La coordenada x se incrementa hacia la derecha (width) y la coordenada y se incrementa hacia abajo (height). Las coordenadas de los píxeles se suelen expresar como enteros, desde (0, 0) hasta (width - 1, height - 1). Escaneado de rasterización El proceso de escaneado de rasterización describe cómo la pantalla actualiza su contenido. La pantalla actualiza el contenido línea a línea, generalmente de arriba a abajo. Para cada línea, la pantalla lee los valores de color de cada píxel desde el Frame Buffer y los muestra en la pantalla. Este proceso se repite continuamente a la frecuencia de refresco para mantener la imagen actualizada. 2.1 Conceptos básicos. Rasterización y escaneado vs RayCasting. Existen diferentes enfoques para el renderizado 3D. Dos métodos principales son la rasterización y el ray casting (o mapeado inverso). Rasterización y escaneado (Rasterization and Scanline) La rasterización y escaneado, que ya hemos introducido, es el método más común y eficiente para el renderizado en tiempo real, utilizado en la mayoría de las tarjetas gráficas modernas. Sus características clave son: Uso de Z-buffer (Depth Buffer): Para resolver el problema de la visibilidad (qué objetos están delante de otros), se utiliza un Z-buffer o Depth Buffer. Este buffer almacena la coordenada Z (profundidad) de cada píxel. Cuando se dibuja un nuevo píxel, se compara su profundidad con la profundidad almacenada en el Z-buffer para esa posición. Si el nuevo píxel está más cerca de la cámara (menor distancia Z), se dibuja y se actualiza el Z-buffer; de lo contrario, se descarta, ya que está oculto detrás de otro objeto. De esta forma, el Z-buffer asegura que solo se dibujen los fragmentos de la escena que son visibles. Eficiencia para aplicaciones interactivas: La rasterización es muy eficiente y permite generar imágenes rápidamente, lo que la hace ideal para aplicaciones interactivas en tiempo real, como videojuegos y realidad virtual. Es el método utilizado por los "motores de visualización de aplicaciones interactivas". 10 RayCasting o Mapeado Inverso (Ray Casting or Inverse Mapping) El RayCasting o Mapeado Inverso es un enfoque alternativo al renderizado. Su idea principal es simular el camino de la luz desde el ojo del observador hacia la escena virtual. Primera propuesta: El RayCasting fue una de las primeras técnicas de renderizado 3D. En su forma más básica, para cada píxel de la imagen final, se lanza un rayo desde la cámara a través de ese píxel hacia la escena virtual. Se determina qué objeto intersecta este rayo y se calcula el color del píxel en función de las propiedades del objeto y la iluminación. Evolución a RayTracing (Síntesis de imagen hiperrealista): El RayCasting evolucionó hacia técnicas más sofisticadas como el RayTracing (Trazado de Rayos). El RayTracing mejora el realismo al simular no solo la luz directa, sino también las reflexiones, refracciones y sombras generadas por la interacción de la luz con los objetos. El RayTracing busca lograr una "síntesis de imagen hiperrealista". Puntos de intersección y evaluación-modelo de iluminación: En RayCasting y RayTracing, la clave está en calcular los puntos de intersección de los rayos con los objetos de la escena y luego aplicar un modelo de iluminación para determinar el color en esos puntos. Este modelo de iluminación considera las fuentes de luz, las propiedades de los materiales y las interacciones de la luz. Elevado coste computacional (horas -fotograma): El RayTracing es computacionalmente muy costoso, especialmente para escenas complejas y con muchas reflexiones. Renderizar una sola imagen (fotograma) con RayTracing puede llevar horas, incluso en ordenadores potentes. Por esta razón, el RayTracing tradicionalmente se ha utilizado principalmente para renderizado offline, como en la creación de películas y efectos visuales, donde la calidad de imagen es prioritaria sobre el tiempo de renderizado. En resumen, la rasterización es eficiente para el tiempo real, mientras que el RayTracing ofrece mayor realismo pero a un coste computacional mucho mayor. 11 2.1 Pipeline gráfico. El Pipeline Gráfico describe las etapas funcionales que se llevan a cabo para renderizar una escena 3D, desde la descripción de la escena hasta la imagen final en la pantalla. Este proceso se puede dividir en varias etapas, que se ejecutan secuencialmente. Etapas del Pipeline Gráfico El pipeline gráfico se puede dividir en las siguientes etapas principales: 1. Aplicación (App): Esta es la etapa inicial, que se ejecuta en la CPU y gestiona la lógica de la aplicación, la simulación, la interacción con el usuario y la preparación de los datos de la escena. 2. Etapa de Geometría: Esta etapa se encarga de procesar la geometría de la escena, transformar las coordenadas de los objetos y realizar el sombreado de vértices. Se puede subdividir en las siguientes transformaciones: Transformación de Modelado (Transf Modelado): Transforma los objetos desde sus coordenadas locales (Coord. Modelo (Locales)) a coordenadas universales o del mundo (Coord. Universales). Transformación de Visualización (Transf Visualización): Transforma la escena desde coordenadas universales a coordenadas de vista o cámara (Coord. Visualización), colocando la cámara en el origen y orientándola. Vertex Shader: Es una etapa programable donde se pueden realizar operaciones adicionales sobre los vértices, como el sombreado (cálculo de color e iluminación en los vértices). Transformación de Proyección (Transf Proyección): Proyecta la escena 3D en un espacio 2D, utilizando una proyección perspectiva o ortográfica. Las coordenadas se normalizan (Coord. Normalizadas) para el siguiente paso. Transformación de Recorte (Transf Recorte): Elimina las partes de los objetos que quedan fuera del volumen de visualización definido por la cámara. Se realiza el recorte de las primitivas geométricas (Coord. Recortadas). Transformación de Pantalla (Transf Pantalla): Transforma las coordenadas normalizadas a coordenadas de pantalla (Coord. Pantalla), adaptándolas a las dimensiones de la ventana de visualización. 3. Rasterización: Esta etapa convierte las primitivas geométricas (triángulos) en fragmentos (píxeles potenciales) y calcula el color de cada fragmento. Incluye: Configuración de Triángulos (Config. Triángulo): Prepara los triángulos para la rasterización. Recorrido de Triángulos (Recorrido Triáng.): Determina qué píxeles están dentro de cada triángulo. Pixel Shader: Es una etapa programable donde se puede realizar el sombreado de píxeles, calculando el color final de cada píxel, aplicando texturas y otros efectos. Fusión (Merging): Combina los fragmentos renderizados, utilizando el Z-buffer para resolver la visibilidad y generar la imagen final en el Frame Buffer. 12 Sistemas de Referencia El pipeline gráfico utiliza diferentes sistemas de referencia o sistemas de coordenadas para representar la posición y orientación de los objetos en cada etapa: Sistema Universal o Global (SRU): También llamado sistema de coordenadas del mundo. Es el sistema de referencia principal donde se definen las posiciones y orientaciones de todos los objetos en la escena virtual. Sistema Local (Objeto): Cada objeto tiene su propio sistema de coordenadas local, relativo a su centro o punto de origen. Esto facilita la definición y manipulación de los objetos individualmente. Sistema de Visualización: También llamado sistema de coordenadas de la cámara o de la vista. Es el sistema de referencia donde la cámara se encuentra en el origen y mira en dirección negativa del eje Z. La escena se transforma a este sistema para facilitar la proyección y el recorte. Sistema del dispositivo, recorte o ventana: Es el sistema de coordenadas de la pantalla, donde las coordenadas se expresan en píxeles. También puede referirse al espacio de recorte, que define el volumen visible de la escena. El Plano de proyección es el plano donde se proyecta la escena 3D para generar la imagen 2D. En la proyección perspectiva, el plano de proyección es perpendicular a la dirección de la vista y se encuentra a una cierta distancia de la cámara. 2.1 Pipeline gráfico. Etapa de Aplicación. Profundicemos en la primera etapa del pipeline gráfico: la Aplicación. Como ya se mencionó, la etapa de Aplicación se ejecuta en la CPU, que puede ser un procesador multinúcleo para mejorar el rendimiento. Esta etapa puede utilizar diferentes hilos de ejecución para realizar tareas en paralelo. Tareas de la etapa de Aplicación Las principales tareas que se realizan en la etapa de Aplicación son: Cálculo de posición. Simulaciones físicas: Se calculan las posiciones y movimientos de los objetos virtuales a lo largo del tiempo. Esto puede incluir la simulación de la física de los objetos, como la gravedad, las colisiones y las interacciones entre ellos. Aquí se implementan las simulaciones físicas que definen el comportamiento del entorno virtual. Detección de colisiones: Se detectan las colisiones entre los objetos virtuales. Esta información se utiliza para simular las interacciones físicas y para la lógica de la aplicación (por ejemplo, en un videojuego, para detectar si un personaje ha chocado con un obstáculo). Gestión de entrada del usuario (teclado, ratón, joystick, etc.): Se procesan las entradas del usuario desde dispositivos como el teclado, el ratón, el joystick u otros dispositivos de interacción. Estas entradas se traducen en acciones dentro del entorno virtual, como el movimiento del personaje, la selección de objetos o la activación de funciones. 13 Uso de estructuras de datos para aceleración-reducción del número de polígonos (texturas, sprites asociados a interfaz o avatares): Para mejorar el rendimiento del renderizado, se utilizan estructuras de datos que permiten acelerar los cálculos y reducir el número de polígonos que deben ser renderizados. Esto puede incluir el uso de texturas para añadir detalle visual sin aumentar la complejidad geométrica, sprites (imágenes 2D) para representar objetos simples, y técnicas de nivel de detalle (LOD) para simplificar los modelos de objetos lejanos. También se gestionan los elementos de la interfaz de usuario (interfaz) y los avatares de los usuarios dentro del entorno virtual. El ejemplo de imagen que se muestra en esta diapositiva parece ser una captura de pantalla de una aplicación de realidad virtual, mostrando una escena interior con elementos interactivos. 2.1 Pipeline gráfico. Etapa de Geometría. Continuamos con la segunda etapa principal del pipeline gráfico: la Etapa de Geometría. La Etapa de Geometría se encarga de procesar la geometría de la escena, preparando los datos para la rasterización. Procesado de vértices En esta etapa, se realiza el procesado de vértices. Esto implica: Transformación de vértices: Se transforman las coordenadas de los vértices de los objetos a través de las diferentes transformaciones del pipeline (modelado, visualización, proyección, etc.). Procesamiento de vértices individuales y normales: Se procesan los vértices de forma individual, calculando sus nuevas posiciones y transformando también sus normales. Las normales son vectores perpendiculares a la superficie en cada vértice y son esenciales para el cálculo de la iluminación. Programabilidad y ejecución en la tarjeta gráfica La Etapa de Geometría es programable, lo que significa que se pueden personalizar las operaciones que se realizan sobre los vértices mediante programas llamados shaders. El Vertex Shader es un ejemplo de shader que se ejecuta en esta etapa. Gran parte de la Etapa de Geometría, incluyendo el Vertex Shader, se suele realizar en la tarjeta gráfica (GPU), aprovechando su capacidad de procesamiento paralelo para acelerar los cálculos geométricos. Partir de vértices y primitivas La Etapa de Geometría recibe como entrada vértices y primitivas geométricas (como triángulos, líneas o puntos) que definen la escena 3D. A partir de estos elementos básicos, se realizan las transformaciones y el procesamiento necesarios para preparar la escena para la rasterización. 14 Transformaciones de los sistemas de coordenadas Una parte fundamental de la Etapa de Geometría son las transformaciones de los sistemas de coordenadas. Como ya vimos, la escena se representa en diferentes sistemas de coordenadas a lo largo del pipeline. Las transformaciones se encargan de convertir las coordenadas de los objetos de un sistema a otro. Un ejemplo importante es la Transformación de Modelado. Esta transformación se utiliza para: Reposicionar instancias del mismo objeto: Si tenemos múltiples copias (instancias) del mismo objeto (por ejemplo, varios árboles en un bosque), la Transformación de Modelado permite colocarlas en diferentes posiciones, orientaciones y escalas dentro de la escena universal, sin necesidad de duplicar la geometría del objeto para cada instancia. Simplemente se aplica una transformación diferente a cada instancia. El diagrama en la diapositiva muestra un triángulo definido por tres vértices (V1, V2, V3) y sus normales asociadas (n1, n2, n3), representando una primitiva geométrica básica procesada en la Etapa de Geometría. 2.1 Pipeline gráfico. Etapa de geometría: Transformación de modelado. Dentro de la Etapa de Geometría, la Transformación de Modelado es un paso crucial. La Transformación de Modelado se encarga de llevar los objetos desde sus espacios locales (Model Spaces) a un espacio universal o del mundo (World Space). Espacios locales y espacio universal Espacios locales (Model Spaces): Cuando se crea un modelo 3D, generalmente se define en su propio sistema de coordenadas local, centrado en su origen y con una escala y orientación convenientes para su modelado. Por ejemplo, un modelo de una tetera se puede modelar con su base en el origen y orientada de forma estándar. Cada objeto tiene su propio espacio local. En el diagrama, "Model Spaces (Xi, yi, zi)" representa los espacios locales de múltiples objetos. Espacio universal o del mundo (World Space): El espacio universal o del mundo es un sistema de coordenadas común para toda la escena virtual. Es donde se colocan y organizan todos los objetos en relación entre sí. "World Space (x, y, z)" en el diagrama representa este espacio universal. Transformaciones afines Los objetos se crean en sus espacios locales para facilitar su modelado individual. Luego, es necesario "llevárselos" al espacio de coordenadas universales para construir la escena completa. Esto se hace mediante transformaciones afines. Las transformaciones afines son transformaciones geométricas que preservan las líneas rectas y el paralelismo, e incluyen: 15 Traslación: Desplazar el objeto en el espacio. Rotación: Girar el objeto alrededor de un eje. Escalado: Aumentar o disminuir el tamaño del objeto. La Transformación de Modelado se compone de una secuencia de estas transformaciones afines que se aplican a cada objeto para posicionarlo, orientarlo y escalarlo correctamente dentro de la escena universal. 2.1 Pipeline gráfico. Etapa de geometría: Transformación de visualización. La siguiente transformación importante es la Transformación de Visualización. La Transformación de Visualización se encarga de posicionar y orientar la cámara en la escena, y de transformar la escena desde el espacio universal (World Space) al espacio de vista o cámara (View Space). Posición y orientación de la cámara La posición y orientación de la cámara determinan qué parte de la escena será visible para el observador. La cámara define el punto de vista desde el que se renderiza la escena. Objetivo de la transformación de visualización El objetivo principal de la Transformación de Visualización es: Posicionar la cámara en el origen del SRU (Sistema de Referencia Universal): Se traslada y rota la escena de tal manera que la cámara quede ubicada en el origen de coordenadas (0, 0, 0) del nuevo sistema de referencia (View Space). Apuntar la cámara en dirección negativa de Z: Se orienta la cámara para que mire en dirección negativa del eje Z del View Space. Esta convención facilita los cálculos de proyección y recorte en etapas posteriores del pipeline. Eje Y hacia arriba: Se orienta la cámara de manera que el eje Y del View Space apunte hacia arriba. Transformación y rotación La Transformación de Visualización se realiza mediante una combinación de transformación (traslación) y rotación. Se aplica una transformación inversa a la cámara (en términos de posición y orientación) a toda la escena. Es como si, en lugar de mover la cámara, moviéramos todo el mundo virtual alrededor de la cámara, hasta que la cámara quede en la posición y orientación deseadas en el View Space. En el diagrama, se muestra cómo la escena, inicialmente en World Space, se transforma al View Space. La cámara, representada como un icono, se mueve y orienta en el View Space, mientras que la escena se transforma en consecuencia. 16 2.1 Pipeline gráfico. Etapa de geometría: Sombreado de Vértice y transformación de proyección. Continuamos con dos etapas importantes dentro de la Etapa de Geometría: el Sombreado de Vértice y la Transformación de Proyección. Sombreado de Vértice (Vertex Shader) El Sombreado de Vértice se realiza en el Vertex Shader, que es una etapa programable del pipeline gráfico. Su función principal es: Obtener la representación del material del objeto: Calcular las propiedades de iluminación y color de cada vértice, basándose en el material del objeto, las fuentes de luz y la posición de la cámara. Modelar las transformaciones en las fuentes de luz, vectores normales, información de color, etc.: El Vertex Shader puede realizar cálculos complejos de iluminación, considerando la posición y tipo de las fuentes de luz, los vectores normales de las superficies (que definen su orientación), la información de color de los materiales y otros factores que influyen en la apariencia visual de los objetos. Uso de coordenadas del modelo: Los cálculos de sombreado en el Vertex Shader generalmente se realizan en coordenadas del modelo o en coordenadas universales, antes de la transformación de proyección. Transformación de Proyección (Transf. de Proyección) La Transformación de Proyección se encarga de proyectar la escena 3D en un espacio 2D, simulando la perspectiva o la proyección ortográfica. Está asociada a: Campo de visión (Field of View): Define el ángulo de visión de la cámara, es decir, cuánto de la escena se ve horizontal y verticalmente. Un mayor campo de visión produce un efecto de "ojo de pez", mientras que un campo de visión menor se asemeja más a una lente teleobjetivo. Aspecto (aspect ratio): Define la relación entre la anchura y la altura de la ventana de visualización. Se calcula como aspect = width/height. El aspecto asegura que los objetos se proyecten correctamente sin distorsiones, manteniendo las proporciones originales. Volumen de visualización (View Frustum): La transformación de proyección define el volumen de visualización o frustum de vista. Este volumen es una pirámide truncada que define la región del espacio 3D que será visible en la imagen final. Los objetos que quedan fuera de este volumen son recortados y no se renderizan. El View Frustum está determinado por el campo de visión, el aspecto y las distancias a los planos de recorte zNear (plano de corte cercano) y zFar (plano de corte lejano). 17 En el diagrama, se muestra el Camera Space (espacio de la cámara) y el View Frustum. El View Frustum se define por el ángulo de visión fovy, el aspecto, y las distancias zNear y zFar. Los objetos dentro del View Frustum serán proyectados y renderizados, mientras que los objetos fuera serán recortados. El punto EYE or COP (Center of Projection) representa la posición de la cámara o el centro de proyección. AT (-z) representa el punto al que está mirando la cámara, en dirección negativa del eje Z en el espacio de la cámara. UP (y) indica la dirección "arriba" de la cámara, que generalmente se alinea con el eje Y Profundizando en la Transformación de Proyección, es importante entender los tipos de proyección y el concepto de coordenadas normalizadas. Tipos de Proyección: Perspectiva y Ortográfica Volumen de proyección: La Transformación de Proyección define el volumen de proyección, que es la forma en que se proyecta el espacio 3D en un espacio 2D. Existen dos tipos principales de proyección: o Proyección Perspectiva: Simula la forma en que vemos el mundo real, con objetos más lejanos que parecen más pequeños. Las líneas paralelas convergen en un punto de fuga. La proyección perspectiva se utiliza para crear una sensación de profundidad y realismo. o Proyección Ortográfica: Proyecta los objetos paralelos al plano de proyección, sin perspectiva. Las líneas paralelas permanecen paralelas. La proyección ortográfica se utiliza en aplicaciones técnicas, como el diseño CAD y la arquitectura, donde se necesitan medidas precisas y no se desea la distorsión de la perspectiva. Coordenadas normalizadas: Después de la Transformación de Proyección, se obtienen coordenadas normalizadas para el volumen de visualización. Estas coordenadas se encuentran dentro de un rango estándar, generalmente entre -1 y 1 para los ejes X e Y, y entre 0 y 1 para la profundidad Z. Las coordenadas normalizadas facilitan el proceso de recorte y la transformación a coordenadas de pantalla en etapas posteriores del pipeline. Proyección de 3D a 2D: La Transformación de Proyección reduce la dimensión de la escena, proyectándola de 3D a 2D. La coordenada Z, que representa la profundidad, se mantiene y se utiliza para el Z-buffer en la etapa de rasterización, para resolver la visibilidad. 18 2.1 Pipeline gráfico. Etapa de geometría: Transformación de recorte y transformación de pantalla. Transformación de Recorte (Transf Recorte) Recorte del volumen de visualización: La Transformación de Recorte se encarga de eliminar las partes de los objetos que quedan fuera del volumen de visualización definido por la cámara y la proyección (View Frustum). Solo los objetos o partes de objetos que están dentro del volumen de visualización se renderizan. Objetos totalmente dentro del volumen: Los objetos que están totalmente dentro del volumen de visualización se copian íntegramente para la siguiente etapa del pipeline. Objetos parcialmente incluidos: Los objetos que están parcialmente incluidos en el volumen de visualización deben ser recortados. Esto significa que se generan nuevos vértices en los puntos donde los objetos intersectan los planos de recorte del volumen de visualización. Se crean nuevas primitivas geométricas que representan solo la parte visible de los objetos. Realización por hardware: El proceso de recorte es complejo y se realiza de forma eficiente por el hardware de la tarjeta gráfica, aprovechando sus capacidades de procesamiento paralelo. Transformación de Pantalla (Transf Pantalla) Ajuste a las dimensiones de la ventana final: La Transformación de Pantalla se encarga de adaptar las coordenadas normalizadas (que están en un rango estándar, como -1 a 1) a las dimensiones de la ventana final en la pantalla, expresadas en píxeles. Transformación del cubo unitario a la ventana: Se transforma el cubo unitario normalizado (que define el volumen de visualización en coordenadas normalizadas) a la ventana final. Se escalan y trasladan las coordenadas X e Y para que se correspondan con el rango de píxeles de la ventana. La coordenada Z (profundidad) también se transforma para su uso en el Z-buffer. En resumen, la Transformación de Recorte elimina la geometría invisible, y la Transformación de Pantalla ajusta las coordenadas para que la escena se dibuje correctamente en la ventana de visualización. 2.1 Pipeline gráfico. Etapa de rasterización. La siguiente etapa del pipeline gráfico es la Rasterización. Esta etapa convierte las primitivas geométricas en fragmentos y calcula el color de cada fragmento. Etapa de Rasterización La Etapa de Rasterización toma como entrada las primitivas geométricas transformadas y recortadas de la Etapa de Geometría y las convierte en fragmentos. Un fragmento representa un píxel potencial que podría ser dibujado en la pantalla. 19 Objetivos de la rasterización Los objetivos principales de la rasterización son: Transformar vértices y primitivas en fragmentos: Generar una lista de fragmentos (píxeles potenciales) para cada primitiva geométrica (por ejemplo, triángulo). Asignar color a cada vértice e interpolar las líneas entre vértices: En la etapa de Vertex Shader, se calcula el color de cada vértice. En la rasterización, se interpolan estos colores a lo largo de las líneas y dentro de las áreas de las primitivas, para asignar un color inicial a cada fragmento. Etapas de la rasterización La rasterización se puede dividir en las siguientes etapas: 1. Triangle Set-up (Configuración de Triángulos): Se preparan los triángulos para la rasterización. Esto incluye calcular las coordenadas 2D del contorno de cada triángulo en la pantalla, utilizando las coordenadas de pantalla de sus vértices. 2. Triangle Traversal o Scan Traversal (Recorrido de Triángulos o Escaneado de Triángulos): Se recorre el área de cada triángulo, determinando qué píxeles están dentro de los límites del triángulo. Para cada píxel dentro del triángulo, se genera un fragmento. En esta etapa se "generan fragmentos" para cada píxel que forma parte de un triángulo. 3. Fragment Processor (Procesador de Fragmentos): Es una etapa programable, también conocida como Pixel Shader. El Fragment Processor puede modificar las propiedades de cada fragmento, como su color, profundidad y textura. En esta etapa se puede aplicar el sombreado de píxeles para calcular el color final de cada píxel, teniendo en cuenta texturas, materiales, iluminación y otros efectos. 4. Output Merging (Fusión de Salida): En esta etapa final de la rasterización, se combinan los fragmentos renderizados para generar la imagen final. Esto incluye: Test de profundidad (Z-buffer test): Se utiliza el Z-buffer para resolver la visibilidad. Para cada fragmento, se compara su profundidad con la profundidad almacenada en el Z-buffer para ese píxel. Si el fragmento está más cerca de la cámara, se dibuja y se actualiza el Z-buffer. Blending (Mezcla): Se pueden aplicar operaciones de mezcla para combinar los colores de los fragmentos con los píxeles ya existentes en el Frame Buffer, por ejemplo, para lograr efectos de transparencia. 20 Para entender mejor la rasterización, es útil visualizar la diferencia entre primitivas y fragmentos. Primitivas vs. Fragmentos Primitiva: Una primitiva geométrica, como un triángulo, es una forma geométrica definida por vértices. Las primitivas se definen en espacio continuo y no están restringidas a una cuadrícula de píxeles. En el ejemplo de la diapositiva, la Primitiva es un triángulo definido por tres vértices. Se indica que "formado por uno o más vértices. No están alineados en un grid." Fragmentos: Los fragmentos son el resultado de la rasterización de una primitiva. Son píxeles potenciales que corresponden a la parte de la primitiva que cae dentro de la cuadrícula de píxeles de la pantalla. Los fragmentos están alineados en una cuadrícula de píxeles. En el ejemplo, los Fragmentos se representan como los puntos dentro del triángulo que caen en la cuadrícula de píxeles. Se indica que son "Pixeles alineados interpolados a partir de los vértices." Ejemplo visual El diagrama muestra un triángulo (Primitiva) y cómo se rasteriza en un conjunto de píxeles (Fragmentos) en una cuadrícula. Se puede ver que los fragmentos son una aproximación discreta de la primitiva continua. La rasterización convierte formas geométricas continuas en representaciones discretas de píxeles para su visualización en la pantalla. Salida de la Rasterización La salida de la etapa de rasterización es un conjunto de Fragmentos. Cada fragmento contiene información como: Posición (x, y) en la pantalla: Coordenadas del píxel. Profundidad (z): Distancia del fragmento a la cámara. Color interpolado: Color inicial del fragmento, interpolado desde los colores de los vértices. Otros atributos: Información adicional que puede ser utilizada en etapas posteriores, como texturas coordenadas y normales. Estos fragmentos son la entrada para la siguiente etapa del pipeline: el Pixel Shader. La rasterización es una etapa clave para convertir la geometría 3D en una imagen 2D visible en la pantalla. 21 2.1 Pipeline gráfico. Etapa de rasterización. Sombrado de pixel y fusión. Sombreado de píxeles (Pixel Shading) Sombreado a nivel de pixel: El Pixel Shader o Fragment Processor se encarga de aplicar el sombreado a nivel de píxel. Esto significa que se calcula el color final de cada píxel de forma individual, teniendo en cuenta diversos factores como la iluminación, las texturas, los materiales y otros efectos visuales. Base en el sombreado a nivel de vértice: Aunque el sombreado se realiza a nivel de píxel, se basa en los cálculos de sombreado realizados previamente a nivel de vértice en el Vertex Shader. El Vertex Shader calcula la iluminación y otras propiedades en los vértices, y el Pixel Shader interpola y refina estos resultados para cada píxel dentro de las primitivas. Ejecución en núcleos GPU programables: El Pixel Shader es una etapa programable del pipeline gráfico. Se ejecuta en los núcleos GPU programables, que son procesadores especializados en la tarjeta gráfica diseñados para realizar cálculos paralelos de forma eficiente. Esto permite realizar cálculos de sombreado complejos para cada píxel en tiempo real. Aplicación de texturas: En el Pixel Shader, se pueden aplicar texturas a las superficies de los objetos. Las texturas son imágenes 2D que se "pegan" sobre las superficies para añadir detalle y realismo. Se pueden utilizar diversos métodos de proyección para mapear las texturas en las superficies 3D. Fusión (Merging) Etapa de fusión final: La etapa de Fusión es la última etapa de la rasterización y se encarga de combinar los fragmentos renderizados para generar la imagen final en el Color Buffer. Información de color en el Color Buffer: En la etapa de fusión, se almacena la información de color de cada píxel en el Color Buffer. El Color Buffer es una parte del Frame Buffer que almacena los valores de color de los píxeles que forman la imagen final. Combinación de fragmentos visibles procesados en el Sombreado: La información de color en el Color Buffer se obtiene combinando los fragmentos visibles que han sido procesados en el Pixel Shader. La visibilidad se determina mediante el Z-buffer. Visibilidad basada en Z-buffer o buffer de profundidad: La visibilidad de los fragmentos se decide en base al Z-buffer o buffer de profundidad. Como ya vimos, el Z- buffer almacena la profundidad de cada píxel. En la etapa de fusión, se compara la profundidad de cada fragmento con la profundidad almacenada en el Z-buffer. Si el fragmento está más cerca de la cámara, se dibuja y se actualiza el Z-buffer y el Color Buffer. De esta forma, el Z-buffer asegura que solo se dibujen los fragmentos visibles y se resuelva correctamente la oclusión entre objetos. En resumen, el Pixel Shader calcula el color final de cada píxel y la Fusión combina los fragmentos visibles para generar la imagen final en el Color Buffer, utilizando el Z-buffer para gestionar la visibilidad. 22 2.2 Representación basada en jerarquía de nodos. Grafo de Escena: Estructura Jerárquica Para organizar y gestionar escenas 3D complejas, se utiliza una estructura jerárquica basada en nodos, que se conoce como Grafo de Escena o Scene Graph. Grafo: estructura de almacenamiento: El Grafo de Escena es una estructura de datos que almacena todos los elementos de la escena, incluyendo objetos, luces, cámaras y otros componentes. Además, almacena la relación lógica y/o posición (transformaciones) entre estos elementos. Esta estructura jerárquica facilita la organización, manipulación y renderizado de escenas complejas. Jerarquía de Nodos El Grafo de Escena se organiza como un árbol jerárquico, donde los nodos se relacionan entre sí como padres e hijos. Esta jerarquía refleja las relaciones de composición y transformación entre los objetos de la escena. Nodo raíz (World): El nodo raíz del árbol, generalmente llamado "World", representa la escena completa. Todos los demás nodos de la escena son descendientes de este nodo raíz. Nodos intermedios (Group): Los nodos grupo (Group) se utilizan para agrupar otros nodos, ya sean nodos objeto o otros nodos grupo. Esto permite crear subjerarquías y organizar la escena de forma lógica. Los nodos grupo pueden aplicar transformaciones que afectan a todos sus nodos hijos. Nodos hoja (Object): Los nodos objeto (Object) representan los objetos geométricos de la escena. Contienen la información geométrica del objeto (vértices, triángulos, etc.) y sus propiedades de apariencia (material, textura, color, etc.). Generalmente, los nodos objeto son nodos hoja en el árbol, es decir, no tienen nodos hijos. Nodos Básicos: Existen principalmente tres tipos de nodos básicos en un Grafo de Escena: Nodo de Geometría: o Almacenamiento de información poligonal: Estos nodos almacenan la información poligonal de los objetos, es decir, la descripción de la geometría del objeto mediante polígonos (generalmente triángulos). o Almacenamiento de informaciones de apariencia: Además de la geometría, los nodos de geometría también almacenan informaciones referentes a la apariencia del objeto, como: ▪ Material: Propiedades del material (color, reflectividad, etc.). ▪ Textura: Imágenes de textura que se aplican a la superficie. ▪ Color: Color base del objeto. ▪ Etc.: Otras propiedades visuales. o Nodos hoja: Usualmente actúan como nodos hoja en el Grafo de Escena, es decir, no tienen nodos hijos. Representan los objetos finales que se renderizan en la escena. 23 Nodo Grupo: o Agrupación de nodos hijos: Los nodos grupo se emplean para agrupar varios nodos hijos, ya sean nodos de geometría u otros nodos grupo. o Nivel organizativo: Su función principal es organizativa, permitiendo estructurar la escena de forma lógica y jerárquica. o Transformaciones conjuntas: Las transformaciones aplicadas a un nodo grupo se propagan y afectan a todos sus nodos hijos. Esto facilita la manipulación de conjuntos de objetos relacionados. Nodo de transformación afín: o Aplicación de matriz de transformación: Estos nodos permiten aplicar una matriz de transformación afín (traslación, rotación, escalado) a sus nodos hijos. o Afectación a la ubicación espacial de nodos hijos: La transformación aplicada en el nodo afecta a la ubicación espacial de todos los nodos hijos, modificando su posición, orientación y escala en la escena. o Objetos móviles y estructuras articuladas: Son necesarios para: ▪ Definición de objetos móviles: Para animar objetos y hacer que se muevan en la escena, se modifican las matrices de transformación de los nodos de transformación asociados a esos objetos. ▪ Creación de estructuras articuladas: Para crear modelos complejos con partes móviles y articulaciones, como personajes o robots, se utilizan jerarquías de nodos de transformación para definir las relaciones de movimiento entre las diferentes partes. Información asociada a los nodos La información que se incluye en cada nodo del Grafo de Escena va asociada al tipo de nodo y a su función en la escena. Objetos (Nodos de Geometría): Para los nodos que representan objetos geométricos, la información asociada incluye: o Geometría: Descripción de la forma del objeto (vértices, triángulos, etc.). o Apariencia: Propiedades visuales del objeto (material, textura, color, etc.). o Propiedades del material: Características del material que definen su interacción con la luz (reflectividad, rugosidad, etc.). o Caminos de desplazamiento: Información sobre cómo se mueve o anima el objeto en la escena (si es móvil). Luces y cámaras: En el Grafo de Escena también se pueden representar las luces y cámaras que componen la escena virtual. Los nodos de luz definirían el tipo de luz, su posición, color e intensidad. Los nodos de cámara definirían la posición, orientación, campo de visión y otros parámetros de la cámara. 24 Dependencias asociadas a las posiciones relativas Las dependencias en un Grafo de Escena están principalmente asociadas a las posiciones relativas entre los nodos. La jerarquía de nodos define relaciones padre-hijo, donde: Transformaciones jerárquicas: Las transformaciones aplicadas a un nodo padre se heredan y afectan a todos sus nodos hijos. Esto significa que, si se mueve o rota un nodo grupo, todos los objetos que son hijos de ese grupo se moverán o rotarán con él, manteniendo sus posiciones relativas dentro del grupo. Posiciones relativas: La posición de un nodo hijo se define relativa a su nodo padre. Esto facilita la creación de objetos compuestos y estructuras articuladas, donde las partes se mueven en relación a un objeto principal. Dependencias Funcionales Dependencias a nivel funcional: Existen dependencias que no son solo de posición, sino también de funcionalidad o comportamiento entre los nodos. Por ejemplo, la forma de un objeto puede depender de otro objeto, o la animación de un objeto puede estar controlada por otro objeto. Representación jerárquica: Estas dependencias funcionales también suelen representarse de forma jerárquica en el Grafo de Escena, aunque no necesariamente en la misma jerarquía que las dependencias de posición. 2.3 Construcción de geometrías. En esta sección, exploraremos cómo se construyen las geometrías 3D, es decir, cómo se crean los objetos y modelos 3D que componen una escena virtual. Fuentes de modelos 3D Librerías de assets: Existen numerosas librerías de assets o recursos 3D disponibles, tanto gratuitas como de pago. o Unity Asset Store: Librería de assets para el motor Unity. o Blender Market: Mercado de assets para Blender. o 3DStudio Max (Autodesk 3ds Max): Software de modelado 3D profesional con acceso a librerías. o Etc.: Otras plataformas y sitios web ofrecen también librerías de assets 3D. Definiciones matemáticas y scripts: Los modelos 3D también se pueden crear desde cero utilizando definiciones matemáticas y scripts. Esto implica: o Basadas en puntos, funciones, etc.: Describir la geometría de los objetos mediante puntos, curvas, superficies matemáticas y funciones. o Scripts y algoritmos para visualización de datos: Utilizar lenguajes de scripting y algoritmos para generar la geometría de forma procedimental o para visualizar datos en 3D. Software interactivo o CAD: Los modelos 3D se pueden crear utilizando software interactivo de modelado 3D o software CAD (Computer-Aided Design). Colecciones de polígonos 25 Independientemente de la forma en que se creen, la mayoría de los objetos 3D en gráficos por ordenador se representan como colecciones de polígonos, principalmente triángulos. Un objeto 3D se describe como una malla de polígonos que aproximan su superficie. Componentes de un modelo poligonal Un modelo poligonal se define por los siguientes componentes: Vértices: Puntos en el espacio 3D que definen las esquinas de los polígonos. Lados (aristas): Segmentos de línea que unen los vértices y forman los bordes de los polígonos. Caras (polígonos): Superficies planas delimitadas por los lados. Generalmente, se utilizan triángulos como polígonos básicos. Vector normal: Para cada cara (o para cada vértice), se define un vector normal, que es un vector perpendicular a la superficie. Las normales son esenciales para el cálculo de la iluminación y la orientación de las superficies. 2.3 Geometrías- Polígonos. Descripción de Polígonos Los polígonos se describen a partir de: Coordenadas cartesianas u homogéneas: Las posiciones de los vértices se definen mediante coordenadas cartesianas (x, y, z) en el espacio 3D. También se pueden utilizar coordenadas homogéneas (x, y, z, 1), que facilitan la representación de transformaciones afines mediante matrices. Vértices (lista ordenada): Los vértices de un polígono se definen como una lista ordenada. El orden de los vértices define la orientación y la normal de la cara. Triángulos y Caras Triángulos como polígonos básicos: Aunque se pueden usar otros polígonos, los triángulos son los polígonos más utilizados en gráficos 3D debido a su simplicidad y eficiencia para los cálculos. Cualquier polígono plano se puede triangularizar, es decir, dividir en triángulos. Caras compuestas por triángulos: Las caras de un modelo poligonal se definen generalmente como triángulos. Un modelo 3D se compone de una colección de triángulos que juntos forman la superficie del objeto. Vértices compartidos: En una malla poligonal, los vértices son compartidos por muchas caras y lados. Esto significa que un mismo vértice puede pertenecer a varios triángulos y aristas. Compartir vértices reduce la redundancia de datos y asegura la continuidad de la superficie entre los polígonos. 26 Normales Normales por vértice o por cara: Cada polígono (cara) tiene asociada una normal que indica su orientación. También se pueden definir normales por vértice, que son vectores normales definidos en cada vértice y que se interpolan a través de la cara para suavizar la iluminación. Cálculo de la iluminación: Las normales son fundamentales para el cálculo de la iluminación. Determinan cómo la luz incide en la superficie y cómo se refleja, afectando al color y la apariencia del objeto. 2.3 Geometrías- Curvas y superficies. Curvas y Superficies Analíticas A diferencia de los polígonos, que son aproximaciones planas, las curvas y superficies analíticas se definen mediante ecuaciones matemáticas. Esto permite representar formas más suaves y complejas de forma precisa. A partir de curvas y superficies Las curvas y superficies se pueden definir a partir de: Colección de puntos. Líneas rectas: La forma más simple de curva es una línea recta, que se puede definir mediante una colección de puntos. Representación analítica: Las curvas y superficies se pueden describir mediante ecuaciones matemáticas, que pueden ser: o No paramétricas: Expresan una variable en función de otra, como y = m · x + b para una línea recta en 2D. Sin embargo, las representaciones no paramétricas tienen limitaciones para curvas complejas y superficies en 3D. o Paramétricas: Describen las coordenadas de los puntos en función de uno o más parámetros. Por ejemplo, una línea recta entre dos puntos P0 y P1 se puede representar paramétricamente como R = (1-t) · P0 + t · P1, donde 't' es un parámetro que varía de 0 a 1. Las representaciones paramétricas son más versátiles y se utilizan ampliamente en gráficos 3D. Tipos de curvas no paramétricas Éxplícitas: Forma y = f(x). Ejemplo: y = f(x) es una forma general de función explícita. Recta: Forma y = m · x + b. Ejemplo: y = m · x + b es la ecuación de una línea recta en 2D, donde 'm' es la pendiente y 'b' es la ordenada al origen. Implícitas: Forma f(x, y) = 0. Ejemplo: f(x, y) = 0 es una forma general de función implícita. o Círculo: Forma x² + y² - r = 0. Ejemplo: x² + y² - r = 0 es la ecuación implícita de un círculo con centro en el origen y radio 'r'. o Sección cónica: Forma ax² + 2bxy + cy² + 2dx + 2ey + f = 0. Ejemplo: ax² + 2bxy + cy² + 2dx + 2ey + f = 0 es la ecuación general de una sección cónica (círculo, elipse, parábola, hipérbola). 27 Profundicemos en las curvas paramétricas, que son esenciales para representar curvas y superficies complejas en gráficos 3D. Tipos de curvas- Paramétricas Puntos de control: Las curvas paramétricas se definen utilizando puntos de control. Estos puntos no necesariamente pertenecen a la curva, pero influyen en su forma. Al modificar la posición de los puntos de control, se puede manipular la forma de la curva. Media ponderada de puntos de control: Cada punto de la superficie/curva se calcula como una media ponderada de los puntos de control. Los pesos de esta media ponderada varían en función de un parámetro (o parámetros, para superficies). Al variar el parámetro, se recorre la curva o superficie. Funciones básicas: Los pesos en la media ponderada se definen mediante funciones básicas o funciones de blending. Estas funciones determinan cómo influye cada punto de control en la forma de la curva o superficie en diferentes valores del parámetro. Ejemplos de curvas paramétricas Bezier: Las curvas de Bezier son un tipo popular de curva paramétrica ampliamente utilizado en gráficos 3D y diseño asistido por ordenador. Se definen mediante puntos de control y polinomios de Bernstein como funciones básicas. La ecuación general de una curva de Bezier cúbica (de grado 3) se muestra en la diapositiva: B(t) = (1-t)³·P₀ + 3·(1- t)²·t·P₁ + 3·(1-t)·t²·P₂ + t³·B₃. Donde P₀, P₁, P₂, P₃ son los puntos de control y 't' es el parámetro que varía de 0 a 1. B-spline: Las curvas B-spline son una generalización de las curvas de Bezier. Ofrecen mayor control local sobre la forma de la curva y permiten crear curvas más complejas y suaves. NURBS (Non Uniform Rational B-Splines): Las NURBS (Non Uniform Rational B-Splines) son una extensión de las B-splines que permiten representar curvas y superficies racionales. Son muy versátiles y se utilizan ampliamente en software CAD y modelado 3D profesional. Pueden representar tanto formas orgánicas como formas geométricas precisas. Texturas (U,V) - direcciones paramétricas Las texturas se pueden mapear en superficies paramétricas utilizando direcciones paramétricas (U, V). En una superficie paramétrica 2D, se utilizan dos parámetros, generalmente llamados U y V, para definir cada punto de la superficie. Se pueden utilizar estas coordenadas (U, V) como coordenadas de textura para mapear una imagen de textura sobre la superficie paramétrica. Los diagramas en la diapositiva muestran ejemplos de curvas de Bezier: Simple Bezier Curve (lineal), Quadratic Bezier Curve (cuadrática) y Cubic Bezier Curve (cúbica). Se puede observar cómo la forma de la curva se modifica al mover los puntos de control (P0, P1, P2, P3). También se muestra el punto B(1/2) en la curva de Bezier lineal, que corresponde al punto medio de la curva cuando el parámetro 't' es 0.5. 28 2.3Geometrias- Curvas y superficies. (Continuación - Subdivisión recursiva) Un método importante para trabajar con curvas y superficies paramétricas es la subdivisión recursiva. Subdivisión recursiva Mallas o mesh: Las superficies paramétricas se pueden aproximar mediante mallas poligonales o meshes. Una malla es una colección de polígonos (generalmente triángulos) que aproximan la superficie. Subdivisiones recursivas: Para mejorar la aproximación de la malla a la superficie paramétrica, se pueden realizar subdivisiones recursivas. Este proceso consiste en dividir los polígonos de la malla original en polígonos más pequeños, generando una malla más densa y detallada. La subdivisión se puede realizar de forma uniforme o adaptativa. 2.3 Mapeado de texturas. El mapeado de texturas es una técnica fundamental para añadir detalle visual y realismo a los modelos 3D sin aumentar la complejidad geométrica. Mapeado de texturas Patrón simple o imagen completa: Se puede utilizar un patrón simple repetitivo o una imagen completa como textura. La textura se "pega" o "envuelve" sobre la superficie del modelo 3D. Mapeado sobre los polígonos: La textura se mapea sobre los polígonos que componen el modelo 3D. Cada polígono se divide en píxeles, y a cada píxel se le asigna un color tomado de la textura. Renderizado para dotarlo de mayor realismo: El mapeado de texturas se utiliza para dotar de mayor realismo a los modelos 3D, añadiendo detalles de superficie como color, patrones, rugosidad, etc., sin necesidad de modelar geométricamente cada detalle. Por ejemplo, se puede utilizar una textura de ladrillo para dar la apariencia de una pared de ladrillo a un modelo poligonal simple. 29 2.3 Otras técnicas. Además de polígonos, curvas, superficies y texturas, existen otras técnicas para la construcción de geometrías 3D, como los voxels y las nubes de puntos. Voxels Unidad cúbica tridimensional: Los voxels (volumetric pixels) son unidades cúbicas que componen un objeto tridimensional. Son el equivalente 3D de los píxeles 2D. Un objeto basado en voxels se construye como un conjunto de cubos pequeños. Muestreo de geometrías en vez de mallas: En lugar de utilizar mallas poligonales, los voxels permiten representar objetos mediante el muestreo de geometrías en un volumen 3D. Se divide el espacio 3D en una cuadrícula de voxels, y cada voxel puede estar lleno o vacío, o tener asociado un color o material. Optimización basada en jerarquías- LOD (SVO-sparse voxel octree): Para optimizar el almacenamiento y el renderizado de grandes conjuntos de voxels, se utilizan jerarquías espaciales como el SVO (Sparse Voxel Octree). Un octree es una estructura de árbol que divide el espacio 3D en octantes (ocho cubos) de forma recursiva. Los octrees sparse (SVO) optimizan el almacenamiento al solo almacenar los octantes que contienen voxels no vacíos. Esto permite implementar LOD (Level of Detail), mostrando representaciones más detalladas de los voxels cercanos a la cámara y representaciones más simplificadas de los voxels lejanos. Información obtenida de escaneados médicos (CT- Computed Tomography): Los voxels son especialmente útiles para representar datos volumétricos obtenidos de escaneados médicos como CT (Computed Tomography) o MRI (Magnetic Resonance Imaging). En estos escaneados, el cuerpo se escanea en secciones transversales, generando un conjunto de imágenes 2D que se pueden combinar para formar un volumen 3D de voxels, representando la densidad de los tejidos en cada punto del espacio. Esto permite la Visualización médica en 3D de órganos y tejidos. Nubes de puntos- Point Cloud VR Point Cloud VR: Las nubes de puntos son conjuntos de puntos en el espacio 3D que representan la forma de un objeto o escena. Cada punto tiene una posición (x, y, z) y puede tener asociado información adicional, como color o normal. Capturado a partir de cámaras de profundidad (Escaneado láser, Kinect, etc.): Estos sensores miden la distancia a los objetos en cada punto de la imagen, generando una nube de puntos 3D. Profundidad medida por tiempo de vuelo de la luz: Algunos sensores de profundidad, como Kinect, utilizan el tiempo de vuelo de la luz para medir la distancia. Construcción de modelo poligonal (Meshlab, Wrap y otros): A partir de una nube de puntos, se puede construir un modelo poligonal o malla 3D. Existen software y algoritmos que permiten convertir una nube de puntos en una malla de triángulos que aproxima la forma definida por los puntos. Ejemplos de software para procesar nubes de puntos y generar mallas son Meshlab, Wrap, y otros. 30 2.3. Operaciones básicas. Una vez que tenemos geometrías 3D, necesitamos operaciones básicas para manipularlas y transformarlas en nuestros entornos gráficos. Coordenadas cartesianas (X, Y, Z) La base para la manipulación de geometrías 3D son las coordenadas cartesianas (X, Y, Z). Este sistema de coordenadas tridimensional define la posición de los puntos y objetos en el espacio. Sistemas habituales de coordenadas Existen diferentes sistemas habituales de coordenadas utilizados en gráficos 3D, que varían en la orientación de los ejes X, Y y Z: Programas de modelado: En muchos programas de modelado 3D, como Blender o 3ds Max, se utiliza un sistema de coordenadas donde: o X, Y horizontal: Los ejes X e Y se encuentran en el plano horizontal. o Z vertical: El eje Z apunta verticalmente hacia arriba. o Este sistema es intuitivo para modelar objetos en un plano horizontal. Motores de Realidad Virtual: En motores de Realidad Virtual y sistemas de gráficos 3D, es común utilizar un sistema de coordenadas donde: o +X derecha: El eje X positivo apunta hacia la derecha. o +Y arriba: El eje Y positivo apunta hacia arriba. o +Z hacia dentro (más habitual) o hacia afuera: El eje Z positivo puede apuntar hacia dentro de la pantalla (convención más habitual en OpenGL y DirectX) o hacia afuera (convención en algunos sistemas). La dirección del eje Z define la profundidad y la dirección de la vista. Interpretación de las coordenadas: Dextrógiro vs. Levógiro La interpretación de las coordenadas también puede variar en cuanto a si el sistema es dextrógiro (mano derecha) o levógiro (mano izquierda). Esto afecta a la dirección de rotación y al orden de los ejes. Dextrógiro: son Blender, 3dStudio Max. Las rotaciones en sistemas dextrógiros suelen ser antiorarias alrededor de los ejes positivos. Levógiro: son Unity3D. Las rotaciones en sistemas levógiros suelen ser horarias alrededor de los ejes positivos. 31 Coordenadas polares son otra forma útil de describir posiciones y orientaciones, especialmente en sistemas esféricos o cilíndricos. Las coordenadas polares, en su forma esférica, se definen por tres componentes: φ (phi): Elevación: Ángulo de elevación o latitud, medido desde el plano XY hacia arriba (o hacia abajo). Varía generalmente desde -90° a +90° o de -π/2 a +π/2 radianes. θ (theta): Azimut: Ángulo de azimut o longitud, medido en el plano XY desde el eje X positivo en sentido antihorario. Varía generalmente de 0° a 360° o de 0 a 2π radianes. r: radio: Distancia radial desde el origen hasta el punto. Conversión de coordenadas polares a cartesianas Las coordenadas polares (r, φ, θ) se pueden convertir a coordenadas cartesianas (x, y, z) mediante las siguientes ecuaciones: x = r · cos(φ) · cos(θ) z = r · cos(φ) · sin(θ) y = r · sin(φ) Estas ecuaciones definen la transformación de coordenadas polares esféricas a coordenadas cartesianas. La coordenada 'z' se calcula con seno de theta y la 'y' con seno de phi en esta convención particular. Es importante tener en cuenta que existen diferentes convenciones para las coordenadas polares, y las ecuaciones de conversión pueden variar ligeramente dependiendo de la convención utilizada. Transformaciones básicas Traslación: Desplazar un objeto o punto en el espacio. Se define por un vector de traslación (dx, dy, dz) que indica cuánto se desplaza el objeto en cada dirección (X, Y, Z). Escalado: Aumentar o disminuir el tamaño de un objeto. Se define por factores de escala (sx, sy, sz) que indican cuánto se escala el objeto en cada dirección (X, Y, Z). El escalado puede ser uniforme (sx = sy = sz) o no uniforme (escalando de forma diferente en cada eje). Rotación: Girar un objeto alrededor de un eje. Se define por un ángulo de rotación y un eje de rotación. Las rotaciones se pueden realizar alrededor de los ejes X, Y o Z, o alrededor de un eje arbitrario. Operaciones matriciales En gráficos 3D, las transformaciones básicas se suelen representar y combinar mediante operaciones matriciales. Las transformaciones se representan como matrices de transformación 4x4, y la aplicación de una transformación a un punto o vector se realiza mediante la multiplicación de la matriz de transformación por el vector (representado también como una matriz columna 4x1 en coordenadas homogéneas). La composición de múltiples transformaciones se realiza mediante la multiplicación de sus matrices de transformación. El uso de matrices facilita la realización de transformaciones complejas y la optimización de los cálculos. 32 2.3 Transformación del modelo. Escalado. Transformación del Modelo La Transformación del Modelo se encarga de transformar los objetos desde su espacio local (Model Space) al espacio universal o del mundo (World Space). Como ya vimos, esta transformación se compone de traslaciones, rotaciones y escalados. Escalado La transformación de Escalado se utiliza para modificar el tamaño de un objeto. Se define por factores de escala (sx, sy, sz), que se aplican a las coordenadas X, Y y Z del objeto, respectivamente. Rotación La transformación de Rotación se utiliza para girar un objeto alrededor de un eje. La rotación se define por un ángulo de rotación y un eje de rotación. Sistemas antihorarios Estas ecuaciones de rotación corresponden a sistemas antihorarios. Es decir, el ángulo positivo de rotación se define en sentido antihorario (contrario a las agujas del reloj). Sistemas dextrógiros Estas matrices de rotación corresponden a sistemas dextrógiros. En un sistema dextrógiro, las rotaciones positivas (ángulo positivo) se definen en sentido antihorario cuando se mira en dirección opuesta al eje de rotación. Traslación. La transformación de Traslación se utiliza para desplazar un objeto o punto en el espacio. Se define por un vector de traslación d = (dx, dy, dz). 33 2.3 Transformación del modelo. Vectores y Normales. Es importante tener en cuenta cómo las transformaciones del modelo afectan no solo a los vértices (puntos), sino también a los vectores y normales. 2.3 Rotaciones-Alternativas. Ángulos de Euler Rotaciones secuenciales alrededor de los ejes X, Y, Z: Los ángulos de Euler representan una rotación 3D como una secuencia de rotaciones alrededor de los ejes X, Y y Z. Generalmente, se utilizan tres ángulos, uno para cada eje (eje X: roll, eje Y: pitch, eje Z: yaw). Orden importante: El orden en que se aplican las rotaciones es importante. Las rotaciones y traslaciones no son conmutativas. Aplicar una rotación alrededor del eje X seguida de una rotación alrededor del eje Y no es lo mismo que aplicar primero la rotación alrededor del eje Y y luego la rotación alrededor del eje X. El orden de las rotaciones afecta al resultado final. Pérdida de un grado de libertad (Gimbal lock): Los ángulos de Euler pueden sufrir un problema conocido como Gimbal lock. Esto ocurre cuando dos de los ejes de rotación se alinean, lo que provoca la pérdida de un grado de libertad en la rotación. En Gimbal lock, ya no es posible realizar rotaciones completas en todas las direcciones. El Gimbal lock puede causar problemas en la interpolación de rotaciones y en el control de la orientación en aplicaciones interactivas. 34 Eje-Ángulo Rotación alrededor de un eje arbitrario: La representación eje-ángulo define una rotación mediante un eje de rotación (un vector unitario) y un ángulo de rotación alrededor de ese eje. Esta representación evita el problema del Gimbal lock de los ángulos de Euler y es más intuitiva para ciertas operaciones. Cuaternios (Quaternions) Extensión de números complejos: Los cuaternios son una extensión de los números complejos a cuatro dimensiones. Se utilizan ampliamente para representar rotaciones en 3D en gráficos por ordenador y robótica. Representación con 4-tupla: Un cuaternio se representa con una 4-tupla de números reales: q = [qx, qy, qz, qw] o q = [qv, qs], donde qv = [qx, qy, qz] es la parte vectorial y qs = qw es la parte escalar. Cuaternios unitarios para rotaciones: Para representar rotaciones, se utilizan cuaternios unitarios, que tienen una magnitud igual a 1. Un cuaternio unitario q = [qv, qs] que representa una rotación de ángulo θ alrededor de un eje de rotación definido por un vector unitario a se puede calcular como: q = [qv, qs] = [a · sin(θ/2), cos(θ/2)]. Donde a · sin(θ/2) representa la parte vectorial, obtenida multiplicando el vector unitario 'a' por el seno de la mitad del ángulo, y cos(θ/2) representa la parte escalar, que es el coseno de la mitad del ángulo. Ventajas de los cuaternios Sin problemas de Gimbal lock: Los cuaternios no sufren del problema del Gimbal lock de los ángulos de Euler. Almacenamiento eficiente: Requieren menos almacenamiento que las matrices de rotación (4 números reales vs. 9 números reales en una matriz de rotación 3x3). Cálculo eficiente: Las operaciones con cuaternios (composición, inversión, interpolación) son computacionalmente eficientes. Interpolación suave: La interpolación de rotaciones mediante cuaternios (por ejemplo, SLERP - Spherical Linear Interpolation) genera rotaciones suaves y sin problemas de Gimbal lock, lo que es importante para la animación y el control de orientación. Bloqueo de ejes: No sufren de bloqueo de ejes como los ángulos de Euler. 35 2.3. Transformación de la vista. Transformación de la Vista (View Transform) La Transformación de la Vista se encarga de transformar la escena desde el espacio universal (World Space) al espacio de vista o cámara (Camera Space). Como ya vimos, esto implica posicionar y orientar la cámara en el origen y mirar en dirección negativa del eje Z. Trasladar y rotar la escena La Transformación de la Vista se realiza mediante una combinación de: Traslación: Trasladar el objeto mediante una matriz de traslación M para colocar la cámara en el origen del sistema de coordenadas. Rotación: Realizar una rotación para orientar la cámara de forma que mire en dirección negativa del eje Z y el eje Y apunte hacia arriba. Vectores para definir la cámara Para definir la posición y orientación de la cámara, generalmente se utilizan tres vectores: eye (posición del ojo): Vector que define la posición de la cámara en el espacio universal. En el diagrama, eye = (eyex, eyey, eyez). center (punto de mira): Vector que define el punto al que mira la cámara en el espacio universal. En el diagrama, center = (centerx, centery, centerz). up (vector "arriba"): Vector que define la dirección "arriba" de la cámara en el espacio universal. Generalmente se alinea con el eje Y vertical, pero puede ser diferente en algunos casos. En el diagrama, up = (upx, upy, upz). 36 2.3. Transformación de proyección. Proyección en perspectiva. Transformación de Proyección La Transformación de Proyección se encarga de proyectar la escena 3D desde el espacio de la cámara (Camera Space) al espacio de recorte (Clip-Volume Space) y finalmente al espacio de pantalla (Screen Space). La proyección en perspectiva simula la forma en que vemos el mundo real, con objetos lejanos que parecen más pequeños. Proyección en perspectiva Aspecto (aspect ratio): El aspecto (aspect ratio) de la ventana de visualización se define como aspect = width/height, donde 'width' es la anchura y 'height' es la altura de la ventana en píxeles. El aspecto asegura que las proporciones de la escena se mantengan correctas en la proyección. Campo de visión (Fovy): El campo de visión vertical (Fovy) define el ángulo vertical de visión de la cámara, medido en grados. Un campo de visión mayor crea un efecto de "ojo de pez", mientras que un campo de visión menor se asemeja más a una lente teleobjetivo. Planos de recorte zNear y zFar: Se definen dos planos de recorte perpendiculares a la dirección de la vista: o zNear (plano de corte cercano): Define la distancia mínima desde la cámara a la que los objetos se renderizan. Los objetos más cercanos que el plano zNear se recortan. o zFar (plano de corte lejano): Define la distancia máxima desde la cámara a la que los objetos se renderizan. Los objetos más lejanos que el plano zFar se recortan. View Frustum (Volumen de visualización): Estos parámetros (aspecto, fovy, zNear, zFar) definen el View Frustum, que es un volumen piramidal truncado que representa la región visible de la escena en la proyección perspectiva. Solo los objetos dentro del View Frustum se proyectan y renderizan. 2.3. Transformación de proyección. Proyección ortográfica. Además de la proyección en perspectiva, existe la Proyección Ortográfica, que proyecta objetos paralelos al plano de proyección, sin perspectiva. Proyección Ortográfica La Proyección Ortográfica se utiliza para generar imágenes donde los objetos no se hacen más pequeños con la distancia, y las líneas paralelas permanecen paralelas. Es útil para aplicaciones técnicas, como el diseño CAD y la arquitectura, donde se necesitan medidas precisas y no se desea la distorsión de la perspectiva. 37 Características de la proyección ortográfica Fustrum simétrico y en forma de caja: El frustum de vista en la proyección ortográfica es un paralelepípedo o caja rectangular, en lugar de una pirámide truncada como en la proyección perspectiva. El frustum ortográfico es simétrico en el caso más simple. Cámara posicionada en el infinito: Se puede pensar que la cámara en la proyección ortográfica está posicionada en el infinito, mirando en dirección perpendicular al plano de proyección. Esto explica por qué las líneas paralelas permanecen paralelas en la proyección ortográfica. Coordenadas en el plano de corte cercano (zNear): El volumen de visualización ortográfico se define por las coordenadas de su plano de corte cercano (zNear), que son: o Left (l): Coordenada X del borde izquierdo del plano de corte cercano. o Right (r): Coordenada X del borde derecho del plano de corte cercano. o Bottom (b): Coordenada Y del borde inferior del plano de corte cercano. o Top (t): Coordenada Y del borde superior del plano de corte cercano. o zNear y zFar: Distancias a los planos de corte cercano y lejano, similares a la proyección perspectiva. 2.3. Transformación de proyección. Proyección no simétrica. En casos más generales, la proyección puede ser no simétrica, lo que significa que el centro del plano de proyección no coincide con el eje de vista, y el frustum de vista no es simétrico. Proyección no simétrica La Proyección no simétrica se utiliza cuando se necesita un control más preciso sobre el volumen de visualización, o cuando se utilizan cámaras con lentes descentradas o proyecciones especiales. Caso de frustum no simétrico En un frustum no simétrico, los planos de recorte no son simétricos con respecto al eje de vista. Esto se puede definir mediante parámetros adicionales que controlan el desplazamiento horizontal y vertical del plano de proyección. 38 Coordenadas en el plano de corte cercano (zNear) - Caso no simétrico Similar a la proyección ortográfica, el volumen de visualización no simétrico se define por las coordenadas de su plano de corte cercano (zNear), que son: Left (l): Coordenada X del borde izquierdo del plano de corte cercano. Right (r): Coordenada X del borde derecho del plano de corte cercano. Bottom (b): Coordenada Y del borde inferior del plano de corte cercano. Top (t): Coordenada Y del borde superior del plano de corte cercano. zNear y zFar: Distancias a los planos de corte cercano y lejano. Combinación de transformaciones. Para obtener las coordenadas finales de los vértices en el espacio de recorte ("clipping space"), se combinan todas las transformaciones del pipeline gráfico. Transformación total: Modelo a Clipping Space La transformación total desde las coordenadas del modelo hasta el espacio recortado "clipping space" se obtiene multiplicando las matrices de transformación en el orden inverso de aplicación: V_clip = M_proj · M_view · M_model · v Donde: v: Vértice en coordenadas del modelo. M_model: Matriz de Transformación del Modelo (model transform). M_view: Matriz de Transformación de la Vista (view transform). M_proj: Matriz de Transformación de Proyección (projection matrix). V_clip: Vértice transformado en coordenadas del espacio de recorte (clip space). 39 2.4 Propiedades básicas. Color, material, texturas e iluminación. Propiedades de la superficie y renderizado El renderizado no solo se basa en la geometría de los objetos, sino también en sus propiedades de superficie. Un renderizador debe tener en cuenta: Luz: Fuentes de luz que iluminan la escena. Materiales: Propiedades de los materiales que definen cómo interactúan con la luz (color, reflectividad, rugosidad, etc.). Reflexiones: Reflexiones de la luz en las superficies de los objetos. Colores: Colores base de los objetos y colores de la iluminación. Propiedades de la superficie: Texturas, normales, y otras propiedades que definen la apariencia detallada de las superficies. Color Representación del color: El color se representa generalmente utilizando modelos de color como: o RGB (Red, Green, Blue): Modelo de color aditivo que utiliza componentes rojo, verde y azul para definir el color. Es el modelo de color utilizado comúnmente en pantallas y gráficos por ordenador. o CMYK (Cyan, Magenta, Yellow, Key/Black): Modelo de color sustractivo utilizado en impresión. Utiliza componentes cian, magenta, amarillo y negro. Material Propiedades físicas relativas a la reflexión de la luz: El material define las propiedades físicas de los objetos relativas a cómo reflejan la luz incidente. Las propiedades del material determinan cómo la luz interactúa con la superficie del objeto y cómo se percibe su apariencia visual. Dependencia de las fuentes de luz: La apariencia de un material depende de las fuentes de luz que iluminan la escena. Un mismo material puede verse diferente bajo diferentes condiciones de iluminación. Renderizado de la iluminación: Modelos de iluminación Modelos de iluminación: El renderizado de la iluminación se realiza mediante modelos de iluminación o modelos de sombreado (shading models). Estos modelos simulan la interacción de la luz con los objetos y calculan el color final de cada punto de la superficie en función de la iluminación y las propiedades del material. Modelo de Iluminación: transmisión y reflexiones de la luz: Un Modelo de Iluminación determina cómo se simulan la transmisión (luz que pasa a través de un objeto transparente) y las reflexiones de la luz en las superficies. El objetivo es calcular cuánta luz llega al obje

Use Quizgecko on...
Browser
Browser