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);
...