[SOLVED]Terrain collision vs geometry dynamicmesh collision causes a… Black hole?

Hey forum, been having fun with this jMonkey business, I’ve been messing around with physics now, obviously my player model works fine with the terrain, however when I spawn a cube, as soon as it collides with the terrain, it does some weird shiz, thanks in advance for your insight, here’s a video:



http://www.youtube.com/watch?v=fGea57FY0zw



and some code:



[java]public void Initialize_Model() {

b = new Box(location.clone().addLocal(direction.clone().multLocal(10f)),1,1,1);

geometry = new Geometry(“Box”,b);

Material mat = new Material(instance.am,“Common/MatDefs/Misc/Unshaded.j3md”);

mat.setColor(“Color”, ColorRGBA.Red);

geometry.setMaterial(mat);

CollisionShape cs = CollisionShapeFactory.createDynamicMeshShape(geometry);

rbc = new RigidBodyControl(cs,10);



instance.getBulletAppState().getPhysicsSpace().add(rbc);

geometry.addControl(rbc);



instance.rn.attachChild(geometry);

}[/java]



PS: I’ve tried searching but couldn’t find the problem



PPS: The terrain:



[java]

terrain = new TerrainQuad(“my terrain”, patchSize,1025,heightmap.getHeightMap());

terrain.setMaterial(mat_terrain);

terrain.setLocalTranslation(0,-100,0);

terrain.setLocalScale(1,0.5f,1);





CollisionShape cs = CollisionShapeFactory.createMeshShape((Node)terrain);

RigidBodyControl landscape = new RigidBodyControl(cs,0);

terrain.addControl(landscape);





instance.getBulletAppState().getPhysicsSpace().add(landscape);

group.attachChild(terrain);

instance.rn.attachChild(group);[/java]

How do you create the collision shape for the terrain? How does the physics debug view look? (physicsSpace.enableDebug(assetManager))

Hey, I added terrain code as an edit (well the bit which I thought mattered anyways).



When I enabled debug, I can perfectly see the blue mesh around the cube



EDIT: However no mesh around the terrain.

Try not casting the terrain to a node.

Didn’t work unfortunately.



Here’s something though, when I give it a shot of force at the start (so it’s moving faster than usual) this is how it behaves, weird huh?

http://www.youtube.com/watch?v=BT4yTGLpXJs



In the meantime, I’m going to continue looking around my code :slight_smile:





EDIT: Instead of terrain, I spawned a huge plane, it does the exact same thing with the cubes.



EDIT #2: This cube spawning stuff has been in a seperate class, I’ve spawned a cube with ridibody in the main class and it works 100%, I’m gonna try take it from here and if I find the answer I’ll tag as solved and explain incase anyone hits it.

Solved, SOLUTION:





problem was here:

[java]b = new Box(location.clone().addLocal(direction.clone().multLocal(10f)),1,1,1);[/java]



I thought you were meant to enter the location where you wanted your box to start on the first parameter, this was causing the problem. Instead I spawned the box with Vector3f.ZERO and later, with the geometry I setLocalTranslation to the position I wanted for the box.



:slight_smile:





[java]b = new Box(Vector3f.ZERO,1,1,1);

geometry = new Geometry("Box",b);

geometry.setLocalTranslation(location.clone().addLocal(direction.clone().multLocal(10f)));[/java]

Yeah, you are pushing your center of mass out of the box this way.

Cool effect, though ^^

1 Like