Java JBullet-凸面形状在静止时无法正常工作

Java JBullet-凸面形状在静止时无法正常工作,java,physics,jbullet,Java,Physics,Jbullet,我在JBullet中使用动态长方体形状进行碰撞。它们正确地相互碰撞。但我在四处摆弄着建造世界,遇到了一些奇怪的问题 当我试图使凸刚体(长方体形状或三角形形状)保持静态(通过将“质量”设置为0)时,碰撞仅在(0,0,0)处的某个点上工作,而不是在给定的形状上。如果它是动态的,它工作得很好 另外一个问题,也许还有一些联系:如果我使用BvhTriangleMeshShape或gimpackmeshshape,它只有在动态的情况下才能正常工作,并且在静态的情况下不会发生碰撞(尽管BvhTriangleM

我在JBullet中使用动态长方体形状进行碰撞。它们正确地相互碰撞。但我在四处摆弄着建造世界,遇到了一些奇怪的问题

当我试图使凸刚体(长方体形状或三角形形状)保持静态(通过将“质量”设置为0)时,碰撞仅在(0,0,0)处的某个点上工作,而不是在给定的形状上。如果它是动态的,它工作得很好

另外一个问题,也许还有一些联系:如果我使用BvhTriangleMeshShape或gimpackmeshshape,它只有在动态的情况下才能正常工作,并且在静态的情况下不会发生碰撞(尽管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版本。
提前谢谢。

看来我找到问题了。我通过更换线路解决了这个问题

MotionState motion = new DefaultMotionState(new Transform());


看起来Transform的默认构造函数不会像我预期的那样创建标识转换。

似乎我发现了问题。我通过更换线路解决了这个问题

MotionState motion = new DefaultMotionState(new Transform());

看起来Transform的默认构造函数不会像我预期的那样创建标识转换