Collision Detection is tricky


  Im in the middle of creating my first game using JME, so far it hasnt been to bad, but i have started Collision Detection over a week ago and basically im very lost with it.

My terrain contains hundreds of tree models, and i dont want to walk through them, so i have browsed through the forum to see if i could find anything useful and i came across this could here…

private void checkForCollision() {


character.calculateCollisions(collisionGeoms, boundCollision);

// check for bounding collision

if(boundCollision.getNumber() > 0) {


character.calculateCollisions(collisionGeoms, triCollision);

// check for actual triangle collision (always true if bounds collision)

if(triCollision.getNumber() > 0) {;

for(int index = 0; index < triCollision.getNumber(); index++)


if(temp != Vector3f.ZERO)

System.out.println("Collision Surface Normal: " + temp.normalize());


temp.multLocal(delta.length()); // try this instead if you still have probs : temp.multLocal(delta.length()).multLocal(1.05f);






private Vector3f getCollisionNormal(CollisionData triData) {

Vector3f normal = new Vector3f();

if(triData.getTargetTris().size() > 0) {

TriMesh mesh = (TriMesh) triData.getTargetMesh();

Triangle[] triangles = mesh.getMeshAsTriangles(triData.getTargetBatchId(), null);

ArrayList<Integer> triIndex = triData.getTargetTris();

for(Integer i : triIndex) {

Triangle t = triangles;





return normal.normalizeLocal();


private CollisionData reCalcCollision(CollisionData data) {

TriangleCollisionResults tcr = new TriangleCollisionResults();

data.getSourceMesh().calculateCollisions(data.getTargetMesh(), tcr);

return (tcr.getNumber() > 0 ? tcr.getCollisionData(0) : null);


i changed the checkForCollision() method around so when i call it in my update i will look like this, checkForCollision(character, terrain, prevLoc,delta), but the problem i encounter is that if i input the terrain node which includes the whole gaming environment, collisions are constantly the detected, but if i just input a node which contain all the tree models nothing happens, ie.checkForCollision(character, tree, prevLoc,delta), has anyone encountered this problem? and can u help me fix it?

any help would me much appreciated,