Trixion3D

Simple motor gráfico 3D (simple 3D graphics engine) escrito en C# y utilizando OpenTK. Las siguientes dos imágenes o vídeos corresponden a la última versión publicada (Fondo de las letras en verde). Trixion3D es código abierto bajo la licencia GNU GPL versión 3.

Trixion3D v11.XX pre-alpha (Fecha de publicación: XX de XXXXX de 2011)

Trixion3D v10.12 pre-alpha (Fecha de publicación: 22 de Diciembre de 2010)

Conclusión (21 de diciembre de 2010) :

Trixion3D v10.12 es un trabajo inacabado pero demuestra hacia donde debe evolucionar el motor gráfico 3D (juego). El desarrollo de la inteligencia artificial de las entidades del juego no es algo trivial, por contra, es bastante complicado y en este aspecto juega un papel muy importante una correcta y rápida detección de colisiones. Quizás me he dejado llevar por el aspecto visual (animaciones, partículas, modelos de quake), ahora pienso que debo fortalecer los cimientos del entorno de juego centrándome en el motor físico o dinámico y en el soporte de Shaders (GLSL) y estas serán las líneas maestras que voy a seguir en la próxima versión.

Conclusiones previas a la publicación del proyecto (12 de diciembre de 2010)

La versión 10.12 de Trixion3D no será un proyecto acabado, a día de hoy intento acabar una decente inteligencia artificial del juego pero resulta más complicado de lo esperado, no obstante, publicaré el código fuente el día señalado esté en el estado que esté.

    1. Sobre las animaciones de los actores (modelos md3): Para conseguir un frame rate (frames por segundo FPS) adecuado con un número de entre 20 y 40 actores he tenido que desactivar la interpolación de las mallas. La animación de las etiquetas (tags) sí está interpolada, es decir, el movimiento de los diferentes modelos que componen el actor es suave. Esto se puede observar activando el modo tiempo bala (bullet time). Todos los datos de vértices e índices residen en la memoria de la tarjeta gráfica VBO y IBO, aún así, cuando inserto 80 actores en la escena el frame rate promedio máximo se establece en 43 FPS, lo que considero bastante bajo. Decidí utilizar los modelos md3 esperando conseguir un adecuado frame rate sin tener que utilizar aceleración por hardware, y esto es así para un número bajo de actores pero yo espero poder manejar del orden de 200 actores en escena. Entiendo que debo utilizar la potencia de la GPU para realizar las interpolaciones y representación de las mallas y en este caso los modelos md3 ya no me interesan, prefiero utilizar los modelos md5 (Doom 3), y esta será la opción a seguir en la próxima versión del motor basándome en el código proporcionado por este enlace Steps3D-Animación de esqueleto. Por cierto, si alguien está leyendo esto y decide portar el código fuente del enlace anterior de C++ a C# utilizando OpenTK y compartirlo conmigo me ahorraría mucho trabajo y aceleraría el desarrollo de la próxima versión del motor.

    2. La mayor parte del código que gestiona las sombras está contenido en las clases propias de los actores md3 dentro del espacio de nombres "Quake3", ahora esto lo considero un error y en próximas versiones moveré este código dentro de la clase "GEngine (GraphicsEngine)", de esta forma no es necesario preocuparse sobre como se dibuja la sombra solo hay que enviar las mallas y el motor gráfico aplica la sombra automáticamente, así es como estaba implementado en Trixion3D v10.02.

La nueva versión se retrasa al mes de Diciembre (24 de noviembre de 2010) :

¡No ha podido ser! actualmente estoy programando la lógica de juego y está resultado más complicado de lo esperado. En la imagen siguiente muestro como Trixion3D maneja grupos de actores, solo se carga un único modelo pero se representan varios con el consiguiente ahorro de memoria y tiempo de carga. Cargar, como en este caso, 20 modelos directamente implica una cantidad de tiempo inaceptable, al usar grupos de actores el tiempo de carga es el mismo que cargar uno solo.


Disponible para descarga la adaptación a C# del proyecto "AssortedWidgets" (24 de octubre de 2010): He concluido la adaptación parcial a C# del proyecto "AssortedWidgets pre-alpha". Aunque es parcial, los widgets más útiles han sido portados. El propósito de esta adaptación de nombre "CsAssortedWidgets" es adquirir conocimiento en la implementación de un GUI sobre OpenGL y como un punto de partida para una implementación propia y mejorada que se llamará "CSGUI".

La nueva versión se retrasa al mes de Noviembre (19 de octubre de 2010) :

¡Tiempo, tiempo y tiempo!. Lo he intentado pero no he podido terminar la nueva versión para octubre, la causa de este retraso ha sido principalmente que he descubierto un GUI "Graphical User Interface" que me ha fascinado y que he decidido portar a C# (ver imagen "Futuro Proyecto CsGUI") e integrar parcialmente en la nueva versión de Trixion3D. Este proyecto es "AssortedWidgets" está escrito en C++, y me ha gustado que el sistema que implementa para el soporte de temas de texturas es el mismo que yo tenia en mente. Es agradable comprobar que otros programadores han elegido caminos similares al tuyo. La idea es que la apariencia del GUI sea uniforme tanto en Windows como en Linux y en este caso así es, hay ligeras variaciones pero son insignificantes.

Novedades (18 de Septiembre de 2010):

Trixion3D ha sido reescrito por completo para que sea más simple, en la versión anterior (Trixion3D v10.02) estaba contemplado el que Trixion3D pudiera utilizar otro sistema de renderizado como DirectX o por Software, a partir de esta nueva versión el único sistema de render será OpenGL via OpenTK. Para esta versión me he centrado en el total soporte de los modelos de Quake 3 (md3), ahora será posible que estos puedan disparar y de esta forma poder establecer una lógica de juego mínima (unos jugadores buscan a sus oponentes, les disparan y resulta vencedor el que queda en pie). En esta nueva versión, características que estaban implementadas en la versión anterior no se implementarán en esta nueva versión por una simple cuestión de tiempo, me he propuesto liberar Trixion3D en octubre.

Futuro Proyecto "CsGUI"

Sobre Trixion3D 10.12 (18 de Septiembre de 2010)

    • El soporte de modelos de Quake 2 (md2) y de Doom 3 (md5mesh - Md5Versión 10) no se implementa en esta versión, se implementará en versiones posteriores.

    • CsGUI se implementará en versiones posteriores, en esta versión solo se implementará texto en pantalla.

    • Sobre ODE en principio lo voy a sustituir por Jitter-Physics, se implementará en versiones posteriores.

Por hacer:

    • Documentación detallada.

    • Limpieza y optimización de código, concretar una API.

  • Mejorar la integración con ODE.

  • Completo rediseño del GUI. Este pasará a ser un proyecto independiente de Trixion3D de nombre "CsGUI", soportará temas basados en texturas.

    • Soporte de modelos de Quake 3 (md3) y animaciones. Hecho (23-Julio-2010)

    • Traducción al ingles de todos los nombres del código (variables, métodos, propiedades, etc), comentarios en español. Hecho (13-Mayo-2010)

Trixion3D v10.02 pre-alpha (Fecha de publicación: 28 de Febrero de 2010)

https://sites.google.com/site/bitiopia/archivos/Trixion3D_v10.02_pre-alpha.7z?attredirects=0

Características:

    • Carga y visualización de modelos de Quake 2 (md2) y de Doom 3 (md5mesh - Md5Versión 10) y animaciones en ambos.

    • Integración básica con el engine dinámico Open Dynamics Engine (ODE).

    • GUI (Graphics User Interface) básico:

Widgets

      • Ventanas

      • Pulsadores (Botones)

      • Paneles

      • Etiquetas

    • Sombras planas.

    • Dos modos de cámara:

      • RTS modo de estrategia en tiempo real (Real Time Strategy)

      • FFC modo de control en vuelo libre (Free Flight Control)

    • Caja de cielo (SkyBox)

    • Texto

Safe Creative #1002285650504