Kamera nur um x und y, nicht um z achse rotieren

Status
Nicht offen für weitere Antworten.

Tr3kk3r

Mitglied
Nabend.

Beim arbeiten mit Java3D stehe ich vor einem folgenschweren problem:

Ich habe mir eine eigene Klasse geschrieben, die von der Klasse Behavior abgeleitet ist und das Interface MouseListener implementiert.
Dieser MouseListener wird nun dem Canvas3D hinzugefügt, auf dem ich mein universe zeichnne.

Die rotation um die x und die y - achse funktionieren prima, man kann nach oben/unten und links/rechts schauen(gehen mit wasd, dafür hab ich ne andere klasse)

leider stellt sich nach kurzer zeit aufgrund der kamerarotition um beide achsen der effect ein, dass die Ränder des Monitors nicht mehr horizontal bzw vertikal zum boden verlaufen, sondern der boden "schief" durch den monitor läuft.

Der code sieht wie folgt aus:

Code:
private WakeupCriterion	criterion;
	
	private TransformGroup	transformGroup;
	
	private Transform3D		trans	= new Transform3D();
	private Transform3D		tempTransX = new Transform3D();
	private Transform3D		tempTransY = new Transform3D();
	
	private Point lastPoint = null;
	boolean proove = true;
	
	private double xges,yges;
	

@Override
	public void initialize()
	{
		criterion = new WakeupOnAWTEvent(MouseEvent.MOUSE_MOVED);
		wakeupOn(criterion);
	}

	@Override
	public void processStimulus(Enumeration criteria)
	{
		WakeupOnAWTEvent ev;
		AWTEvent awtevent[];
			
		while (criteria.hasMoreElements())
		{
			
			ev = (WakeupOnAWTEvent) criteria.nextElement();
			
			awtevent = ev.getAWTEvent();
			
			for (int i = 0; i < awtevent.length; i++)
			{
				MouseEvent mouseE = (MouseEvent)awtevent[i];
				
				transformGroup.getTransform(trans);
				tempTransX.setIdentity();
				tempTransY.setIdentity();
				
				if(lastPoint == null)
				{
					lastPoint = mouseE.getPoint();
				}
				int x = mouseE.getPoint().x - lastPoint.x;
				int y = mouseE.getPoint().y - lastPoint.y;
								
				double xx = (180D * (y/1024D));
				double yy = (360D * (x/1280D));
				
				
				xges += xx;
				yges += yy;
				
				tempTransY.rotX(-Math.toRadians(xx));
				tempTransX.rotY(-Math.toRadians(yy));				
				
				
				trans.mul(tempTransY);
				trans.mul(tempTransX);
				
				
				trans.normalize();
				
				transformGroup.setTransform(trans);
				
				
				
				Robot r = null;
				try
				{
					r = new Robot();
				}
				catch (AWTException e)
				{
					e.printStackTrace();
					
				}
				
				int newX, newY;
				
				if(mouseE.getPoint().x > 1260)
				{
					newX = 9;
				}
				else if(mouseE.getPoint().x < 5)
				{
					newX = 1259;
				}
				else
				{
					newX = mouseE.getPoint().x;
				}				
				
				
				newY = mouseE.getPoint().y;
				
				
				if(newX != mouseE.getPoint().x /*|| newY != mouseE.getPoint().y*/)				
					r.mouseMove(newX,newY);
				
				lastPoint = new Point(newX,newY);
				
			
			
		}
		wakeupOn(criterion);
		}
		
	}

wie schaffe ich es nun, meine kamera dazu zu kriegen, immr parallel zum horizont zu bleiben, um so eine realistische simulation einer durch meine szene gehenden figur im first-person mode hinzukriegen???

eine idee von mir war, mir die z-rotation auszugeben und um die z-rotation *-1 zu rotieren, aber eine solche methode gibts mal wieder nicht.....
 

Tr3kk3r

Mitglied
ok, hab es selber hingekriegt.. zwar nicht so, wie erst gedacht war, aber der Horizont bleibt jetzt immer parallel zur unteren Bildschirmseite..

hier mal der code:

Code:
private WakeupCriterion	criterion;
	
	private TransformGroup	transformGroup;
	
	private Transform3D		trans	= new Transform3D();
	
	private Transform3D		transY = new Transform3D();
	private Transform3D		transX = new Transform3D();
	
	private Transform3D		backX = new Transform3D();
	private Transform3D		backY = new Transform3D();
	
	private Transform3D		recoverX = new Transform3D();
	private Transform3D		recoverY = new Transform3D();
	
	private Point lastPoint = null;	
	double xges=0,yges=0;
	
        public void processStimulus(Enumeration criteria)
	{
		WakeupOnAWTEvent ev;
		AWTEvent awtevent[];
			
		while (criteria.hasMoreElements())
		{
			
			ev = (WakeupOnAWTEvent) criteria.nextElement();
			
			awtevent = ev.getAWTEvent();
			
			for (int i = 0; i < awtevent.length; i++)
			{
				MouseEvent mouseE = (MouseEvent)awtevent[i];
				
				transformGroup.getTransform(trans);
				//transformGroup.getLocalToVworld(trans);
				
				
				transY.setIdentity();
				transX.setIdentity();
				
				backX.setIdentity();
				backY.setIdentity();
				
				recoverX.setIdentity();
				recoverY.setIdentity();
				
				if(lastPoint == null)
				{
					lastPoint = mouseE.getPoint();
				}
				
				int x = mouseE.getPoint().x - lastPoint.x;
				int y = mouseE.getPoint().y - lastPoint.y;
								
				double xx = (180D * (y/1024D));
				double yy = (360D * (x/1280D));
				
				backX.rotX(Math.toRadians(xges));
				backY.rotY(Math.toRadians(yges));
								
				transY.rotY(-Math.toRadians(yy));				
				recoverY.rotY(-Math.toRadians(yges));
				
				transX.rotX(-Math.toRadians(xx));
				recoverX.rotX(-Math.toRadians(xges));
				
				trans.mul(backX);
				trans.mul(backY);
				
				trans.mul(transY);
				trans.mul(recoverY);
				
				trans.mul(transX);				
				trans.mul(recoverX);
				
				trans.normalize();				
				transformGroup.setTransform(trans);		
				
				xges += xx;
				yges += yy;
				
				Robot r = null;
				try
				{
					r = new Robot();
				}
				catch (AWTException e)
				{
					e.printStackTrace();
					
				}
				
				int newX, newY;
				
				if(mouseE.getPoint().x > 1260)
				{
					newX = 9;
				}
				else if(mouseE.getPoint().x < 5)
				{
					newX = 1259;
				}
				else
				{
					newX = mouseE.getPoint().x;
				}				
				
				
				newY = mouseE.getPoint().y;
				
				
				if(newX != mouseE.getPoint().x /*|| newY != mouseE.getPoint().y*/)				
					r.mouseMove(newX,newY);
				
				lastPoint = new Point(newX,newY);
				
			
			
		}
		wakeupOn(criterion);
		}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 Kamera Stream Bereiche ausgrauen Spiele- und Multimedia-Programmierung 3
P Sich bewegende Kamera Spiele- und Multimedia-Programmierung 12
M Kamera "am Rande einer Kugel bewegen" Spiele- und Multimedia-Programmierung 4
S LWJGL Kamera Problem - Alles verzerrt Spiele- und Multimedia-Programmierung 4
S LWJGL Kamera Koordinaten invertiert. Spiele- und Multimedia-Programmierung 2
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
S LWJGL Kamera Frage Spiele- und Multimedia-Programmierung 2
B j3d Kamera Rotation durch Tastendruck Spiele- und Multimedia-Programmierung 12
M Problem mit Kamera (glMultMatrix (OpenGL/ LWJGL)/ Quaternionen) Spiele- und Multimedia-Programmierung 5
B Video von einer IP kamera Spiele- und Multimedia-Programmierung 5
J [JOGL] Kamera zentrieren über Achse Spiele- und Multimedia-Programmierung 4
"Er" Kamera rotation in Java3D Spiele- und Multimedia-Programmierung 2
S mikroskop-kamera fuer jmf Spiele- und Multimedia-Programmierung 3
V Java3D: automatisches Bewegen der Kamera Spiele- und Multimedia-Programmierung 19
J Kamera ausrichten Spiele- und Multimedia-Programmierung 2
J j3d, kamera auf sphere, sowie kameraflüge Spiele- und Multimedia-Programmierung 21
A Sichtvektor der "Kamera" Spiele- und Multimedia-Programmierung 2
A JAVA3D und die "Kamera" Spiele- und Multimedia-Programmierung 6
W "Kamera"-Position Spiele- und Multimedia-Programmierung 24
G Wie kann ich die Kamera / View Position ausgeben? Spiele- und Multimedia-Programmierung 3
I Zweite Kamera in einem SimpleUniverse Spiele- und Multimedia-Programmierung 6
S Minecraft Plugins nach Buchanleitung funktionieren nicht Spiele- und Multimedia-Programmierung 4
B Bild wird nicht geladen Spiele- und Multimedia-Programmierung 4
Fabel TicTacToe MiniMax Algorithmus geht nicht Spiele- und Multimedia-Programmierung 4
ThoraxLaneus Minecraft MCP-Client mit Optifine fertig machen in IntelliJ klappt nicht ganz Spiele- und Multimedia-Programmierung 6
K Mein Jump and Run charakter bewegt sich nicht mehr rückwärts... Spiele- und Multimedia-Programmierung 0
P Pokemon Spiel Funktioniert nicht ? Spiele- und Multimedia-Programmierung 3
D MIDIdevice open funktioniert nicht Spiele- und Multimedia-Programmierung 1
Mika_MDF Minecraft Eclipse startet Minecraft nicht? Spiele- und Multimedia-Programmierung 23
H Musik Datei lädt nicht? Spiele- und Multimedia-Programmierung 8
A Kollision funktioniert nicht richtig bei zu schneller Geschwindigkeit des Spielers Spiele- und Multimedia-Programmierung 0
JeremyStarTM Minecraft Minecraft Spigot Server akzeptiert JAR-Version nicht Spiele- und Multimedia-Programmierung 8
K Das Leerzeichen der Tastatur wird nicht gleichgesetzt mit dem Leerzeichen aus der Text Datei Spiele- und Multimedia-Programmierung 5
P Teamspeak interface mit JFrame funktioniert nicht Spiele- und Multimedia-Programmierung 3
coolian slick lwjgl text darstellen mit UnicodeFont funktoniert nicht? Spiele- und Multimedia-Programmierung 11
Z Minecraft Multiplayer geht nicht Spiele- und Multimedia-Programmierung 2
L Minecraft 1.7.10 Server startet nicht Spiele- und Multimedia-Programmierung 1
R Memory - Nicht alle Button lassen sich aktivieren? Spiele- und Multimedia-Programmierung 1
D Kollision funktioniert unten aber nicht oben Spiele- und Multimedia-Programmierung 4
C Java findet FluidSynth nicht Spiele- und Multimedia-Programmierung 2
N der Player bewegt sich nicht Spiele- und Multimedia-Programmierung 14
D Java Bild bewegen funktioniert nicht Spiele- und Multimedia-Programmierung 8
Damtonix Gameloop funktioniert nicht! Spiele- und Multimedia-Programmierung 6
N Warum tut der Gegner nicht das was er soll? Spiele- und Multimedia-Programmierung 13
N Warum ist das Fenster nicht schwarz? Spiele- und Multimedia-Programmierung 26
B Programmieren wie der Befehl /ban in Minecraft geblockt wird aber nicht /ban mit einem Argument Spiele- und Multimedia-Programmierung 1
A Dateifehler - Öffnet nicht Spiele- und Multimedia-Programmierung 7
temi libGDX Box2d ApplyTorque() funktioniert nicht Spiele- und Multimedia-Programmierung 1
R Laufbewegung geht nicht.. Spiele- und Multimedia-Programmierung 1
J OpenGL Bild wird nicht richtig angezeigt Spiele- und Multimedia-Programmierung 2
S GetBufferStrategy-Methode wird nicht angezeigt Spiele- und Multimedia-Programmierung 6
M KeyListener funktioniert nicht während Timer läuft Spiele- und Multimedia-Programmierung 26
F vlcj läuft nicht exportiert, aber in Eclipse Spiele- und Multimedia-Programmierung 2
A MouseListener ändert nicht das Lable Icon. Spiele- und Multimedia-Programmierung 2
G LWJGL Rendert nicht Spiele- und Multimedia-Programmierung 3
A Spielball bewegt sich nicht richtig, prallt falsch ab Spiele- und Multimedia-Programmierung 7
S KeyEvent funktioniert nicht, wenn Buttons dem Frame hinzugefügt werden Spiele- und Multimedia-Programmierung 7
Blender3D VLCJ Video lässt sich nicht mehr abspielen nach mysql Installation Spiele- und Multimedia-Programmierung 1
J Programm kann Audio Datei nicht finden Spiele- und Multimedia-Programmierung 7
Viktim Snake - Schlange wächst nicht Spiele- und Multimedia-Programmierung 3
J Mensch Ärgere Dich nicht - Künstliche Intelligenz Spiele- und Multimedia-Programmierung 2
C Export als .jar funktioniert nicht richtig (JAVA 3D) Spiele- und Multimedia-Programmierung 5
L Mensch ärgere dich nicht Spiele- und Multimedia-Programmierung 13
Polarfuchs Status von Midi Datei(wird gerade abgespielt oder nicht) Spiele- und Multimedia-Programmierung 0
A Bild(sequenz) wird nicht geladen Spiele- und Multimedia-Programmierung 1
4 AudioSystem.write() wirft IllegalArgumentException, obwohl dies eig. nicht passieren dürfte Spiele- und Multimedia-Programmierung 2
V Methoden werden zwar ausgeführt führen aber nicht zum Ergebnis Spiele- und Multimedia-Programmierung 5
M [JOGL] eclipse export Runnable Jar - startet nicht Spiele- und Multimedia-Programmierung 3
B LWJGL / OPENGL Kriege Depth-Test nicht hin :( Spiele- und Multimedia-Programmierung 0
S Slick2D KeyInput reagiert nicht. Spiele- und Multimedia-Programmierung 3
S Quaxli's Heli Spiel läuft nicht nach Plan Spiele- und Multimedia-Programmierung 2
W [libGDX] findet SplashScreen.png nicht Spiele- und Multimedia-Programmierung 4
T LWJGL VBO's funktionieren nicht, geben aber auch keinen Fehler Spiele- und Multimedia-Programmierung 0
Androbin Kollision zwischen Raster und Nicht-Raster Spiele- und Multimedia-Programmierung 2
O Fehler bei Programmierung lässt Figur nicht bewegen Spiele- und Multimedia-Programmierung 5
Androbin Mein Spiel will sich nicht zeichnen lassen !!! Spiele- und Multimedia-Programmierung 7
B Mein Programm reagiert nicht auf den Tasstendruck Spiele- und Multimedia-Programmierung 1
F HashMap liefert nicht gewünschten Wert (gar nix) Spiele- und Multimedia-Programmierung 5
J mensch ärger dich nicht Spiele- und Multimedia-Programmierung 1
M Spiele Tutorial.. Findet Bilddateien nicht Spiele- und Multimedia-Programmierung 6
G Ausführbare Jar findet Bilddateien nicht... Spiele- und Multimedia-Programmierung 4
P Rotation von Sprite klappt nicht Spiele- und Multimedia-Programmierung 4
A Minecraft Java Ubuntu Minecraft Server startet nicht - ERROR (SIGSEGV) Spiele- und Multimedia-Programmierung 7
F LWJGL: Licht und GL_LINES funktioniert nicht Spiele- und Multimedia-Programmierung 6
A [LWJGL] BMP Textur wird nicht richtig dargestellt Spiele- und Multimedia-Programmierung 8
N JPanel Inhalt aktualisiert nach Thread.sleep nicht Spiele- und Multimedia-Programmierung 2
S LWJGL Rechteck wird nicht gezeichnet Spiele- und Multimedia-Programmierung 6
J KeyMapping funktioniert nicht Spiele- und Multimedia-Programmierung 5
R Minecraft Minecraft läuft nicht paralel mit minecraft server ? Spiele- und Multimedia-Programmierung 3
S eine nullpointerexception, wo sie nicht sein sollte Spiele- und Multimedia-Programmierung 12
J Java3D - Textur laden geht nicht Spiele- und Multimedia-Programmierung 9
S Mensch-Ärger-Dich-Nicht Methoden Spiele- und Multimedia-Programmierung 2
S VLCJ libjawt.so nicht gefunden Spiele- und Multimedia-Programmierung 3
J Sound einbinden funktioniert nicht Spiele- und Multimedia-Programmierung 13
A JME3 will Blender/j3o Objekte nicht einladen Spiele- und Multimedia-Programmierung 3
D Slick Lib - Bilder einlesen funktioniert nicht Spiele- und Multimedia-Programmierung 2
Q BufferedImage vs. Heap Space ‒ Warum wird der Speicher nicht freigegeben? Spiele- und Multimedia-Programmierung 6
T LWJGL Grafik meines Projektes läuft nicht korrekt auf meinem iMac Spiele- und Multimedia-Programmierung 19
B LWJGL/OpenGL rendert manche Objekte nicht Spiele- und Multimedia-Programmierung 6
D Key Listener reagiert nicht ! Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben