Guten Abend,
ich arbeite momentan an einem Java Projekt indem ich eine 3 Dimensionale Umgebung mit Java3D realsieren möchte.
Zum Einstieg:
Mittels selbst erstellter Behaviors die auf AWT Events reagieren bin ich schon in der Lage mich mit der Maus umzugucken und per WASD die Position zu ändern.
Dabei werden folgende Methoden aufgerufen:
Nun habe ich 3 Fragen:
1. Ich verstehe noch nicht ganz wie das mit der ViewPlatform aussieht. Wenn ich eine translation auf die anwende. verschiebt sich dann die Kamera oder verschiebt sich dann das komplette universum um die kamera? Ich hab grad logische Kopfschmerzen.
Es geht mir darum ob meine Kamera konkrete Positionen hat oder ob die Kamera immer bei 0,0,0 steht. Aber irgentwie ist das doch auch etwas unerheblich? Ich bin da etwas verdreht! Bitte um klarstellung!
2. Wenn ich nach oben schaue bewege ich mich bei einem Druck auf W ebenfalls nach oben. Ich hab schon eine Idee wie man es lösen könnte "auf dem teppich" zu bleiben, aber wie realisiert man das "üblicherweise"?
Ich gehe hier von einem komplett ebenen Terrain aus.
3. Wie kann ich verhindern gegen eine Wand zu laufen?
Ich hab schon mit einem Behavior in dem ich den "WakeupOnViewPlatformEntry" nutze rumprobiert, aber das wollte irgentwie nicht.
Im prinzip hab ich mir gedacht man könnte ein Behavior schreiben, dass etwas früher auf eine Kollision reagiert sodass mann kurz vor der wand stehen bleibt. Wo fange ich da an? Ich brauche einen Anhaltspunkt was ich mir anschauen soll!
Eventuell ist auch netter Entwickler bereit mir ein wenig in icq oder msn Rede und Antwort zu stehen! Würde mich freuen
mfG Richard
ich arbeite momentan an einem Java Projekt indem ich eine 3 Dimensionale Umgebung mit Java3D realsieren möchte.
Zum Einstieg:
Mittels selbst erstellter Behaviors die auf AWT Events reagieren bin ich schon in der Lage mich mit der Maus umzugucken und per WASD die Position zu ändern.
Dabei werden folgende Methoden aufgerufen:
Code:
//Von der Tastatur aufgerufen
public void gehenVor(double vektor){
Transform3D bewegung = new Transform3D();
bewegung.setTranslation(new Vector3d(0,0,vektor));
translation.mul(bewegung);
simpleUniverse.getViewingPlatform().getViewPlatformTransform().setTransform(translation);
}
public void gehenSeitlich(double vektor){
Transform3D bewegung = new Transform3D();
bewegung.setTranslation(new Vector3d(vektor,0,0));
translation.mul(bewegung);
simpleUniverse.getViewingPlatform().getViewPlatformTransform().setTransform(translation);
}
//von der maus aufgerufen
public void schauX(double angel){
Transform3D rotaX = new Transform3D();
rotaX.rotX(((Math.PI/180)*angel)/6);
translation.mul(rotaX);
rotationX = rotationX + angel;
simpleUniverse.getViewingPlatform().getViewPlatformTransform().setTransform(translation);
}
public void schauY(double angel){
Transform3D rotaY = new Transform3D();
rotaY.rotY(((Math.PI/180)*angel)/6);
translation.mul(rotaY);
rotationY = rotationY + angel;
simpleUniverse.getViewingPlatform().getViewPlatformTransform().setTransform(translation);
}
Nun habe ich 3 Fragen:
1. Ich verstehe noch nicht ganz wie das mit der ViewPlatform aussieht. Wenn ich eine translation auf die anwende. verschiebt sich dann die Kamera oder verschiebt sich dann das komplette universum um die kamera? Ich hab grad logische Kopfschmerzen.
Es geht mir darum ob meine Kamera konkrete Positionen hat oder ob die Kamera immer bei 0,0,0 steht. Aber irgentwie ist das doch auch etwas unerheblich? Ich bin da etwas verdreht! Bitte um klarstellung!
2. Wenn ich nach oben schaue bewege ich mich bei einem Druck auf W ebenfalls nach oben. Ich hab schon eine Idee wie man es lösen könnte "auf dem teppich" zu bleiben, aber wie realisiert man das "üblicherweise"?
Ich gehe hier von einem komplett ebenen Terrain aus.
3. Wie kann ich verhindern gegen eine Wand zu laufen?
Ich hab schon mit einem Behavior in dem ich den "WakeupOnViewPlatformEntry" nutze rumprobiert, aber das wollte irgentwie nicht.
Im prinzip hab ich mir gedacht man könnte ein Behavior schreiben, dass etwas früher auf eine Kollision reagiert sodass mann kurz vor der wand stehen bleibt. Wo fange ich da an? Ich brauche einen Anhaltspunkt was ich mir anschauen soll!
Eventuell ist auch netter Entwickler bereit mir ein wenig in icq oder msn Rede und Antwort zu stehen! Würde mich freuen
mfG Richard