Este documento describe los motores gráficos, incluyendo su historia, tipos y técnicas. Explica que un motor gráfico controla y actualiza los gráficos 3D en tiempo real y que se han desarrollado varios motores importantes como Quake, Unreal y Unity. También cubre conceptos como renderizado, árboles BSP, radiosidad y mipmapping que son utilizados por los motores gráficos.
2. Introducción
1 – ¿Qué es un Motor Gráfico?
2 – Historia de los Motores Gráficos
3 – Tipos de Motores Gráficos
4 – Conclusión, Tendencias futuras
3. ¿Qué es un Motor Gráfico?
Definición
El motor gráfico es la parte de un programa que controla,
gestiona y actualiza los gráficos 3D en tiempo real.
Entre los engines más utilizados destacan el del Quake III y el de
Unreal Tournament.
Se puede utilizar un mismo motor gráfico para desarrollar
diferentes juegos.
Es una de las partes más importantes a la hora de desarrollar
juegos 3D.
4. ¿Qué es un Motor Gráfico?
Definición
El Software que se crea está más
avanzado que el Hardware que lo
puede soportar.
Los programadores tienen que
crear objetos con menos polígonos
sin perder detalle y sin perder
potencia.
5. ¿Qué es un Motor Gráfico?
¿Cómo funciona?
Enviar a la CPU los datos que necesita para el próximo frame.
En un juego de coches tendríamos en cuenta: formulas de
velocidad, la fricción, vectores, sistema de movimiento y un largo
etcétera.
En un juego donde disparas, el motor crea un vector de recorrido
de la bala y sabe donde impactará ( enemigo, pared, etc. ).
Los engines facilitan la programación de juegos y aplicaciones de
diseño sin necesidad de enfrentarse desde cero al lenguaje de
programación utilizado en cuestión.
7. Historia de los Motores Gráficos
Inicio
Primeros intentos en el desarrollo de videojuegos en 3D
La SNES ya contaba con chips SUPER FX para crear mundos en 3D
Sin embargo, la mayoría de los supuestos juegos 3D estaban basados
en SPRITES y los que podrían ser realmente 3D no se podían considerar
que tuviesen un motor gráfico exclusivo.
8. Historia de los Motores Gráficos
Inicio
Alone in the Dark baso su peculiar motor gráfico en crear los personajes,
objetos y enemigos en 3D.
Basado en polígonos y en un sistema de cámaras, se puede conseguir
un entorno 3D donde el jugador puede controlar al personaje en un mundo
que no es 3D, simplemente sin imágenes.
9. Historia de los Motores Gráficos
Línea del Tiempo
Id Software comienza el
desarrollo de revolucionarios
motores gráficos.
John Carmak es
considerado el mejor
programador de engines.
19 19 19 19 19 19 19 19 19 20 20 20
91 92 93 94 95 96 97 98 99 03 05 06
10. Historia de los Motores Gráficos
Línea del Tiempo
Aparece el primer juego 3D,
Wolfenstein 3D.
Ángulos de 90º, altura de
paredes fija y elementos en 2D.
19 19 19 19 19 19 19 19 19 20 20 20
91 92 93 94 95 96 97 98 99 03 05 06
11. Historia de los Motores Gráficos
Línea del Tiempo
Aparece el DOOM con su
motor mejorado.
Nuevos escenarios como
escaleras, ascensores,
ventanas…
19 19 19 19 19 19 19 19 19 20 20 20
91 92 93 94 95 96 97 98 99 03 05 06
12. Historia de los Motores Gráficos
Línea del Tiempo
Juegos como HERETIC,
HEXEN basados en el engine
del DOOM mejorado.
También surgieron otros
juegos apoyándose de la misma
base del DOOM.
19 19 19 19 19 19 19 19 19 20 20 20
91 92 93 94 95 96 97 98 99 03 05 06
13. Historia de los Motores Gráficos
Línea del Tiempo
Nueva revolución, aparece el
QUAKE.
Prácticamente todo es en 3D
y no hay limitaciones de ángulos,
paredes o suelos.
19 19 19 19 19 19 19 19 19 20 20 20
91 92 93 94 95 96 97 98 99 03 05 06
14. Historia de los Motores Gráficos
Línea del Tiempo
Aparece DUKE NUKEM 3D
compitiendo con QUAKE y
DOOM
19 19 19 19 19 19 19 19 19 20 20 20
91 92 93 94 95 96 97 98 99 03 05 06
15. Historia de los Motores Gráficos
Línea del Tiempo
QUAKE II con nuevo motor
usado por otros juegos
populares como Soldier of
fortune y Half-Life.
Pionero en la implementación
de aceleración de gráficos por
Hardware.
19 19 19 19 19 19 19 19 19 20 20 20
91 92 93 94 95 96 97 98 99 03 05 06
16. Historia de los Motores Gráficos
Línea del Tiempo
Competidor del QUAKE II,
UNREAL de mano de EPIC
MEGAGAMES.
Es el segundo engine que más
licencias ha vendido para ser
utilizado en otros juegos.
19 19 19 19 19 19 19 19 19 20 20 20
91 92 93 94 95 96 97 98 99 03 05 06
17. Historia de los Motores Gráficos
Línea del Tiempo
El contraataque de Id Software
es QUAKE III. Optimización
máxima.
Este juego llega a usarse para
comprobar el rendimiento de
tarjetas gráficas.
19 19 19 19 19 19 19 19 19 20 20 20
91 92 93 94 95 96 97 98 99 03 05 06
18. Historia de los Motores Gráficos
Línea del Tiempo
Epic Megagames lanza el
Unreal Tournament 2003 y el
Unreal 2.
Con las altas velocidades de
Internet están basados en
juegos en red.
19 19 19 19 19 19 19 19 19 20 20 20
91 92 93 94 95 96 97 98 99 03 05 06
19. Historia de los Motores Gráficos
Línea del Tiempo
Nueva obra maestra de Id,
Software, DOOM III.
Iluminación fotorealista y
sensación de terror.
19 19 19 19 19 19 19 19 19 20 20 20
91 92 93 94 95 96 97 98 99 03 05 06
20. Tipos de Motores Gráficos
Lista de engines
Crystal Space V3X Blimey 2
Fly3D Irrlicht
Unreal JPCT
Torque V12 Apocalyx
Quake 2
21. Tipos de Motores Gráficos
Diferentes Técnicas usadas
Renderizado
Proceso de conversión de dibujo 3D con
texturas y luz hecho por la computadora o la
consola
El procesador de una computadora o una
consola entiende las gráficas de los juegos de
3D como coordenadas en un plano cartesiano
de tres dimensiones
22. Tipos de Motores Gráficos
Diferentes Técnicas usadas
Árboles BSP
Es una estructura de datos usados
para organizar objetos dentro de un
espacio
Tiene aplicaciones en la remoción
de áreas ocultas y en el trazado de
rayos
23. Tipos de Motores Gráficos
Diferentes Técnicas usadas
Radiosidad
Técnica para el cálculo de la
iluminación global de un ambiente
cerrado
La idea en que se basa esta
técnica es buscar el equilibrio de la
energía que es emitida por los
objetos emisores de luz y la
energía que es absorbida por los
objetos en el ambiente.
24. Tipos de Motores Gráficos
Diferentes Técnicas usadas
MipMapping
Técnica de manejo de texturas que
cambia la textura de un polígono en un
objeto 3D dentro de un juego según el
ángulo de vista del jugador ó las
condiciones del juego.
Conforme nos acercamos a un objeto,
éste gana calidad. De esta forma
objetos alejados tendran un nivel de
resolucion bajo y objetos cercanos alto.
Conseguimos mayor rendimiento.
25. Tipos de Motores Gráficos
Diferentes Técnicas usadas
Phong y Gourand
Gourand se basa en que los polígonos
aproximan una superficie curva.
Se calculan las intensidades de los
vértices.
Pong interpola las normales en lugar de las
intensidades
26. Tipos de Motores Gráficos
Diferentes Técnicas usadas
Bump-Mapping
Se utiliza para agregar el detalle a una
imagen sin aumentar el número de
polígonos.
Nos basamos en algoritmos que captan
la textura inicial de la imagen y la
convierten en otra.
Crea pequeños Bump mapping en la
superficie del objeto para darle texturas
sin cambiar la superficie del objeto.
27. Tipos de Motores Gráficos
Diferentes Técnicas usadas
Lightmas
Esta técnica se empezó a usar en el
1996, y la crearon la gente de Id
Software en el Quake.
Los lightmaps (mapas de luz)
simplemente consisten en añadir una
segunda textura a todas y cada una de
las caras existentes en una escena 3D.
Es un buen método para ahorrarnos el
uso de la Radiosidad.
28. Tipos de Motores Gráficos
Crystal Space
Características
Renderizado en Portales y Sectores Bumpmapping
Árboles BSP Phong
Zbuffering Gouraud
Radiosidad Sprites 2D y 3D
Detección de colisiones Superficies de Bezier
Lightmaps Mipmapping
Plataformas
Otros
30. Tipos de Motores Gráficos
Fly3D
Características
Renderizado en Portales y Sectores
Árboles BSP y PVS
Sistema de Plugins
A* optimizado
Detección de colisiones
Lightmaps
meshes animadas
Plataformas
Otros
32. Tipos de Motores Gráficos
Unreal
Características
Renderizado en Portales y Sectores Bumpmapping
Árboles BSP, PVS y LOD Phong y Gouraud
Sistema de Plugins UnrealScript
Detección de colisiones Raytracing
Lightmaps Escalabilidad
meshes animadas Mipmapping
Radiosidad enveloped lighting
Plataformas
Otros
33. Tipos de Motores Gráficos
Genesis3D
Características
Renderizado en Portales.
Árboles BSP y LOD
Sistema de Plugins
Detección de colisiones
Radiosidad
luces multicolores y dinámicas
Plataformas
Otros
34. Tipos de Motores Gráficos
Torque V12
Características
Renderizado en Portales y Sectores.
Meshes LOD
Detección de colisiones
Radiosidad
Texture Mapping
MidMapping
Lightmaps
Plataformas
Otros
35. Tipos de Motores Gráficos
Quake2
Características
Renderizado en Portales y Sectores Bumpmapping
Árboles BSP Phong y Gouraud
Zbuffering Mipmapping
Radiosidad Dll’s
Detección de colisiones
Lightmaps
Plataformas
Otros
36. Tipos de Motores Gráficos
Irrlicht
Características
Motor 3D multiplataforma de alto rendimiento de código abierto
para crear aplicaciones en tiempo real 3D. Sus características
principales son ser fácil de utilizar, extremadamente rápido
extensible y libre de fallos.
Plataformas
Multiplataforma
Otros
37. Tipos de Motores Gráficos
JPCT
Características
Es un motor gráfico 3D con API para Java. Requiere Java 1.1
o superior y puede ser usado para hacer aplicaciones y
applets. Soporta software de renderizado así como hardware
de renderizado vía OpenGL( Java 1.4).
Multiplataforma
W-buffer de 32 bits
Plataformas
Multiplataforma
Otros
38. Tipos de Motores Gráficos
Apocalyx
Características
Sencillo engine escrito en OpenGL, con algunas
características interesantes, como son el interface de scripting
LUA, simulación del agua, de ropa…
Plataformas
Otros
39. Conclusión
Tendencias Futuras
Actualmente, todos los motores gráficos que existen
utilizan las mismas técnicas (radiosidad, mapping, …),
sólo que con mayor potencia.
La evolución en este tema practicamente surgio entre
el 1991-2000, 10 años creando nuevos motores ( tanto
basandose en otros o creando otros nuevos ).
Hoy en dia, aunque se siguen desarrollando desde
cero nuevos motores gráficos, muchas empresas
compran el código de engines ya desarrollados, los
adaptan a los juegos de ahora ( aumento de poligonos,
más efectos, sonido 3D…)
40. Conclusión
Tendencias Futuras
Blimey 2 es uno de los motores gráficos que utilizará la
PlayStation 3, la Xbox 360 e incluso la PSP.
Actualización de Blimey ( MotoGP, Moto GP2… ) con
una mayor potencia, efectos sonoros mejorados,
librerias optimizadas para las plataformas que lo
soportan, etc.
Hinweis der Redaktion
Hay varias definiciones que explican que es un motor gráfico y como funciona.
Explicar que se puede crear un Motor Gráfico y luego decirle que trabaje con un numero de poligonos, pero que si el hardware no lo aguanta entonces no se vera con claridad. Con menos poligonos se pueden crear personas, objetos y animales con una alta definicion.
Actualmente hay mas de 700 engines, la mayoria de ellos utilizados en los juegos tanto de ordenador como en consolas. Los mas conocidos de arriba el Quake, Unreal.
Crystal Space is a free (LGPL) and portable 3D Game Development Kit written in C++. It supports: true six degrees of freedom, colored lighting, lightmapped and stencil based lighting, shader support (CG, vertex programs, fragment programs, ...), mipmapping, portals, mirrors, alpha transparency, reflective surfaces, 3D sprites (frame based or with skeletal animation using cal3d animation library), procedural textures, particle systems, halos, volumetric fog, scripting (using Python, Perl, Java, or potentially other languages), 16-bit and 32-bit display support, OpenGL, and software renderer, font support (also with freetype), hierarchical transformations, physics plugin based on ODE, ... See the extensive list of features for more details. Crystal Space currently runs on GNU/Linux, general Unix, Windows, Windows NT, and MacOS/X. It can optionally use OpenGL (on all platforms), SDL (all SDL platforms), X11 (Unix or GNU/Linux) and SVGALIB (GNU/Linux). It can also optionally use assembler routines using NASM and MMX. Crystal Space is a large open source project. There are about 700 people subscribed to the Crystal Space mailing list (see the Contact Page for more information about how to subscribe).
Crystal Space is a free (LGPL) and portable 3D Game Development Kit written in C++. It supports: true six degrees of freedom, colored lighting, lightmapped and stencil based lighting, shader support (CG, vertex programs, fragment programs, ...), mipmapping, portals, mirrors, alpha transparency, reflective surfaces, 3D sprites (frame based or with skeletal animation using cal3d animation library), procedural textures, particle systems, halos, volumetric fog, scripting (using Python, Perl, Java, or potentially other languages), 16-bit and 32-bit display support, OpenGL, and software renderer, font support (also with freetype), hierarchical transformations, physics plugin based on ODE, ... See the extensive list of features for more details. Crystal Space currently runs on GNU/Linux, general Unix, Windows, Windows NT, and MacOS/X. It can optionally use OpenGL (on all platforms), SDL (all SDL platforms), X11 (Unix or GNU/Linux) and SVGALIB (GNU/Linux). It can also optionally use assembler routines using NASM and MMX. Crystal Space is a large open source project. There are about 700 people subscribed to the Crystal Space mailing list (see the Contact Page for more information about how to subscribe).
Fly3D is a 3D engine for Windows by Fabio Policarpo ( fabio@paralelo.com.br ). Single front-end app supporting OpenGL (1.1) / Direct3D (DirextX 6.1) windowed / full-screen Editor for .fly files with realtime preview in windows explorer style Support for plugin dlls (make new games just writing new plugins) Visual C++ wizard for making fly3d plugins Perspective shaded texture mapping Static and dynamic lightmaps Dynamic shadows and soft-shadows, dynamic lightmap shadows Stencil buffer shadows support Dynamic volumetric fog with fogmaps Detail textures Curved bezier extrudes and lofts with lightmaps BSP/PSV rendering Transparency Volumetric fog using fogmaps Cartoon rendering Faster collision detection Adaptative subdivided bezier surfaces (extrude and loft) Multiplayer support Server frontend for client/server multiplayer Client/server playable deathmatch demo 3D sound support Lighting tool for static level lighting PVS tool for computing visibility 3DS MAX bsp import/export, texture mapping and landscape object plugins Fly3d plugins (jumppads, fogsphere, fogbox, ...) and sample level (q3test2 clone) Quake2 level converter Quake3 level import utility (geometry, textures and curved surfaces) Data files packing Particle systems Console window, also for server frontend Written in C++ (Visual C++ 5.0) Complete SDK with source code for all demo plugins More information, screenshots, the sdk and a demos can be found on the Fly3D Homepage . The engine will be featured in the book 3D Computer Game Technology - Theory and Practice from Alan Watt and Fabio Policarpo (Addion Wesley).
Fly3D is a 3D engine for Windows by Fabio Policarpo ( fabio@paralelo.com.br ). Single front-end app supporting OpenGL (1.1) / Direct3D (DirextX 6.1) windowed / full-screen Editor for .fly files with realtime preview in windows explorer style Support for plugin dlls (make new games just writing new plugins) Visual C++ wizard for making fly3d plugins Perspective shaded texture mapping Static and dynamic lightmaps Dynamic shadows and soft-shadows, dynamic lightmap shadows Stencil buffer shadows support Dynamic volumetric fog with fogmaps Detail textures Curved bezier extrudes and lofts with lightmaps BSP/PSV rendering Transparency Volumetric fog using fogmaps Cartoon rendering Faster collision detection Adaptative subdivided bezier surfaces (extrude and loft) Multiplayer support Server frontend for client/server multiplayer Client/server playable deathmatch demo 3D sound support Lighting tool for static level lighting PVS tool for computing visibility 3DS MAX bsp import/export, texture mapping and landscape object plugins Fly3d plugins (jumppads, fogsphere, fogbox, ...) and sample level (q3test2 clone) Quake2 level converter Quake3 level import utility (geometry, textures and curved surfaces) Data files packing Particle systems Console window, also for server frontend Written in C++ (Visual C++ 5.0) Complete SDK with source code for all demo plugins More information, screenshots, the sdk and a demos can be found on the Fly3D Homepage . The engine will be featured in the book 3D Computer Game Technology - Theory and Practice from Alan Watt and Fabio Policarpo (Addion Wesley).
EasyGen3D is an OpenSource wrapper for the Genesis 3D library from Matthew Ellis ( matt@magmagames.com ). Easy setup of Genesis3D Easy scene setup Support for Gravity, Coronas, Electric bolts and dynamic lighting Texture loading C source for Visual C++ 6.0 More information and the SDK can be found on Genesis 3D Homepage .
ID Software's lead programmer John Carmack has released the full source code of Quake, including the WinQuake, GLQuake, QuakeWorld, and GLQuakeWorld versions. Lightmapped, perspective texture mapping Transparency and alpha textures Support for OpenGL BSP and PVS support Surface caching Hierarchical polygonal models Particle systems Collision detection Dynamic lights Multiplayer network support Sound support Console The C/ASM source for Visual C++ 6 is under GPL (gnu public license) The source is available at the Q1 Source Download Homepage .
jPCT is a Java 3D engine from Helge Förster ( fr@activezone.org ). Perspective texture mapping with 16 pixel scanline-subdivision 24 bit RGB perspective correct Gouraud-shading 24 bit textures and framebuffe 32 bit high accuracy W-Buffer Sub-pixel and sub-texel accuracy 2D/3D clipping Any texture-size supported (256*256 used in the demo) 6DOF movement More information and the applet can be found on the Homepage of Helge Förster .