Manual 3Dit Extensión para BennuGD Bullet 3D 1. Introducción a

Transcripción

Manual 3Dit Extensión para BennuGD Bullet 3D 1. Introducción a
Manual 3Dit
Extensión para BennuGD
Bullet 3D
1. Introducción a 3Dit
3Dit ha sido desarrollado por TRINIT Asociación de Informáticos de Zaragoza (http://trinit.es) y
consiste en una sencilla extensión para BennuGD (http://bennugd.org) que permite usar el motor Bullet 3D
(http://bulletphysics.org) facilitando significativamente el acceso a sus funciones.
3Dit te permitirá programar videojuegos en 3D utilizando el motor Bullet 3D de una forma idéntica a como se
programan los videojuegos en 2D con BennuGD, por lo que cualquier persona mínimamente familiarizada con
la programación de videojuegos con BennuGD podrá comenzar a programar inmediatamente con Bullet 3D
gracias a las funciones de 3Dit.
Esta extensión se distribuye bajo licencia LGPL y tienes derecho a utilizarla, difundirla e incluso modificarla
para otros propósitos siempre y cuando cites a TRINIT Asociación de Informáticos de Zaragoza como los
autores originales de la misma.
Sinceramente esperamos que disfrutes de su uso y agradeceremos cualquier comentario, crítica o
sugerencia de mejora. Si se te ocurre cualquier cosa puedes enviar un correo electrónico a [email protected]
donde estaremos encantados de atenderte.
2. Instrucciones para usar 3Dit
A continuación detallamos las instrucciones necesarias para utilizar 3Dit en tus videojuegos y
realizamos una breve descripción de las funciones y utilidades que ofrece.
3Dit es un módulo que puede ser incluido directamente en cualquier proyecto realizado con BennuGD.
Además de cargar el motor Bullet 3D desarrollado por Colombian Developers (http://3dm8ee.blogspot.com)
nos ofrece una serie de funciones que facilitan su uso para las tareas más habituales.
Para utilizar 3Dit en tu videojuego es suficiente con que copies el directorio /3dit en tu proyecto e incluyas
con la sentencia INCLUDE el módulo 3dit.prg que se encuentra dentro de él en tu proyecto. Si no estás
familiarizado con el trabajo con módulos en BennuGD te lo ponemos igual de fácil, ya que puedes utilizar
cualquiera de las plantillas de 3Dit para comenzar a programar, ya que incluyen las principales librerías dll y
todo lo necesario para editar un nuevo proyecto y trabajar a partir de él.
Manual 3Dit Extensión para BennuGD
Pág. 1
Manual 3Dit
Extensión para BennuGD
Bullet 3D
2.1 Hacer un proceso compatible con 3Dit
Si has utilizado BennuGD habrás comprobado que todo proceso tiene una serie de variables locales
que permiten modificar una serie de aspectos básicos como su posición en pantalla, su tamaño, su ángulo de
rotación, el fichero de gráficos que utiliza, el número de gráfico que muestra dentro de dicho fichero y el
efecto gráfico que se aplica sobre dicho gráfico.
Las citadas variables locales son: x, y, z, size, angle, file, graph y flags.
3Dit es capaz de utilizar variables similares a las locales anteriormente citadas en cualquier proceso de
forma que resulten aplicadas en un videojuego en 3D que utiliza Bullet3D como motor gráfico. Puede parecer
un concepto complicado, pero te aseguramos que 3Dit está construido de forma que sea lo más sencillo
posible, su principal objetivo es precisamente ese, que cualquier persona con unos conocimientos básicos de
programación de videojuegos con BennuGD pueda comenzar de una manera inmediata a programar
videojuegos con Bullet 3D.
Para hacer cualquier proceso de BennuGD compatible con 3Dit es imprescindible que la primera instrucción
que ejecute dentro de su bloque de instrucciones (BEGIN – END) sea una invocación al proceso make_3dit ( );
make_3dit ( ) es un proceso que se encarga de gestionar los cambios en las variables locales de su proceso
padre (father) para que su aplicación resulte en una modificación de la escena en 3D.
2.2 Cargar modelos 3D y texturas con 3Dit
Los modelos y texturas asociadas a ellos son cargadas respectivamente sobre las variables locales
file y graph de cualquier proceso compatible con 3Dit. Para ello 3Dit ofrece 2 sencillas funciones en las que
podemos cargar estos ficheros y resultarán cargados directamente en la escena de la misma manera que
se hace con cualquier proceso 2D de BennuGD.
Manual 3Dit Extensión para BennuGD
Pág. 2
Manual 3Dit
Extensión para BennuGD
Bullet 3D
Función
Utilización en 3Dit
load_model ( string )
Recibe como parámetro la ruta del fichero con el modelo 3D a mostrar por el
proceso actual. Admite cualquiera de los formatos de modelo 3D soportados
por Bullet 3D.
load_texture ( string )
Recibe como parámetro la ruta del fichero con la textura a aplicar sobre el
modelo 3D cargado en la variable local file. Es necesario que previamente haya
sido cargado un modelo 3D válido en la variable file.
Si el modelo 3D cargado en la variable file ya ha tenido aplicada previamente
una textura se puede sustituir con otra cargándola de nuevo con esta función.
2.3 Otras operaciones de movimiento, rotación y escala con 3Dit
Una vez realizada la carga del modelo 3D (Con o sin textura) ya es posible hacer uso del resto de las
variables locales de cualquier proceso en BennuGD que hacen referencia a su posición, rotación y escalado.
Todas ellas tendrán su resultado en 3D, con unos pequeños cambios que citamos a continuación:
Variable LOCAL Utilización en 3Dit
position
Con los campos x, y, z indica la posición del proceso actual en la escena 3D.
rotation
Con los campos x, y, z indica la rotación del proceso actual en la escena 3D, medida en
grados.
scale
Con los campos x, y, z indica la escala del proceso actual en la escena 3D, en tanto por 1.
state
Este entero indica el estado de animación que realizará el modelo cargado por el
proceso actual. Esta variable sólo tiene aplicación sobre modelos en formato .md2
cuyos estados están enumerados entre 0 y 15 indicando los estados: Quieto, Correr,
Golpear, etc.
Manual 3Dit Extensión para BennuGD
Pág. 3
Manual 3Dit
Extensión para BennuGD
Bullet 3D
Las modificaciones realizadas sobre los campos x, y, z de la variable position citada anteriormente
posicionarán el modelo en cualquiera de los ejes x, y, z, respectivamente. Esto resulta útil, pero habrá
ocasiones en las que queramos obtener un posicionamiento en función del ángulo de giro del modelo. Por
ejemplo, si tenemos un enemigo que está rotado 45 grados en el eje y, nos resultaría complicado que avance,
ya que debería avanzar ”cierta” distancia en el eje x y “cierta” distancia en el eje z.
El cálculo de esa distancia se basa en funciones trigonométricas que pueden resultar complejas para
quienes no estén familiarizados con el uso de las funciones seno y coseno. Afortunadamente 3Dit incluye una
función que se encarga de realizar cierto avance del modelo 3D en función de su ángulo de rotación, sin
necesidad de tener que realizar cálculos. Se trata de la función advance3D ( )
Función
Utilidad
Advance3d ( float )
La función recibe un parámetro de tipo real (float) y hace que el modelo
avance esa distancia en la dirección que le corresponde según su ángulo de
rotación en el eje y. El parámetro es real y puede recibir valores negativos
para hacer que el modelo retroceda una cierta distancia en lugar de avanzar.
Manual 3Dit Extensión para BennuGD
Pág. 4

Documentos relacionados