Moving in the universe

Hi! i’m new here and this is my first message

This is my first steps in Java3d (and in 3d at all) and i have a problem… I want the mouse to be used to look around, like in a shooter. My code is being executed, but nothing happens on th screen. There’s something i must have misunderstood.

public class MouseBeh extends Behavior{
        private TransformGroup TG;
	private Transform3D rot=new Transform3D();
	private Transform3D rotation=new Transform3D();
	private Vector3f translation=new Vector3f();
	
	private WakeupOnAWTEvent mouseEvent=new WakeupOnAWTEvent(MouseEvent.MOUSE_MOVED);
	private MouseEvent evt;
        private Robot rr;
	MouseBeh(TransformGroup TG)
	{
		this.TG=TG;
                try{
                    rr = new Robot();
                }catch(Exception e){
                    javax.swing.JOptionPane.showMessageDialog(null, "Erreur: " + e.getMessage() + " -- " + e.getCause());
                }
	}
	
	public void initialize()
	{
		this.wakeupOn(mouseEvent);
	}
        
	public void processStimulus(Enumeration criteria)
	{
		AWTEvent events[]=mouseEvent.getAWTEvent();
		rot.setIdentity();
		TG.getTransform(rotation);
		evt = (MouseEvent)events[0];
                
                //Formule bidon, juste pour avoir un résultat quelconque
		rot.rotX(Math.toRadians(evt.getXOnScreen()-500)/200);
                rot.rotY(Math.toRadians(evt.getYOnScreen()-500)/200);
                
                try{
                    rr.mouseMove(500, 500);
                }catch(Exception e){
                    javax.swing.JOptionPane.showMessageDialog(null, "Erreur: " + e.getMessage() + " -- " + e.getCause());
                }
                
		rotation.mul(rot);
		TG.setTransform(rotation);
		
		this.wakeupOn(mouseEvent);
	}
    }

Otherwise, the keyboard works:

public class KeyBeh extends Behavior{
        private TransformGroup TG;
	private Transform3D rot=new Transform3D();
	private Transform3D rotation=new Transform3D();
	private Vector3f translation=new Vector3f();
	
	private WakeupOnAWTEvent keyEvent=new WakeupOnAWTEvent(KeyEvent.KEY_PRESSED);
	
	KeyBeh(TransformGroup TG)
	{
		this.TG=TG;
	}
	
	public void initialize()
	{
		this.wakeupOn(keyEvent);
	}
		
	public void processStimulus(Enumeration criteria)
	{
		AWTEvent events[]=keyEvent.getAWTEvent();
		rot.setIdentity();
		TG.getTransform(rotation);
		
		if (((KeyEvent)events[0]).getKeyCode()==KeyEvent.VK_NUMPAD1)
		{
			translation.set(0.075f,0f,0f);
			rot.setTranslation(translation);
		}
		else
		if (((KeyEvent)events[0]).getKeyCode()==KeyEvent.VK_NUMPAD3)
		{
			translation.set(-0.075f,0f,0f);
			rot.setTranslation(translation);
		}
		else
		if (((KeyEvent)events[0]).getKeyCode()==KeyEvent.VK_NUMPAD2)
		{
			translation.set(0f,0f,0.075f);		
			rot.setTranslation(translation);
		}
		else
		if (((KeyEvent)events[0]).getKeyCode()==KeyEvent.VK_NUMPAD8)
		{
			translation.set(0f,0f,-0.075f);
			rot.setTranslation(translation);
		}
		else
		if (((KeyEvent)events[0]).getKeyCode()==KeyEvent.VK_NUMPAD4)
			rot.rotY(0.0125d);
		else
		if (((KeyEvent)events[0]).getKeyCode()==KeyEvent.VK_NUMPAD6)			
			rot.rotY(-0.0125d);
			
		rotation.mul(rot);
		TG.setTransform(rotation);
		
		this.wakeupOn(keyEvent);
	}
    }

and here’s the call:

...
        TransformGroup tUniv = univ.getViewingPlatform().getViewPlatformTransform();
        KeyBeh keyb = new KeyBeh(tUniv);
        keyb.setSchedulingBounds(new BoundingSphere(new Point3d(),1000.0));
        retour.addChild(keyb);
        
        MouseBeh mouse = new MouseBeh(tUniv);
        mouse.setSchedulingBounds(new BoundingSphere(new Point3d(),1000.0));
        retour.addChild(mouse);
...

There’s actually an easier way built right into the API called OrbitBehavior. An example of how to use it is listed below.

private void orbitControls(Canvas3D c)
{
OrbitBehavior orbit = new OrbitBehavior(c, OrbitBehavior.REVERSE_ALL);
orbit.setSchedulingBounds(bounds);
ViewingPlatform vp = simpleUniverse.getViewingPlatform();
vp.setViewPlatformBehavior(orbit);
}