JBullet での衝突には、動的なボックス形状のボディを使用します。それらは互いに正しく衝突します。しかし、私は世界の構築をいじっていて、いくつかの奇妙な問題に遭遇しました.
凸型の RigidBodies (BoxShape または TriangleShape) を (質量を 0 に設定して) 静的にしようとすると、衝突は指定された形状ではなく (0,0,0) の何らかの点でのみ機能します。動的であれば、うまく機能しています。
追加の問題とおそらくいくつかのリンクがあります: BvhTriangleMeshShape または GImpactMeshShape を使用する場合、動的な場合にのみうまく機能し、静的な場合はとにかく衝突しません (BvhTriangleMeshShape が静的なボディに使用されるという事実にもかかわらず)。
これが私が世界を初期化する方法です:
BroadphaseInterface broadphase = new DbvtBroadphase();
CollisionConfiguration collisionConfiguration = new DefaultCollisionConfiguration();
CollisionDispatcher dispatcher = new CollisionDispatcher(collisionConfiguration);
ConstraintSolver solver = new SequentialImpulseConstraintSolver();
dynamicsWorld = new DiscreteDynamicsWorld(dispatcher, broadphase, solver, collisionConfiguration);
dynamicsWorld.setGravity(new Vector3f(0, 0, 0));
GImpactCollisionAlgorithm.registerAlgorithm(dispatcher);
問題のあるオブジェクト:
Vector3f inertia = new Vector3f(0, 0, 0);
MotionState motion = new DefaultMotionState(new Transform());
//BvhTriangleMeshShape shape = ShapeUtil.getShapeFromModel(testSphere);
//CompoundShape shape = ShapeUtil.getCompoundShapeFromModel(testSphere);
//GImpactMeshShape shape = ShapeUtil.getGImpactShapeFromModel(testSphere);
BoxShape shape = new BoxShape (new Vector3f(2,2,2));
//TriangleShape shape = new TriangleShape(new Vector3f(-20,0,-10), new Vector3f(20,20,-10), new Vector3f(20,-20,-10));
RigidBodyConstructionInfo constructionInfo = new RigidBodyConstructionInfo(0, motion, shape, inertia);
RigidBody body = new RigidBody(constructionInfo);
//body.setCollisionFlags(CollisionFlags.STATIC_OBJECT);
dynamicsWorld.addRigidBody(body);
this.bodies[64] = body;
誰でも私を助けてもらえますか?2010 年 10 月 10 日から JBullet バージョンを使用しています。前もって感謝します。