저는 작업중인 프로젝트에서 jBullet을 사용하는 방법을 배우려고하고 있으며 소스가 제공하는 데모를 리뷰했지만이 데모가 오브젝트를 표시하는 방법을 이해할 수 없습니다. 누구든지 나를 가리킬 수있는 좋은 리소스가 있거나 화면에 하나 또는 두 개의 개체를 표시하는 기본 예제를 제공합니까?jBullet 예
미리 감사드립니다. 필요한 경우 신속하게 작성할 수있는 코드가 없지만 정말 갈 방향을 찾고있는 것은 미안합니다. jbullet 사용 방법
은 내가 사용하고있는 큐브,코드를 주셔서 감사합니다, 그래서 나는 그것에 충돌을 추가하기 위해 노력하고 있어요,하지만 난 확실하지 오전 :
여기public void Draw() {
// center point posX, posY, posZ
float radius = size/2;
//top
glPushMatrix();
glBegin(GL_QUADS);
{
glColor3f(1.0f,0.0f,0.0f); // red
glVertex3f(posX + radius, posY + radius, posZ - radius);
glVertex3f(posX - radius, posY + radius, posZ - radius);
glVertex3f(posX - radius, posY + radius, posZ + radius);
glVertex3f(posX + radius, posY + radius, posZ + radius);
}
glEnd();
glPopMatrix();
//bottom
glPushMatrix();
glBegin(GL_QUADS);
{
glColor3f(1.0f,1.0f,0.0f); // ?? color
glVertex3f(posX + radius, posY - radius, posZ + radius);
glVertex3f(posX - radius, posY - radius, posZ + radius);
glVertex3f(posX - radius, posY - radius, posZ - radius);
glVertex3f(posX + radius, posY - radius, posZ - radius);
}
glEnd();
glPopMatrix();
//right side
glPushMatrix();
glBegin(GL_QUADS);
{
glColor3f(1.0f,0.0f,1.0f); // ?? color
glVertex3f(posX + radius, posY + radius, posZ + radius);
glVertex3f(posX + radius, posY - radius, posZ + radius);
glVertex3f(posX + radius, posY - radius, posZ - radius);
glVertex3f(posX + radius, posY + radius, posZ - radius);
}
glEnd();
glPopMatrix();
//left side
glPushMatrix();
glBegin(GL_QUADS);
{
glColor3f(0.0f,1.0f,1.0f); // ?? color
glVertex3f(posX - radius, posY + radius, posZ - radius);
glVertex3f(posX - radius, posY - radius, posZ - radius);
glVertex3f(posX - radius, posY - radius, posZ + radius);
glVertex3f(posX - radius, posY + radius, posZ + radius);
}
glEnd();
glPopMatrix();
//front side
glPushMatrix();
glBegin(GL_QUADS);
{
glColor3f(0.0f,0.0f,1.0f); //blue
glVertex3f(posX + radius, posY + radius, posZ + radius);
glVertex3f(posX - radius, posY + radius, posZ + radius);
glVertex3f(posX - radius, posY - radius, posZ + radius);
glVertex3f(posX + radius, posY - radius, posZ + radius);
}
glEnd();
glPopMatrix();
//back side
glPushMatrix();
glBegin(GL_QUADS);
{
glColor3f(0.0f,1.0f,0.0f); // green
glVertex3f(posX + radius, posY - radius, posZ - radius);
glVertex3f(posX - radius, posY - radius, posZ - radius);
glVertex3f(posX - radius, posY + radius, posZ - radius);
glVertex3f(posX + radius, posY + radius, posZ - radius);
}
glEnd();
glPopMatrix();
}
내 변환 코드 안녕하세요 세계 테스트 코드에서 모든 사람에게이 모양이 맞습니까? :
public static void HelloWorld() {
BroadphaseInterface broadphase = new DbvtBroadphase();
DefaultCollisionConfiguration collisionConfiguration = new DefaultCollisionConfiguration();
CollisionDispatcher dispatcher = new CollisionDispatcher(collisionConfiguration);
SequentialImpulseConstraintSolver solver = new SequentialImpulseConstraintSolver();
DiscreteDynamicsWorld dynamicsWorld = new DiscreteDynamicsWorld(dispatcher, broadphase, solver, collisionConfiguration);
// set the gravity of our world
dynamicsWorld.setGravity(new Vector3f(0, -10, 0));
// setup our collision shapes
CollisionShape groundShape = new StaticPlaneShape(new Vector3f(0, 1, 0), 1);
CollisionShape fallShape = new SphereShape(1);
// setup the motion state
DefaultMotionState groundMotionState = new DefaultMotionState(new Transform(new Matrix4f(new Quat4f(0, 0, 0, 1), new Vector3f(0, -1, 0), 1.0f)));
RigidBodyConstructionInfo groundRigidBodyCI = new RigidBodyConstructionInfo(0, groundMotionState, groundShape, new Vector3f(0,0,0));
RigidBody groundRigidBody = new RigidBody(groundRigidBodyCI);
dynamicsWorld.addRigidBody(groundRigidBody); // add our ground to the dynamic world..
// setup the motion state for the ball
DefaultMotionState fallMotionState = new DefaultMotionState(new Transform(new Matrix4f(new Quat4f(0, 0, 0, 1), new Vector3f(0, 50, 0), 1.0f)));
//This we're going to give mass so it responds to gravity
int mass = 1;
Vector3f fallInertia = new Vector3f(0,0,0);
fallShape.calculateLocalInertia(mass,fallInertia);
RigidBodyConstructionInfo fallRigidBodyCI = new RigidBodyConstructionInfo(mass,fallMotionState,fallShape,fallInertia);
RigidBody fallRigidBody = new RigidBody(fallRigidBodyCI);
//now we add it to our physics simulation
dynamicsWorld.addRigidBody(fallRigidBody);
for (int i=0 ; i<300 ; i++) {
dynamicsWorld.stepSimulation(1/60.f, 10);
Transform trans = new Transform();
fallRigidBody.getMotionState().getWorldTransform(trans);
System.out.println("sphere height: " + trans.origin.y);
}
}
은 아마 당신이보고 된 데모에 링크 할 수 있습니까? – theJollySin
도서관에 포함 된 데모를보고 있었지만 미안하지만 도서관과 연결되어 있지 않습니다. 코드를 게시 할 것이지만 여러 개의 클래스 파일로 분리되어 있으며 여기서 수행하는 것이 번거롭다.총알 자습서를 살펴 보았지만 함수 이름이 다르기 때문에 사실 jBullet에 잘 적용되지 않습니다. http://bulletphysics.org/mediawiki-1.5.8/index.php/Hello_World – Kenneth
물리 디버그 정보를 화면에 표시하는 것에 대해서는 자신 만의'IDebugDraw' 클래스를 구현해야합니다. 물리학에 의해 제어되기를 원하는 객체를 그리는 것에 대해 이야기하고 있다면, 물리 라이브러리가 전혀 개입되지 않은 상태에서 그렇게 할 수 있습니다. jBullet은 객체의 물리학을 제어하는 데 사용되어야합니다. 즉, 객체를 이동하고 서로 충돌하는 것입니다. 모델 또는 객체 그리기는 자신의 코드로 수행해야합니다. 당신이하고자하는 것을 정의한다면, 나는 그것을하는 방법에 대한 답을 제공 할 것입니다. – MichaelHouse