Download Manual 3Dit Extensión para BennuGD Bullet 3D 1. Introducción a
Document related concepts
no text concepts found
Transcript
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 trinit@trinit.es 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