Descargué el archivo de lanzamiento que se encuentra aquí , pero no estoy seguro de por dónde empezar. En mi juego tengo varios oblongos y una esfera, quiero que todos estos choquen entre sí. (Todos tienen mallas y volúmenes delimitadores asociados)
editar - Acabo de darme cuenta de que los cuboides en realidad tienen AABB asociados con ellos. Creo que tendré que cambiar eso al menos.
¿Cuáles son los pasos que debo seguir?
c++
directx
physics-engine
bullet-physics
Sir Yakalot
fuente
fuente
4.4 Integration overview
? Sé que es muy espartano, pero describe el proceso básico. Entonces, si mira eso y el código para el ejemplo Demos, entonces no debería tener demasiados problemas.Respuestas:
Estos son los pasos básicos que deberá seguir:
Primero cree un objeto mundial (es decir
btDiscreteDynamicsWorld
) para conducir su simulación física.Ya debería tener una clase como
GameObject
esa que tal vez almacene un modelo junto con su cuadro delimitador y su posición / orientación en el mundo. Reemplazar la posición / orientación de información con una instancia de una física cuerpo objeto (es decirbtRigidBody
) y cuando se representa el modelo, utilizar la información proporcionada por el cuerpo en su lugar. Al crear el cuerpo, deberá proporcionar su forma de masa y colisión que debe coincidir con los volúmenes delimitadores que ya tiene. También he hablado de esto en tu otra pregunta .Agrega cada uno de los cuerpos de tus objetos de juego al objeto mundial .
Actualice la simulación dando un paso al mundo (es decir, llamando
stepSimulation
a su mundo).Y tómese un tiempo para leer el manual, ya que también tiene mucha información.
Editar para abordar el comentario
Bueno, parecería por su comentario que nunca antes ha trabajado con bibliotecas externas de C ++. Ha pasado un tiempo desde que hice esto, pero así es como recuerdo el proceso (en Visual Studio).
Para empezar, cito el manual que ya explica lo que necesita:
Y aquí están los pasos básicos que deberá seguir para cumplir con las condiciones anteriores ...
1. Paso de preparación
En primer lugar, extraiga el archivo que descargó en un directorio conocido, por ejemplo
C:\Bullet
. Necesitará saber la ruta a esta carpeta más adelante.Dentro hay dos carpetas a las que deberá hacer referencia en su proyecto. La primera es la
src
carpeta que contiene los.h
archivos de encabezado que incluirá en su código fuente. El segundo es lalib
carpeta que contendrá los.lib
archivos de la biblioteca que vinculará a su proyecto. Tenga en cuenta que incluir y vincular son dos cosas diferentes.Pero la
lib
carpeta debería estar vacía por ahora, porque todavía no ha construido el motor. Por lo tanto, consulte el manual sobre cómo construir el proyecto usando CMake y Visual Studio, por ejemplo. Está en la página 7.Después de tener éxito, usted debe tener al menos tres archivos en la
lib
carpeta:BulletDynamics.lib
,BulletCollision.lib
yLinearMath.lib
(supongo que seguirán en el manual). Ahora para hacer la conexión entre Bullet y su proyecto ...2. Incluir encabezados
En primer lugar, deberá agregar la
C:\Bullet\src
carpeta a las opciones de ruta de inclusión de su proyecto. Puede hacerlo en Visual Studio haciendo clic derecho en su proyecto, navegandoConfiguration Properties -> C/C++ -> General -> Additional Include Directories
y escribiendo la ruta del directorio allí.Después de configurar eso, simplemente puede hacerlo
#include “btBulletDynamicsCommon.h”
en su código. Ese encabezado parece servir como un centro para todas las funciones que necesita.3. Bibliotecas de enlaces
Finalmente, deberá vincular las bibliotecas mencionadas anteriormente. Frist, bajo
Configuration Properties -> Linker -> General -> Additional Library Directories
añadir la ruta de lalib
carpeta, o en otras palabras,C:\Bullet\lib
.Luego, debajo
Configuration Properties -> Linker -> Input-> Additional Dependencies
, agregue el nombre de las bibliotecas a la lista de dependencias. Separe cada biblioteca con un;
y no olvide la extensión del archivo. Así, por ejemplo, es posible añadir esto al final de la lista:BulletDynamics.lib;BulletCollision.lib;LinearMath.lib
.Después de esto, debería poder construir y ejecutar su proyecto.
fuente