Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

La Saga de la Programación Gráfica 3D

–Un programador de videojuegos no le teme a las matemáticas–

Programación Gráfica es la rama de la programación que hace posibles los videojuegos 3D, efectos especiales y demas gráficas interactivas en tiempo real. Esta es la saga de la Programación Gráfica 3D en la que se reunen todas las entradas relacionadas con las gráficas por computadora que pueden encontrarse en este blog de ensamblador que fueron pensadas para que cualquier programador aficionado al ASM y al desarrollo de videojuegos 3D pueda entenderlas y apreciarlas. Y lo mejor de todo es que solo hace falta lapiz, papel y calculadora.

Directorio de Programación Gráfica y 3D:

Programación Gráfica para Principiantes

Esta es la primera entrada, explica en que consiste la programación gráfica y deja claro que para aprender a hacer juegos 3D solo hace falta una libreta de cuadrícula, lápices y una calculadora. Al menos eso es lo que hace falta al principio.

El Espacio 3D

Se le conoce como 3D porque es un espacio tridimensional, se explica lo que es son los vectores y como estos se utilizan para construir todas las cosas relacionadas con las gráficas por computadora.

La Rotación de Objetos

Aquí se ve la teoría matemática básica para aprender como funcionan las rotaciones de objetos vectoriales. Este es el punto de no retorno en el que se ve si a uno realmente quiere hacer Programación Gráfica o si por miedo a los números prefiere dedicarse a otra cosa.

Modelado y Traslación

Conoce la información que una computadora necesita para generar un modelo 3D y como se hace para poder posicionar estos sólidos en cualquier lugar del espacio

Escalamiento y Distancias en el Espacio 3D

Las gráficas vectoriales pueden cambiar su tamaño sin pérdida de calidad. Así como la manera de medir distancias y longitudes en el espacio.

La Rotación Puesta en Práctica

Un ejemplo de rotación de un objeto vectorial y una explicación del porqué es importante saber siempre donde queda el eje de rotación.

Matrices y la Mecanización de los Cálculos

Las matrices son entidades matemáticas capaces de concentrar y almacenar grandes cantidades de operaciones matemáticas para luego aplicarlos a un vector cual si fueran una sola. Lo mas importante es que estas cosas son muy utilizadas por el hardware de aceleración gráfica.

Matrices de Transformación y Coordenadas Homogeneas

Es posible almacenar largas secuencias de transformaciones geométricas como rotaciónes, traslaciones, escalamientos y otras tantas mas extrañas en matrices y luego concentrarlas en una sola. Aunque para ello tenemos que trabajar con mas de 3 dimensiones.

Producto Escalar

El producto punto o producto escalar es una operación matemática entre dos vectores que es muy importante. Tiene aplicaciones en iluminación, cambios de cámara, manejo de fuerzas y lo mas importante poner un vector en términos de otros vectores.

El Producto Vectorial

Es una operación que permite crear un tercer vector a partir de otros 2 vectores. Se aplica en detalle de superficies, construcción de vistas en juegos multijugador y es muy util para entender como funcionan las superficies en los ambientes virtuales.

Polígonos y planos en el espacio 3D

Aunque no lo parezca todos los modelos 3D son construidos por pequeñas caras planas triangulares a las que se les ha dado un tratamiento de detalle de superficie e iluminación para aparentar relieves curvos. Aquí se explica como se definen estas caras planas y todo lo que podemos hacer con ellas.

Lineas Rectas en el Espacio 3D

Un segmento de linea recta en el espacio se define por sus dos puntos inicial y final, tienen delgadez infinita y al igual que los polígonos se usan para construir modelos de estructura de alambre y para animaciones. En esta entrada se explica como funcionan las lineas en el 3D y las operaciones que podemos hacer con ellas.

Cambio de Sistemas de Coordenadas

Puede que se trate de la operación mas importante en las gráficas por computadora. El cambio de sistema de coordenadas permite expresar un punto (o un modelo 3D completo) en función de diferentes sistemas de coordenadas. Esto es util tanto para posicionar objetos en un lugar y con orientación arbitraria como el tomar los datos de un objeto en cualquier lugar del espacio. Y es fundamental para simular vistas de cámaras y detalles de superficies.

Como Posicionar Objetos 3D

Se explica como posicionar un modelo 3D en cualquier lugar y orientación del espacio. Esta operación es la que permite construir grandes mundos virtuales a partir de unos pocos modelos que cambian de lugar.

Introducción a la Vista 3D

Lo minimo a saber para entender como funciona la vista 3D. Aquí se explica lo que es un plano de proyección y los rayos proyectores. Así como las proyecciones de vista mas importantes como la Paralela y la Perspectiva.

Proyeccion en Perspectiva

Aquí se describe como funciona la vista 3D en primera persona y se muestran las ecuaciones necesarias para convertir puntos del espacio a puntos en el plano de proyeccion. Puede que les sorprenda ver que estas ecuaciones no son tan complicadas como seguro creian que lo eran antes de leer esta entrada.

Práctica de Proyección en Perspectiva

Aquí se muestra un ejemplo de como generar una vista en primera persona de un objeto 3D. En este caso se trata de un cubo visto desde un punto lejano. Con un poco de imaginación pueden imaginarse que es lo que vería un francotirador colocado pecho tierra quien espera que su blanco salga de un edificio.

Coordenadas de Referencia Visual

En un mundo virtual es posible hacer aparecer una cámara en cualquier lugar del espacio y hacer que tome una foto de nuestra escena 3D. Aquí se explica como construir un sistema de coordenadas de referencia visual (o simplemente una cámara) con solo 2 puntos y un vector.

La última actualización de este directorio fue el 25 de diciembre del 2011. Revisa esta página de vez en cuando para encontrar nuevas actualizaciones.

diciembre 26, 2011 - Posted by | Uncategorized | , , ,

7 comentarios »

  1. Hola Mario, felicidades por este tutorial sobre programación de juegos que te armaste, veo que el mismo esta bastante trabajado y como no sabia en donde mas comentarlo, también me entere de un curso sobre teoría de los juegos que te puede interesar. Lo dará la universidad de Stanford, comienza en febrero y es gratuito. Para inscribirse solo hay que ir a http://www.game-theory-class.org y si quieres mas información sobre otros cursos que ofrecen, solo hay que ir a http://www.sorayapaniagua.com/2011/11/21/once-cursos-gratuitos-de-la-universidad-de-stanford-para-2012/

    Comentarios por Swicher | diciembre 29, 2011 | Responder

    • Voy a tomarlo en cuenta. Si la informacion es buena no importa si viene de una prestigiosa institucion educativa o de un demente que escribe sus delirios en internet

      Comentarios por asm86 | enero 11, 2012 | Responder

  2. WOW! Felicidades es sorprendente, de verdad a primera vista como que da frió de solo pensar en ensamblador. Pero a todo nos acostumbramos

    Comentarios por visionaxe | octubre 5, 2012 | Responder

  3. Camarada deberas seria un honor conocerte aunque sea por skype tienes tremendos conocimientos de todo un poco y la forma en que das explicaciones me resulta mas claro que de otras fuentes

    Comentarios por DNX | abril 7, 2014 | Responder

  4. Hola Mario, estuve buscandote de alguna manera, mi perfil de twitter lo habian desactivado, ademas de mis 18 cuentas de facebook, tampoco te pude conseguir, soy un antiguo diseñador y programador de videojuegos (programador-diseñador 3d,2d, diseñador grafico, pixel art, concept art, todo eso) y un viejo hacker (de Anonymous) con 16 años, domino mucho Asm (Int 10h, int 16h), pero tengo algunas dudas con Vesa (0x112,0x115,0x118,0x11B) ya como sabias, soy un creador de videojuegos, un dia se me ocurrio jugar mis viejos juegos de la nes, y se me ocurrio aprender a como programarlos, para hacer uno, tambien tenia conocimiento de como dominar los Pic en asm, y todo lo que tiene que ver con fisica, hasta que llegue a imaginar crear un videjuego a punta de Asm para 8086, hasta ahora he descontinuado tal cosa, para hacer un sistema operativo de 32 bits, y luego crear el videojuego para tal sistema, como te dije, tengo conocimiento completo de todos esos temas, pero al imaginarmelos haciendo con Asm, se me parte la cabeza, como hacer un Cubo 3d a punta de Asm?, cosas asi, Mario gracias por enseñar. Aqui esta mi Url de Fb, ya que por direccion de correo electronico no me vas a encontrar, dificilmente me conecto a correo electronico, podemos hablar, y quizas te enseñe a crear videojuegos de la manera mas dificil. Suerte y Saludos. https://www.facebook.com/Ahoraquitatedelfrente

    Comentarios por Rojas Sanchez Jose Orlando | diciembre 2, 2014 | Responder

  5. Por cierto un cubo 3D (8 vertex, 6 face, 12 edges) se genera en menos de 1 segundo en Blender.

    Comentarios por Rojas Sanchez Jose Orlando | diciembre 2, 2014 | Responder

  6. Oye que interesante.

    Comentarios por Kan yau | noviembre 20, 2020 | Responder


Deja un comentario