gpt4 book ai didi

android - 通过 .g3db 文件处理 Bullet 中的碰撞

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:07 24 4
gpt4 key购买 nike

我正在使用 libgdx 和 Bullet API 开发一个简单的应用程序。我已经使用形状完成了这个应用程序的基本原型(prototype),但现在我想在应用程序中加载真实模型。我使用 .g3db 文件 通过 AssetManager

加载模型
private void doneLoading() {
// TODO Auto-generated method stub
Model model = manager.get("ping1.g3db", Model.class);
int index = 0;
for (int i = 0; i < model.nodes.size; i++) {
String id = model.nodes.get(i).id;
ModelInstance instance = new ModelInstance(model, id);
Node node = instance.getNode(id);
instance.transform.set(node.globalTransform);
//node.translation.set(0, 0, 0);
//node.scale.set(1, 1, 1);
//node.rotation.idt();
instance.calculateTransforms();

if (id.equals("ball4") || id.equals("bat")) {
instance_array.add(instance);
index += 1;
}

if (id.equals("ball4")) {
ball = instance;
Gdx.app.log("Ball Index", " " + index);
instance_map.put("ball", new GameObject.Constructor(model, id, new btSphereShape(0.165f), 1.0f));
createBall();
//ball.transform.setToTranslation(0f, 10f, 0f);
} else if (id.equals("bat")) {
Gdx.app.log("Bat Index", " " + index);
bat = instance;
instance_map.put("bat",new GameObject.Constructor(model, id, new btSphereShape(1.897f), 0.0f));
createBat();
}
}
loading = false;
}


private void createBat() {
// TODO Auto-generated method stub
GameObject object=instance_map.get("bat").construct();
object.body.setCollisionFlags(object.body.getCollisionFlags()|btCollisionObject.CollisionFlags.CF_CUSTOM_MATERIAL_CALLBACK);
instances_gameobject.add(object);
dynamicWorld.addCollisionObject(object.body);
}


private void createBall() {
// TODO Auto-generated method stub
GameObject object=instance_map.get("ball").construct();
Gdx.app.log("Ball", "Ball created");
object.moving=true;
object.body.setWorldTransform(object.transform);
object.body.setCollisionFlags(object.body.getCollisionFlags()|btCollisionObject.CollisionFlags.CF_CUSTOM_MATERIAL_CALLBACK);
instances_gameobject.add(object);
dynamicWorld.addCollisionObject(object.body);
}

请告诉我如何使用自定义模型进行碰撞检测。

最佳答案

ConvexHullTest您可以看到如何从 Mesh 为您的 CollisionObject 创建一个 Shape

public static btConvexHullShape createConvexHullShape (final Model model, boolean optimize) {
final Mesh mesh = model.meshes.get(0);
final btConvexHullShape shape = new btConvexHullShape(mesh.getVerticesBuffer(), mesh.getNumVertices(), mesh.getVertexSize());
if (!optimize) return shape;
// now optimize the shape
final btShapeHull hull = new btShapeHull(shape);
hull.buildHull(shape.getMargin());
final btConvexHullShape result = new btConvexHullShape(hull);
// delete the temporary shape
shape.dispose();
hull.dispose();
return result;
}

关于android - 通过 .g3db 文件处理 Bullet 中的碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24605766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com