cuốn sách gpt4 ai đã làm

java - ví dụ về jBullet

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 05:14:20 30 4
mua khóa gpt4 Nike

Tôi đang cố gắng tìm hiểu cách sử dụng jBullet trong một dự án mà tôi đang thực hiện, tôi đã xem các bản demo do nguồn cung cấp nhưng tôi không thể hiểu các bản demo này hiển thị các đối tượng như thế nào. Có ai có tài nguyên tốt có thể chỉ cho tôi hoặc cung cấp ví dụ cơ bản về hiển thị một hoặc hai đối tượng trên màn hình không?

Cảm ơn trước, tôi xin lỗi vì tôi không có bất kỳ mã nào để hiển thị, tôi có thể viết một số mã nhanh nếu cần, nhưng tôi chỉ đang tìm cách tiếp tục.

谢谢,

Tôi đang làm việc với mã cho một khối lập phương nên tôi đang cố gắng thêm va chạm vào nó nhưng tôi không chắc cách sử dụng jbullet:

    khoảng trống công khai Draw() {
// tâm điểm posX, posY, posZ
bán kính phao = kích thước / 2;

//đứng đầu
glPushMatrix();
glBegin(GL_QUADS);
{
glColor3f(1.0f,0.0f,0.0f);
glVertex3f(posX + bán kính, posY + bán kính, posZ - bán kính);
glVertex3f(posX - bán kính, posY + bán kính, posZ - bán kính);
glVertex3f(posX - bán kính, posY + bán kính, posZ + bán kính);
glVertex3f(posX + bán kính, posY + bán kính, posZ + bán kính);
}
glEnd();
glPopMatrix();

//đáy
glPushMatrix();
glBegin(GL_QUADS);
{
glColor3f(1.0f,1.0f,0.0f); // ??
glVertex3f(posX + bán kính, posY - bán kính, posZ + bán kính);
glVertex3f(posX - bán kính, posY - bán kính, posZ + bán kính);
glVertex3f(posX - bán kính, posY - bán kính, posZ - bán kính);
glVertex3f(posX + bán kính, posY - bán kính, posZ - bán kính);
}
glEnd();
glPopMatrix();

// bên phải
glPushMatrix();
glBegin(GL_QUADS);
{
glColor3f(1.0f,0.0f,1.0f); // ??
glVertex3f(posX + bán kính, posY + bán kính, posZ + bán kính);
glVertex3f(posX + bán kính, posY - bán kính, posZ + bán kính);
glVertex3f(posX + bán kính, posY - bán kính, posZ - bán kính);
glVertex3f(posX + bán kính, posY + bán kính, posZ - bán kính);
}
glEnd();
glPopMatrix();

// bên trái
glPushMatrix();
glBegin(GL_QUADS);
{
glColor3f(0.0f,1.0f,1.0f); // ??
glVertex3f(posX - bán kính, posY + bán kính, posZ - bán kính);
glVertex3f(posX - bán kính, posY - bán kính, posZ - bán kính);
glVertex3f(posX - bán kính, posY - bán kính, posZ + bán kính);
glVertex3f(posX - bán kính, posY + bán kính, posZ + bán kính);
}
glEnd();
glPopMatrix();

// mặt trước
glPushMatrix();
glBegin(GL_QUADS);
{
glColor3f(0.0f,0.0f,1.0f);
glVertex3f(posX + bán kính, posY + bán kính, posZ + bán kính);
glVertex3f(posX - bán kính, posY + bán kính, posZ + bán kính);
glVertex3f(posX - bán kính, posY - bán kính, posZ + bán kính);
glVertex3f(posX + bán kính, posY - bán kính, posZ + bán kính);
}
glEnd();
glPopMatrix();

//mặt sau
glPushMatrix();
glBegin(GL_QUADS);
{
glColor3f(0.0f,1.0f,0.0f);
glVertex3f(posX + bán kính, posY - bán kính, posZ - bán kính);
glVertex3f(posX - bán kính, posY - bán kính, posZ - bán kính);
glVertex3f(posX - bán kính, posY + bán kính, posZ - bán kính);
glVertex3f(posX + bán kính, posY + bán kính, posZ - bán kính);
}
glEnd();
glPopMatrix();
}

Đây là mã tôi đã chuyển đổi từ mã thử nghiệm hello world. Bạn có nghĩ điều này đúng không? :

khoảng trống tĩnh công khai HelloWorld() {

BroadphaseInterface broadphase = new DbvtBroadphase();
DefaultCollisionConfiguration va chạmConfiguration = new DefaultCollisionConfiguration();
Bộ điều phối CollisionDispatcher = new CollisionDispatcher(collisionConfiguration);

Bộ giải SequentialImpulseConstraintSolver = new SequentialImpulseConstraintSolver();

DiscreteDynamicsWorld động lực Thế giới = new DiscreteDynamicsWorld(bộ điều phối, pha rộng, bộ giải, cấu hình va chạm);

// đặt trọng lực cho thế giới của chúng ta
DynamicsWorld.setGravity(Vector3f mới(0, -10, 0));

// thiết lập hình dạng va chạm của chúng tôi
CollisionShape groundShape = new StaticPlaneShape(new Vector3f(0, 1, 0), 1);
CollisionShape fallShape = new SphereShape(1);

// thiết lập trạng thái chuyển động
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); // thêm nền tảng của chúng ta vào thế giới năng động..

// thiết lập trạng thái chuyển động cho quả bóng
DefaultMotionState fallMotionState = new DefaultMotionState(new Transform(new Matrix4f(new Quat4f(0, 0, 0, 1), new Vector3f(0, 50, 0), 1.0f)));

// Cái này chúng ta sẽ tăng khối lượng để nó phản ứng với trọng lực
khối lượng int = 1;

Vector3f FallInertia = Vector3f mới (0,0,0);
fallShape.tínhLocalInertia(khối lượng,fallInertia);

RigidBodyConstructionInfo fallRigidBodyCI = new RigidBodyConstructionInfo(khối lượng,fallMotionState,fallShape,fallInertia);
RigidBody fallRigidBody = new RigidBody(fallRigidBodyCI);

//bây giờ chúng tôi thêm nó vào mô phỏng vật lý của mình
độngWorld.addRigidBody(fallRigidBody);

cho (int i=0 ; i<300 ; i++) {
DynamicsWorld.stepSimulation(1/60.f, 10);

Biến đổi trans = biến đổi mới();
fallRigidBody.getMotionState().getWorldTransform(trans);


System.out.println("chiều cao hình cầu: " + trans.origin.y);
}

}

câu trả lời hay nhất

Mã mẫu jBullet HelloWorld:

khoảng trống tĩnh công khai HelloWorld() {

BroadphaseInterface broadphase = new DbvtBroadphase();
DefaultCollisionConfiguration va chạmConfiguration = new DefaultCollisionConfiguration();
Bộ điều phối CollisionDispatcher = new CollisionDispatcher(collisionConfiguration);

Bộ giải SequentialImpulseConstraintSolver = new SequentialImpulseConstraintSolver();

DiscreteDynamicsWorld động lực Thế giới = new DiscreteDynamicsWorld(bộ điều phối, pha rộng, bộ giải, cấu hình va chạm);

// đặt trọng lực cho thế giới của chúng ta
DynamicsWorld.setGravity(Vector3f mới(0, -10, 0));

// thiết lập hình dạng va chạm của chúng tôi
CollisionShape groundShape = new StaticPlaneShape(new Vector3f(0, 1, 0), 1);
CollisionShape fallShape = new SphereShape(1);

// thiết lập trạng thái chuyển động
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); // thêm nền tảng của chúng ta vào thế giới năng động..

// thiết lập trạng thái chuyển động cho quả bóng
DefaultMotionState fallMotionState = new DefaultMotionState(new Transform(new Matrix4f(new Quat4f(0, 0, 0, 1), new Vector3f(0, 50, 0), 1.0f)));

// Cái này chúng ta sẽ tăng khối lượng để nó phản ứng với trọng lực
khối lượng int = 1;

Vector3f FallInertia = Vector3f mới (0,0,0);
fallShape.tínhLocalInertia(khối lượng,fallInertia);

RigidBodyConstructionInfo fallRigidBodyCI = new RigidBodyConstructionInfo(khối lượng,fallMotionState,fallShape,fallInertia);
RigidBody fallRigidBody = new RigidBody(fallRigidBodyCI);

//bây giờ chúng tôi thêm nó vào mô phỏng vật lý của mình
độngWorld.addRigidBody(fallRigidBody);

cho (int i=0 ; i<300 ; i++) {
DynamicsWorld.stepSimulation(1/60.f, 10);

Biến đổi trans = biến đổi mới();
fallRigidBody.getMotionState().getWorldTransform(trans);


System.out.println("chiều cao hình cầu: " + trans.origin.y);
}

Về ví dụ java - jBullet, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/12927654/

30 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress