Programando un motor 3D desde cero

Sé el dueño de tu propia tecnología

Aprende desde cero

Aprende a crear tu motor 3D sin dependencias de librerías 3D como OpenGL o Direct3D. Desde lo mas sencillo hasta técnicas avanzadas

Documentación & ejemplos

Artículos con código de ejemplo que te llevarán de menos a más
hasta que puedas programar tu propio motor 3D

Multiplataforma

Brakeza3D y todos los ejemplos funcionan en Linux/Mac/Windows con un conjunto mínimo de dependencias

Bienvenizo a Brakeza3D

Si te has preguntado cómo empezar a trabajar en tu propio motor 3D desde cero, sigue…

Existen múltiples alternativas en el mercado que ofrecen engines 3D (Unity, UDK, GameMaker, CryEngine) junto con otras características fundamentales para llevar a cabo una obra multimedia completa.

…pero…

Si tu interés es conocer el funcionamiento de un motor 3D, estos entornos no son para ti

¿Acaso John Carmack utilizó Unity o algún sucedáneo de la época (1996) para crear el ya mítico Quake? Pues no, no lo hizo.

En su lugar, implementó su propio motor, el cual se encuentra disponible como código libre para aquellos interesados. Su principal problema es la ausencia de documentación, escasa en inglés (aunque de calidad) e inexistente en castellano, lo que dificulta mucho su aprendizaje.

Brakeza3D nace con el objetivo de responder a esa pregunta de cómo programar un motor 3D desde cero al estilo de la vieja escuela, sin OpenGL o Direct3D ni librerías de gráficos 3D de ningún tipo.

RENDER DE MALLAS

Aprenderemos como renderizar las mallas de nuestra geometría 3D y nos detendremos en analizar el ciclo de vida de un vértice hasta llegar a tu pantalla.

RENDER DE SÓLIDOS

Profundizaremos en el trabajo necesario en el interior del triángulo para rellenarlos de algún color o degradado.

LA CÁMARA Y SU MOVIMIENTO

Implementaremos nuestra cámara y analizaremos su configuración básica además de aprender a movernos con ella.

OPTIMIZACIÓN

Introduciremos algunas de las técnicas de optimización más conocidas para mover todo el entorno 3D con la menor cantidad de recursos.

RECORTE (CLIPPING)

Aprenderemos a recortar triángulos contra el cono de visión (frustum).

TEXTURIZACIÓN (UV MAPPING)

Estudiaremos los principios del mapeado UV para añadir texturas a nuestros objetos 3D.

SISTEMA DE LUCES

Implementaremos los tipos básicos de luces que interactúan con nuestra escena: Ambient light/light point/spotlight

SOMBRAS (SHADOW MAPPING)

Con esta sencilla pero eficaz técnica podrás crear sombras entre objetos iluminados.

CARTELES (BILLBOARDING)

Interesante técnica para renderizar planos siempre perpendiculares a cámara (al estilo de los enemigos en Doom2). La puerta a las partículas en los motores 3D.

MODELOS OBJ/PK3

Podremos trabajar con Blender e importar nuestros modelos y estudiaremos la estructura de un mapa de Quake3 y cómo cargarlo

A tener en cuenta

Conviene saber programar

He utilizado C++ pero lo importante es manejar conceptos de programación orientada a objetos para entender con comodidad.

Algo de matemáticas

Aprenderemos algunos cachivaches matemáticos que según que caso necesitarán un plus de exigencia.

Objetivo realista

El objetivo es formativo. Existen refutadas librerías 3D con un rendimiento infinitamente mejor y capacidades vinculadas al hardware que harían de Brakeza3D una opción obsoleta.

One man project

Esto nace del trabajo realizado por una persona durante seis meses en sus ratos libres. Si estás interesado en contactar o colaborar en cualquier aspecto relacionado con el motor, serás bienvenido.

Contactar

Si deseas colaborar con Brakeza3D o simplemente establecer contacto, no dudes en rellenar el siguiente formulario y te atenderé en cuanto sea posible

Tu nombre o nick