Desarrollo de Juegos de Video en 3D Parte 2: Usted está entrando en: “La tercera dimensión” Fabián Coello C. Febrero 2006
Temario Representando al mundo en tres dimensiones Renderizado 3D PipeLine DirectX y 3D Iniciando DirectX para hacer 3D
Representando al mundo en tres dimensiones Sistemas de Coordenadas (Eje de referencia ) Abstracción matemática ( Vectores ) Transformaciones ( Matrices ) ??? (0,0,2) X + 2 = 1 … ..
Sistemas de Referencia Forma para describir la posición y orientación de objetos en cualquier dimensión ( Rn R = Espacio) Eje de coordenadas (relatividad) Sistema Cartesiano (Espacio en dos dimensiones R2) y y z x x R2 R3
Sistemas de Referencia Sistema de Coordenadas de mano Izquierda * Sistema de Coordenadas de mano Derecha +y +x -z +y +x +z
Vectores Elemento de un espacio Usados para representar posición, cantidad ( magnitud ), orientación ( dirección ) Representado como (x,y) en R2 (x,y,z) en R3, (x,y,z,w,…..) en Rn posición dirección magnitud
Operaciones de Vectores Suma, Resta Multiplicación por escalar Producto Punto Producto Cruz Longitud (Magnitud)
Matrices Arreglo de números que representa una transformación lineal Pueden representar transformaciones (desplazamiento, escalamiento, rotación, etc ) de vectores de una manera compacta y eficiente Una matriz puede representar un conjunto de transformaciones ( concatenación de transformaciones )
Renderizado (0,0,2) X + 2 = 1 … .. Tomar la representación del mundo y desplegarlo en la pantalla Transformaciones geométricas Rasterización (convertir una imagen vectorial bidimensional en un bitmap o raster )
Sistemas de Coordenadas Locales Coordenadas Objeto Coordenadas Globales Coordenadas Proyección Coordenadas Cámara Coordenadas Pantalla
Sistema de Coordenadas Locales Sistema básico para representar las partes del objeto
Sistema de Coordenadas de Objeto Sistema definido con respecto al origen del objeto.
Sistema de Coordenadas Globales Define el espacio donde todos los objetos son colocados, escalados y orientados.
Sistema de Coordenadas de Cámara Define la posición de la cámara o visión. Permite redefinir geométricamente los objetos con respecto al eje de la cámara
Sistema de Coordenadas de Perspectiva Espacio que lo que finalmente se va a ver en la pantalla Permite proyectar los objetos 3D a 2D
Sistema de Coordenadas de Pantalla Define el área rectangular donde la imagen es desplegada. Es definido con respecto a la pantalla y su representación.
3D Pipeline Línea de ensamblaje que permite “armar imágenes” de partes (modelos) Permite paralelismo y especialización de las tareas. Tarjeta Gráfica ( GPU ) Aplicación Geometría Rasterización
Fase de Aplicación Lugar donde se genera la lógica y los modelos a ser desplegados Es donde se implementa el motor del juego o aplicación. Es donde se realizan operaciones tales como: Lógica de Juego Inteligencia Artificial Animación Manejo Espacial Detección de Colisiones Física de Juego
Trasformaciones Geométricas Trasformación Global Trasformación Cámara Iluminación Transformación Perspectiva Truncamiento División de Perspectiva Transformación Pantalla
Transformación Global Posicionar objetos y orientarlos hacia las coordenadas globales Rotar, Escalar, Posicionar objetos
Transformación Cámara Definir la posición y orientación de la Cámara Definir las posiciones de las luces, orientación y sus propiedades Definir un sistema de Coordenadas de cámara Transformar la escena del sistema de coordenadas de mundo al sistema de coordenadas de cámara.
Iluminación Computar los colores de cada vértice Aplicar un modelo de iluminación basada en parámetros Vertex Shaders.
Transformación de Perspectiva Crear el Frustum de visión ( Pirámide de visión ) Deformar los objetos para que quepan en un paralelogramo de visión
Truncamiento Eliminar los objetos y partes del objeto que no son visibles en el rectángulo de visión
División de Perspectiva Proyectar los objetos 3D en un plano rectangular 2D Realizar la Corrección de perspectiva Convierte las coordenadas hacia un sistema de pantalla independiente de la resolución del monitor.
Transformación de Pantalla Define la porción de pantalla a donde serán mapeadas las coordenadas de pantalla Reinterpreta la coordinadas de pantalla virtual al tamaño verdadero y real en la pantalla a desplegar
Rasterización Convierte la representación vectorial 2D en pixeles a ser puestos en la pantalla. Elimina las partes posteriores de los objetos. Calcula los colores reales a ser desplegados ( mapeo de texturas ) Pixel Shaders
Rasterización Manejo de profundidad ( Depth Test ) Efectos post imagen Antialiasing Anisotropic filtering
DirectX API para diseño de aplicaciones que utilizan gráficos y multimedia Provee una abstracción del hardware que implementa la solución. Permite la aceleración por hardware del renderizado de objetos (Direct3D) Basado en COM
Direct3D y C# Librería tipo Manage Code Utilidades para crear objetos, UI, transformaciones. Fácil de utilizar No requiere manejo de memoria
Iniciando DirectX para hacer 3D Incluir Microsoft.DirectX.dll Microsoft.DirectX.Direct3D Crear el Dispositivo Todo dibujo se realiza entre BeginScene() EndScene()
Demostración
Recursos www.microsoft.com/directx msdn.microsoft.com/directx www.extremetech.com/article2/0,1697,9722,00.asp