Koordinatensystem verschieben?

Status
Nicht offen für weitere Antworten.

thisisme

Mitglied
Hallo zusammen!

Ich hab mal eine Verständnisfrage:

in meiner ViewPlatform hab ich doch ein Koordinatensystem, das für mein 3D-Objekt (z.B. den ColorCube) den Bezugspunkt darstellt oder? Wenn ich meinen Würfel jetzt verschieb scheint das Koordinatensystem in der alten Position zu bleiben, richtig? Ich habe nämlich das Problem, dass sich mein Würfel noch um die alte Achsenposition dreht, wenn ich ihn erst verschieb und anschließend drehe.

Hier mal Ausschnitte aus meinen 2 Behavior-Klassen:
Code:
private class MyMovement extends Behavior {

		private TransformGroup targetTG;
		private Transform3D trans = new Transform3D();
		private double move = 0.0; 

		@Override
		public void initialize() { ...}
		
		private void moveLeft() {
			move += 0.1;
			trans.setTranslation(new Vector3d(move, 0, 0));
			targetTG.setTransform(trans);
		}
[...]
Code:
privateclass MyRotation extends Behavior {

		private TransformGroup targetTG;
		private Transform3D trans = new Transform3D();
		private Transform3D transTemp = new Transform3D();
		private double angle = 0.0;
	
		@Override
		public void initialize() {...}
		
		private void rotateY() {
			angle += 0.01; 		 
			trans.rotY(angle); 
			trans.mul(transTemp);
			targetTG.setTransform(trans);
		}
 

thisisme

Mitglied
Nein, ich verwende unterschiedliche TransformGroups für die beiden Interaktionen, da ich das lieber trennen wollte.
 

thisisme

Mitglied
Im Moment hab ich es so (da ist jetzt noch eine 3. TranformGroup (zoom) dazwischen, die hat mit dem Problem aber eigentlich nichts zu tun):

Code:
BranchGroup objRoot = new BranchGroup();
TransformGroup objRotate = new TransformGroup();
TransformGroup objZoom = new TransformGroup();
TransformGroup objMove = new TransformGroup();

ColorCube cube = new ColorCube(0.3);
objMove.addChild(cube);
		
objZoom.addChild(objMove);
objRotate.addChild(objZoom);
objRoot.addChild(objRotate);
		
// rotation erstellen
MyRotation rotate = new MyRotation(objRotate);
rotate.setSchedulingBounds(new BoundingSphere());
		
// zoom erstellen
MyZoom zoom = new MyZoom(objZoom);
zoom.setSchedulingBounds(new BoundingSphere());
		
// move erstellen
MyMovement move = new MyMovement(objMove);
move.setSchedulingBounds(new BoundingSphere());
		
// alle zur Wurzel hinzufuegen
objRoot.addChild(rotate);
objRoot.addChild(zoom);
objRoot.addChild(move);
 

Illuvatar

Top Contributor
Probier mal - ohne zu testen - das hier:

Code:
BranchGroup objRoot = new BranchGroup(); 
TransformGroup objRotate = new TransformGroup(); 
TransformGroup objZoom = new TransformGroup(); 
TransformGroup objMove = new TransformGroup(); 

ColorCube cube = new ColorCube(0.3); 
objZoom.addChild(cube); 
       
objRotate.addChild(objZoom); 
objMove.addChild(objRotate); 
objRoot.addChild(objMove); 
       
// rotation erstellen 
MyRotation rotate = new MyRotation(objRotate); 
rotate.setSchedulingBounds(new BoundingSphere()); 
       
// zoom erstellen 
MyZoom zoom = new MyZoom(objZoom); 
zoom.setSchedulingBounds(new BoundingSphere()); 
       
// move erstellen 
MyMovement move = new MyMovement(objMove); 
move.setSchedulingBounds(new BoundingSphere()); 
       
// alle zur Wurzel hinzufuegen 
objRotate.addChild(rotate); 
objZoom.addChild(zoom); 
objMove.addChild(move);
 

thisisme

Mitglied
Super, deine Lösung funktioniert! Hab mir grad mal den Graphen dazu aufgemalt, um den Untreschied zu sehen.

Vielen Dank!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y 3D Koordinatensystem==> JOGL Spiele- und Multimedia-Programmierung 7
data89 Koordinaten in Koordinatensystem zeichnen Spiele- und Multimedia-Programmierung 11
X JPanel dynamisch (Koordinatensystem)? Spiele- und Multimedia-Programmierung 30
N 3 Dimensionales Koordinatensystem Spiele- und Multimedia-Programmierung 9
A 3D Gegenstand in einem 2D Koordinatensystem darstellen. Spiele- und Multimedia-Programmierung 3
R Java3d ViewingPlatform erst Verschieben und dann RotationsInterpolator Spiele- und Multimedia-Programmierung 0
R Verschieben von Objekten langsam Spiele- und Multimedia-Programmierung 0
A AffineTransform: Nach Drehen verschieben Spiele- und Multimedia-Programmierung 2
X TiledMap "langsam" verschieben Spiele- und Multimedia-Programmierung 8
M J3D gepicktes Primitive verschieben(fix mit Mauszeiger) Spiele- und Multimedia-Programmierung 2
A .jpg-Bild auf andere Position verschieben Spiele- und Multimedia-Programmierung 4
Z Kugeln aufgrund von Daten aus einem Array verschieben Spiele- und Multimedia-Programmierung 2
E Verschieben von Elementen Spiele- und Multimedia-Programmierung 2
R Polygon um double x/y - Werte verschieben Spiele- und Multimedia-Programmierung 2
G JOGL: per Mausbewegung Objekt verschieben Spiele- und Multimedia-Programmierung 2
G Auf Tastendruck bild verschieben Spiele- und Multimedia-Programmierung 5
G Objekt verschieben Spiele- und Multimedia-Programmierung 6
R Objekt mit cos/sin verschieben Spiele- und Multimedia-Programmierung 27
B Kugeln verschieben (Vektoren) und Schnitt prüfen Spiele- und Multimedia-Programmierung 12
C Betrachterstandpunkt verschieben Spiele- und Multimedia-Programmierung 7

Ähnliche Java Themen


Oben