Collision problem.

Why there is collision when the objects are 10000 meters one from another?


package com.daltonfilho.tutorials.java3d;
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.FileNotFoundException;
import java.util.Enumeration;

import javax.media.j3d.AmbientLight;
import javax.media.j3d.Appearance;
import javax.media.j3d.Background;
import javax.media.j3d.Behavior;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.Bounds;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.DirectionalLight;
import javax.media.j3d.ImageComponent2D;
import javax.media.j3d.Shape3D;
import javax.media.j3d.Texture;
import javax.media.j3d.Texture2D;
import javax.media.j3d.TextureAttributes;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.media.j3d.View;
import javax.media.j3d.WakeupCriterion;
import javax.media.j3d.WakeupOnCollisionEntry;
import javax.media.j3d.WakeupOnCollisionExit;
import javax.media.j3d.WakeupOnCollisionMovement;
import javax.media.j3d.WakeupOnElapsedTime;
import javax.media.j3d.WakeupOr;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3d;
import javax.vecmath.Vector3f;

import com.sun.j3d.loaders.Scene;
import com.sun.j3d.loaders.objectfile.ObjectFile;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import com.sun.j3d.utils.geometry.Primitive;
import com.sun.j3d.utils.geometry.Sphere;
import com.sun.j3d.utils.image.TextureLoader;
import com.sun.j3d.utils.universe.ConfiguredUniverse;
import com.sun.j3d.utils.universe.SimpleUniverse;

class sss
{
	public void aa()
	{}
	}

public class themain extends Applet implements KeyListener {
	public static void main(String[] args)
	{
		themain aa=  new themain();
		new MainFrame(aa,400,400);
		aa.addKeyListener(aa);
	}
	class colision extends Behavior
	{
		
		WakeupCriterion yawn ;
		WakeupCriterion[] 
		kolizia =new WakeupCriterion[3];
		 protected WakeupOr oredCriteria;
       Shape3D shape;
		public colision(Shape3D shape,Bounds granici){
		this.shape=shape;
			System.out.println("bbbaaa");
			setSchedulingBounds(granici);
		}
		public void initialize() {
		    kolizia[0]=new WakeupOnCollisionEntry(shape);
	        kolizia[1] = new WakeupOnCollisionExit(shape);
	        kolizia[2] = new WakeupOnCollisionMovement(shape);
	        oredCriteria = new WakeupOr(kolizia);
	        wakeupOn(oredCriteria); 
		
		}
		public  void processStimulus(Enumeration criteria) {
			  WakeupCriterion theCriterion = (WakeupCriterion) criteria.nextElement();
			    if (theCriterion instanceof WakeupOnCollisionEntry) {
		         themain.this.update(true);
			      System.out.println("Collided with ");
			    } else if (theCriterion instanceof WakeupOnCollisionExit) {
			    	  themain.this.update(true);
			      System.out.println("Stopped colliding with  "
			        );
			    } else {
			    	  themain.this.update(true);
			      System.out.println("Moved whilst colliding with "
			    );
			    }
			    wakeupOn(oredCriteria); 

			
		}
		}
	
	class main extends Behavior
	{		
		WakeupCriterion yawn ;

		public main(){
	
			System.out.println("bbb");
			yawn  = new WakeupOnElapsedTime(30);

		}
		public void initialize() {

			wakeupOn(yawn);
		}
		public  void processStimulus(Enumeration criteria) {
	
		themain.this.update(false);
			wakeupOn(yawn);
			
		}
		}
	

	float posokaz = 0.0f;
	float posokay=0.0f;
	float posokax=5.0f;
	float posoka2z = 10.0f;
	float posoka2y=0.0f;
	float posoka2x=0.0f;
    double zawurtane = 0;
	 Transform3D transform;
	 Vector3f mqsto;
	 Transform3D transform2;
	 Transform3D transform3;
	 Vector3f mqstomishena;
	 View gledka;
	 TransformGroup view;
	 TransformGroup tg;
	 TransformGroup tg2;
	  DirectionalLight light1;
	  Shape3D korab;
	  Background background =null;
	  //Shape3D mishena;
	  Shape3D truba;
	  Transform3D lookat ;
	  ConfiguredUniverse ss;
	  ConfiguredUniverse universe ;
	   ObjectFile f;
	   Scene s = null;
	   BranchGroup b ;
public themain ()
{ 
	//javax.media.j3d.View.setFrontClipDistance(22);
	

	setLayout(new BorderLayout());
	 GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
	 
	 Canvas3D canvas = new Canvas3D(config);
	// canvas.setBounds(10000, 10000, 10000, 10000);
	 universe = new ConfiguredUniverse(canvas);
 
  tg = new TransformGroup();
  tg2 =new TransformGroup();

  tg2.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
  tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
  transform = new Transform3D();
  transform2 = new Transform3D();
  transform3 = new Transform3D();
  lookat= new Transform3D();
  View view = canvas.getView();
  view.setBackClipDistance(3000f);
   mqsto =new Vector3f(posokax,posokay,posokaz);
   mqstomishena =new Vector3f(0,0,0);
  // mqstomishena =new Vector3f(20,0,0);
   add( canvas);
   canvas.addKeyListener(this);
   transform.setTranslation(mqsto);
   background=new Background();
   TextureAttributes texAttr = new TextureAttributes();
   texAttr.setTextureMode(TextureAttributes.MODULATE);
   //background.setColor(1.0f, 0.0f, 0.0f);
   background.setCapability(Background.ALLOW_APPLICATION_BOUNDS_WRITE);
   gledka=new View();
   lookat.lookAt(new Point3d(0,0,0), new Point3d(mqsto.getX(),mqsto.getY(),mqsto.getZ()), new Vector3d() );
   lookat.setTranslation(mqsto);
   transform2.setTranslation(mqstomishena);
   transform3.setTranslation(new Vector3f(0,0,0));
   tg.setTransform(transform);
   gledka.setBackClipDistance(3);
   gledka.setFrontClipDistance(30000);
//   gledka.addCanvas3D(canvas);
   tg2.setTransform(transform);
   String s1 = "mishena.obj";
   String s2 = "mishena.obj";
   String s3 = "truba.obj";

TextureLoader loader = new TextureLoader("rujda.jpg",this);
ImageComponent2D brick2 = loader.getImage();

Texture2D brick= new Texture2D(Texture2D.BASE_LEVEL, Texture2D.RGB, brick2.getWidth(), brick2.getHeight());
brick.setEnable(true);
brick.setImage(0, brick2);
TextureAttributes ta = new TextureAttributes();	    

   BranchGroup group = new BranchGroup();
   korab=loader(s1);
   b.removeChild(0);
  // mishena = loader(s2);
 ////  b.removeChild(0);
   truba=loader(s3);
   b.removeChild(0);
   Color3f light1Color = new Color3f(0f, 255f, 1f);
   BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0,
		      0.0), 100.0);
   bounds.setRadius(Float.MAX_VALUE);
   Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);
    light1 = new DirectionalLight(light1Color, light1Direction);
   light1.setInfluencingBounds(bounds);
   background.setApplicationBounds(bounds);
   background.setName("rujda.jpg");
   
   AmbientLight ambientLightNode = new AmbientLight (light1Color);
	ambientLightNode.setInfluencingBounds (bounds);
   Appearance ap = new Appearance();
    Color3f col = new Color3f(0.0f, 0.0f, 22.0f);
   ap.setTextureAttributes(texAttr);
   ap.setTexture(brick);
 //  mishena.setAppearance(ap);
   truba.setAppearance(ap);
 
   korab.setAppearance(ap);
//  tg.addChild(mishena);
   tg.addChild(truba);
   tg2.addChild(korab);
   Sphere mySphere = new Sphere(0.7f,Primitive.GENERATE_TEXTURE_COORDS,ap);
tg2.addChild(mySphere);
   //tg.addChild(view);
   tg.addChild(ambientLightNode);
   MouseRotate myMouseRotate = new MouseRotate();
   myMouseRotate.setTransformGroup(tg);
   myMouseRotate.setSchedulingBounds(new BoundingSphere());
    group.addChild(tg);
   group.addChild(background);
    group.addChild(tg2);
  
    group.addChild(light1);
    main loop = new main();
    colision colisions = new colision(korab,bounds);
    colision colisions2 = new colision(truba,bounds);
    loop.setSchedulingBounds(bounds);
    colisions.setSchedulingBounds(bounds);
    group.addChild(loop);
    group.addChild(colisions);
    group.addChild(colisions2);
 
    
  universe.getViewingPlatform().setNominalViewingTransform();
 universe.getViewingPlatform().getViewPlatformTransform().setTransform(transform);
   universe.addBranchGraph(group);
   this.setVisible(true);
}
public static Texture getTexture(String path)
{
       TextureLoader texLoader = new TextureLoader(path, null);
       Texture texture =  texLoader.getTexture();
       if (texture == null)
         System.out.println("Cannot load texture from " + path);
       else {
         System.out.println("Loaded texture from " + path);
       //  texture.setEnable(true);
       }
       return texture;
} 
public void keyPressed(KeyEvent e){
	if(e.getKeyCode()==KeyEvent.VK_NUMPAD2)
	{
		System.out.println("aa");
	 
posokax=posokax+10.f;
mqsto.setX(posokax);
transform.setTranslation(mqsto);
tg.setTransform(transform);
	}
	if(e.getKeyCode()==KeyEvent.VK_A)
	{
		System.out.println("aa");
	 
zawurtane=zawurtane+0.01;
transform2.rotZ(zawurtane);
tg2.setTransform(transform2);
	}
	if(e.getKeyCode()==KeyEvent.VK_D)
	{

zawurtane=zawurtane-0.01;
transform2.rotZ(zawurtane);
tg2.setTransform(transform2);
	}
	if(e.getKeyCode()==KeyEvent.VK_NUMPAD2)
	{
		System.out.println("aa");
	 
posokax=posokax+10.f;
mqsto.setX(posokax);
transform.setTranslation(mqsto);
tg.setTransform(transform);
	}
	
	if(e.getKeyCode()==KeyEvent.VK_NUMPAD8)
	{
		System.out.println("aa");
posokax=posokax-10.f;
mqsto.setX(posokax);
transform.setTranslation(mqsto);
tg.setTransform(transform);
	}
	if(e.getKeyCode()==KeyEvent.VK_NUMPAD4)
	{
		System.out.println("aa");
posokay=posokay+10.f;
mqsto.setY(posokay);
transform.setTranslation(mqsto);
tg.setTransform(transform);
zawurtane=zawurtane+0.05;
transform.rotZ(zawurtane);
tg.setTransform(transform);
	}
	if(e.getKeyCode()==KeyEvent.VK_NUMPAD6)
	{
		System.out.println("aa");
posokay=posokay-10.f;
mqsto.setY(posokay);
transform.setTranslation(mqsto);
tg.setTransform(transform);
zawurtane=zawurtane-0.05;
transform.rotZ(zawurtane);
tg.setTransform(transform);
	}

	}
public void keyReleased(KeyEvent e){

	 }
public void keyTyped(KeyEvent e){

	 }

public Shape3D loader(String s1)
{
	  f = new ObjectFile ();
	   try{
			s = f.load (s1);
		   }
		   catch(FileNotFoundException e)
		   {
			   System.out.println(e);
		   }
       b = s.getSceneGroup();
	   return (Shape3D) b.getChild(0);
}
public  void update(boolean kol)
{
	if (kol==true)
	{
		transform.setTranslation(new Vector3f(0,0,0));
		tg.setTransform(transform);
		posokaz=0f;
		System.out.println("bbbbb");
	}
	else{
	posokaz=posokaz+10f;
	
transform.rotY(0);
transform.setTranslation(new Vector3f(posokay,posokax,posokaz));
tg.setTransform(transform);
	}
transform2.setTranslation(new Vector3f(posoka2y,posoka2x,10000));
tg2.setTransform(transform2);
transform3.setTranslation(new Vector3f(posoka2y,posoka2x+200,10500));
//lookat.lookAt(new Point3d(0,0,0), new Point3d(mqsto.getX(),mqsto.getY(),mqsto.getZ()), new Vector3d() );
universe.getViewingPlatform().getViewPlatformTransform().setTransform(transform3);

}

	}

I haven’t experimented with 3d yet, but if you expect a response, provide more information. It’s painful enough to read that many lines, let alone understand it and the problem!

As Jimmt said, no one (maybe ra4king) is going to take the time out of their day to sift through that momentous block of code to try to find the problem. Couldn’t you at least give us a few line numbers of where the problem might be coming from or something? It doesn’t help that the formatting on that code is ATROCIOUS. If you use eclipse, hit control+shift+f to format it before you paste it.

Also, it looks a lot nicer if you use pastebin for such large pieces of code.

| Nathan