Archive for the 'DirectX' Category

Modelos MD2 (Quake 2) [parte 1]

El formato MD2 fue creado por Id Software para su juego Quake 2 y es utilizado principalmente en los modelos de los jugadores y de los personajes no jugador. El formato se destaca por su simpleza, cantidad de modelos hechos por terceras partes y cantidad de herramientas para la creación de modelos que existen en la red.

md2-q2scn

En este primer tutorial veremos cual es el formato de los archivos MD2. Más adelante veremos como realizar la carga, visualización y animación en lenguajes C# y C++ utilizando DirectX.

(Read the article)

Implementando la clase “Cámara”

En este tutorial aprederemos como crear una clase que encapsule el manejo de una cámara en un mundo 3D. Está codificado en C++ utilizando DirectX 8 pero fácilmente podría ser convertido a otros lenguajes utilizando otras librerías como OpenGL.

El punto desde el cual observamos una escena está determinado por la matriz de vista, mientras que el modo en que la vemos y cuanto vemos de ella está determinado por la matriz de proyección. Es conveniente poseer en nuestro juego una clase que encapsule los componentes necesarios para crear una matriz de vista adecuada a nuestros fines en cada caso (aunque también dependiendo de la flexibilidad que deseemos lograr podría ser necesario tener componentes para crear una matriz de proyección).
Nuestra clase que llamaremos “Camera” podrá moverse por el entorno y rotar por medio de los tres ejes posibles (X, Y, Z).

De este modo su manipulación será muy sencilla y podremos utilizarla para navegar por el terreno o mapa de nuestros juegos libremente o para que represente un jugador o vehículo del mismo (al estilo de un FPS).

(Read the article)

Skyboxes

Casi todo fps que permita caminar en exteriores o que desde algún punto del mapa permita visualizar los exteriores utilizan skyboxes.

Un skybox es simplemente un cubo que posee en sus caras interiores imágenes de paisajes o panoramas. Si la caja es lo suficientemente grande y se encuentra creada correctamente, el jugador, situado en algún punto de su interior, tendrá la sensación de estar rodeado por el paisaje impreso.

Hoy día - además de cubos - se utilizan otro tipo de formas como esferas, semi esferas y dromos; en particular cuando el cielo posee nubes que se mueven o existe un ciclo progresivo día / noche. Sin embargo, la implementación clásica sigue viniendo de la mano de los cubos, es algo sencillo y bien implementado genera el efecto buscado a la perfección. Veamos cuales son los secretos de este gran clásico.

En otros tutoriales veremos como realizar la implementación de skyboxes con cubic enviroment mapping y haciendo uso de otras formas.

skybox-1

Figura 1. El jugador se encuentra inserto dentro de nuestro cubo

(Read the article)

Frustum Culling

Sabemos que es muy conveniente evitar procesar vértices que finalmente serán recortados en la última etapa del pipeline. Para esto existen muchas técnicas y en ciertas ocasiones estas técnicas se combinan. En este documento veremos una de ellas llamada “frustum culling” que puede ser combinada, por ejemplo, con árboles bsp, quadtrees, octrees o incluso ser utilizada de modo independiente.

El frustum es básicamente el volumen de visualización generado a partir de una matriz de proyección en perspectiva; la forma de este volumen es el de una pirámide con la punta recortada. El frustum se encuentra delimitado por 6 planos: Plano de recorte lejano, plano de recorte cercano, plano superior, plano inferior, plano izquierda y plano derecho.

frustum fig1

Figura 1. El frustum visto de arriba

(Read the article)

Introducción a DirectInput con C#

Este artículo explica como utilizar DirectInput por medio de Managed DirectX utilizando el lenguaje C#.

El subsistema DirectInput

DirectInput es el componente de DirectX que se encarga de gestionar eficientemente los dispositivos de entrada, como puede ser teclados, mice, joysticks y otros dispositivos de entrada no convencionales utilizados para controlar aplicaciones.

Si bien es posible interactuar con los dispositivos de entrada por medio del API Win32, con DirectInput es posible hacerlo de modo más rápido y eficiente. Además DirectInput ofrece ciertas capacidades no disponibles en el API Win32.

(Read the article)