Problem mit Rotation (Sprite3D)

Status
Nicht offen für weitere Antworten.

jagdfalke

Bekanntes Mitglied
Hi,
ich versuche mir gerade einen Sprite3D zusammenzubauen, aber die Rotation funktioniert nicht.
Hier der Code:
Code:
package tour3D;

import javax.vecmath.*;
import javax.media.j3d.*;

public class Sprite3D {

	private Shape3D shape;
	private TransformGroup moveTG, rotateTG;
	
	public Sprite3D(Shape3D shape) {
		this.shape = shape;
		moveTG = new TransformGroup();
		rotateTG = new TransformGroup();
		moveTG.addChild(rotateTG);
		rotateTG.addChild(shape);
	}
	
	public TransformGroup getTransformGroup() {
		return moveTG;
	}
	
	public void move(Vector3f move) {
		Transform3D newT3D = new Transform3D();
		newT3D.setTranslation(move);
		
		Transform3D t3D = new Transform3D();
		moveTG.getTransform(t3D);
		t3D.mul(newT3D);
		
		moveTG.setTransform(t3D);
	}
	
	public void rotate(int axis, int change) {
		Transform3D t3d = new Transform3D();
		rotateTG.getTransform(t3d);
		
		Transform3D rotT3D = new Transform3D();
		switch(axis) {
			case 0: rotT3D.rotX(Math.toRadians(change));
			case 1: rotT3D.rotY(Math.toRadians(change));
			case 2: rotT3D.rotZ(Math.toRadians(change));
		}
		
		t3d.mul(rotT3D);
		rotateTG.setTransform(t3d);
	}
	
}

Bin für jede Hilfe dankbar!

mfg
jagdfalke
 

Illuvatar

Top Contributor
a) Für 0 - 2 solltest du besser Konstanten definieren ;)
b) Schonmal probiert, das rot[X/Y/Z] direkt auf die rotateTG aufzurufen?
 

jagdfalke

Bekanntes Mitglied
a) ja das ist wohl besser
b) meinst du so?
Code:
	public void rotate(int axis, int change) {
		Transform3D t3d = new Transform3D();
		rotateTG.getTransform(t3d);
		if(axis == 0) { t3d.setRotation(new AxisAngle4f(1f,0f,0f, (float)Math.toRadians(change))); }
		if(axis == 1) { t3d.setRotation(new AxisAngle4f(0f,1f,0f, (float)Math.toRadians(change))); }
		if(axis == 2) { t3d.setRotation(new AxisAngle4f(0f,0f,1f, (float)Math.toRadians(change))); }
		rotateTG.setTransform(t3d);
	}

Aber so ist irgendwie blöd, weil ich dann nur entweder um x um y oder um z rotieren kann und nicht z.B. 20° um x und 45° um y oder so.

mfg
jagdfalke
 

Illuvatar

Top Contributor
???:L ich meinte eher so:

Code:
      Transform3D t3d = new Transform3D(); 
      rotateTG.getTransform(t3d); 
      switch(axis) { 
         case 0: t3d.rotX(Math.toRadians(change)); 
         case 1: t3d.rotY(Math.toRadians(change)); 
         case 2: t3d.rotZ(Math.toRadians(change)); 
      }
      rotateTG.setTransform(t3d);
 

jagdfalke

Bekanntes Mitglied
Hmm, jetzt klappt komischerweise. Ich weiß nicht genau was jetzt anders sein soll, aber ok.
Code:
package tour3D;

import javax.vecmath.*;
import javax.media.j3d.*;
import com.sun.j3d.loaders.Scene;
import com.sun.j3d.loaders.objectfile.ObjectFile;

public class Sprite3D {

	public static final int AXIS_X = 0;
	public static final int AXIS_Y = 1;
	public static final int AXIS_Z = 2;
	
	private TransformGroup objectTG;    			
	private Transform3D t3d, toMove, toRot;    	    
	private Switch visSwitch;   

	public Sprite3D(String model) {
	    visSwitch = new Switch();
	    visSwitch.setCapability(Switch.ALLOW_SWITCH_WRITE);
	    visSwitch.addChild( loadModel(model) );        
	    visSwitch.setWhichChild( Switch.CHILD_ALL );   
	    
	    objectTG = new TransformGroup();
	    objectTG.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
	    objectTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
	    objectTG.addChild( visSwitch );
	    
	    t3d = new Transform3D();
	    toMove = new Transform3D();
	    toRot = new Transform3D();
	}
	
	public TransformGroup getTG() {
		return objectTG;
	}
	
	public void setActive(boolean active) {
		if(active) {
			visSwitch.setWhichChild(Switch.CHILD_ALL);
		} else {
			visSwitch.setWhichChild(Switch.CHILD_NONE);
		}
	}
	
	public void doMove(Vector3d theMove) {
	    objectTG.getTransform( t3d );
	    toMove.setTranslation(theMove);   
	    t3d.mul(toMove);
	    objectTG.setTransform(t3d);
	  } 
	
	public void doRotate(int axis, double radians) {
	    objectTG.getTransform( t3d );
	    if(axis == AXIS_X) {
	    	toRot.rotX(radians);
	    } else if(axis == AXIS_Y) {
	    	toRot.rotY(radians);
	    } else if(axis == AXIS_Z) {
	    	toRot.rotZ(radians);
	    }
	    t3d.mul(toRot);
	    objectTG.setTransform(t3d);
	}
	
	private Node loadModel(String path) {
		ObjectFile objLoader = new ObjectFile(ObjectFile.RESIZE);
		Scene scene = null;
		try {
			scene = objLoader.load(path);
		} catch(Exception e) {
			System.err.print(e);
			return null;
		}
		BranchGroup bg = scene.getSceneGroup();
		return bg;
	}
	
}

Danke, die nächste Frage kommt sofort aber nicht in diesem Thread :D

mfg
jagdfalke
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A [HILFE] - Minecraft-Problem! Spiele- und Multimedia-Programmierung 1
C Plugin Problem Spiele- und Multimedia-Programmierung 2
J JLayer Problem Spiele- und Multimedia-Programmierung 1
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
G Low Poly 3D LWJGL Shader Problem Spiele- und Multimedia-Programmierung 4
O Problem beim Aufrufen des Spiels von einem Menü Spiele- und Multimedia-Programmierung 7
G LIBGDX Texturen Problem Spiele- und Multimedia-Programmierung 1
G LIBGDX Problem beim resizen des Frames Spiele- und Multimedia-Programmierung 3
C AutoClicker Problem Spiele- und Multimedia-Programmierung 2
S OOP Logik Problem Spiele- und Multimedia-Programmierung 5
G LIBGDX Viewport Problem Spiele- und Multimedia-Programmierung 3
J Problem mit Game Of Life Spiele- und Multimedia-Programmierung 3
N Problem mit 2D Spiel Spiele- und Multimedia-Programmierung 17
C Minecraft Minecraft Plugin Problem Spiele- und Multimedia-Programmierung 17
R Pong Spiel Problem Spiele- und Multimedia-Programmierung 1
V Problem mit BufferStrategy Spiele- und Multimedia-Programmierung 2
Streeber Problem mit Transparenz/TextDrawing in LWJGL/Slick2d (OpenGL) Spiele- und Multimedia-Programmierung 1
E A-Stern Algorithmus Problem und Implementierung einer Map Spiele- und Multimedia-Programmierung 6
T LWJGL 2.9.2: Seltsamer Effekt beim Rendern (VertexShader Problem?) Spiele- und Multimedia-Programmierung 3
W Generelles Problem: Entscheidungsfindung Spiele- und Multimedia-Programmierung 4
T Problem bei Kollisionsabfrage Spiele- und Multimedia-Programmierung 4
C Vier Gewinnt Problem mit Ordnerstruktur Spiele- und Multimedia-Programmierung 2
T Problem mit Eclipse (java)-(minecraft) Spiele- und Multimedia-Programmierung 3
I Textbasiertes Spiel - Umsetzungsfrage & Schleifen Problem Spiele- und Multimedia-Programmierung 26
M Sound Problem Spiele- und Multimedia-Programmierung 3
T Problem beim Aufbau des Spielfelds Spiele- und Multimedia-Programmierung 18
M Sound Engin Problem 2 Spiele- und Multimedia-Programmierung 2
J Problem bei der GUI - Zu viele Spielbretter Spiele- und Multimedia-Programmierung 2
D LWJGL gluLookAt "Umschauen" Problem Spiele- und Multimedia-Programmierung 0
D Problem mit Würfelanimierung in LWJGL Spiele- und Multimedia-Programmierung 7
C Zeldaklon Problem mit Wand-Kollision Spiele- und Multimedia-Programmierung 8
0 Boxen übereinander stapelt Problem Spiele- und Multimedia-Programmierung 5
D Textfield im Game ,Problem: while-Schleife Spiele- und Multimedia-Programmierung 3
R 2D platformer - enemy damage -> TIMER PROBLEM Spiele- und Multimedia-Programmierung 3
S LWJGL Kamera Problem - Alles verzerrt Spiele- und Multimedia-Programmierung 4
B LWJGL StackOverFlow Problem nach 30sekunden. (Pong) Spiele- und Multimedia-Programmierung 2
Seikuassi LWJGL-Problem Spiele- und Multimedia-Programmierung 2
L Minecraft Minecraft Plugin programmieren (Craftbukkit 1.7.2) Problem Spiele- und Multimedia-Programmierung 4
B Minecraft mehr Ram zuweißen Problem Spiele- und Multimedia-Programmierung 0
K Bukkit Plugin Problem Spiele- und Multimedia-Programmierung 3
Y Problem mit repaint() in run() Spiele- und Multimedia-Programmierung 2
X Kleines Problem mit Java Reflections und einem eigenen Eventhandler Spiele- und Multimedia-Programmierung 1
T Problem mit Kollisionsabfrage der NPC Spiele- und Multimedia-Programmierung 1
J Minecraft Problem mit dem JRE - Minecraft Spiele- und Multimedia-Programmierung 3
TheSorm Problem mit 2 classen NullPointerException Spiele- und Multimedia-Programmierung 1
S Problem mit 4 gewinnt(MinMax Algorithmus) Spiele- und Multimedia-Programmierung 2
N Problem in der Main.class Spiele- und Multimedia-Programmierung 1
J Blöcke, Hitboxen, Koolisionsabfrage - Problem Spiele- und Multimedia-Programmierung 8
S Problem mit 3d-Polygon Spiele- und Multimedia-Programmierung 2
A Problem mit Sound Spiele- und Multimedia-Programmierung 5
C Nxt Duell Problem Spiele- und Multimedia-Programmierung 4
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
ruerob Problem bei Fade-Out von Sounds Spiele- und Multimedia-Programmierung 3
L [Slick2D] Problem bei Speicherfreigabe Spiele- und Multimedia-Programmierung 2
M Bukkit Plugin Problem Spiele- und Multimedia-Programmierung 22
T Java3D Rendering Problem Spiele- und Multimedia-Programmierung 7
J Problem bei pixelgenauer Kollisionsabfrage Spiele- und Multimedia-Programmierung 10
F Problem mit dem Abspielen von byte[] (Audioprogrammierung) Spiele- und Multimedia-Programmierung 2
C Problem mit Abspielen von Audio-Dateien Spiele- und Multimedia-Programmierung 3
R Problem bei Farbe ändern/4Gewinnt Spiele- und Multimedia-Programmierung 5
R StringIndexOutOfBoundsException - Problem Spiele- und Multimedia-Programmierung 2
S Problem mit Sichtfeld/Licht in einem Raster Spiele- und Multimedia-Programmierung 5
G Acht-Damen-Problem HILFE! Spiele- und Multimedia-Programmierung 11
A TileMap KeyListener - Problem Spiele- und Multimedia-Programmierung 2
J Problem mit Threads Spiele- und Multimedia-Programmierung 8
N Problem mit Kollisionsabfrage beim Fallen Jump & Run Spiele- und Multimedia-Programmierung 5
S Problem mit Zeitsteuerung der Game Loop Spiele- und Multimedia-Programmierung 4
Fu3L Problem mit 3D Noise Spiele- und Multimedia-Programmierung 4
L Problem beim Rätsellöser Spiele- und Multimedia-Programmierung 3
D Problem beim bewegen einer Figur Spiele- und Multimedia-Programmierung 2
T Problem bei LinkedList / JPanel Spiele- und Multimedia-Programmierung 4
T Problem mit ClassLoader und LWJGL Spiele- und Multimedia-Programmierung 5
M Scrolling Repaint Problem Spiele- und Multimedia-Programmierung 2
Samake03 [Problem] layeredPane bzw. Viewport Spiele- und Multimedia-Programmierung 3
Helgon glTexParameter / glTexImage2D Problem Spiele- und Multimedia-Programmierung 11
T Jmonkey opengl problem Spiele- und Multimedia-Programmierung 13
M Problem mit Kamera (glMultMatrix (OpenGL/ LWJGL)/ Quaternionen) Spiele- und Multimedia-Programmierung 5
M Problem mit Gameserver / Datensynchronisation Spiele- und Multimedia-Programmierung 10
G Mein erstes minigame -> problem mit Methode Spiele- und Multimedia-Programmierung 3
X Geometry Wars Clone Problem Spiele- und Multimedia-Programmierung 4
H Problem mit JMonkeyEngine3 und OgreXML Spiele- und Multimedia-Programmierung 3
D [JOGL 2.0] Kleines Problem mit freier Flugsteuerung Spiele- und Multimedia-Programmierung 3
A JAVA3D TransformGroup <--> Group Problem Spiele- und Multimedia-Programmierung 3
U [JOGL 1.1.1a]Kleines Problem mit Text Overlays: Spiele- und Multimedia-Programmierung 19
T Problem mit JnR-Steuerung / KeyListener Spiele- und Multimedia-Programmierung 6
D Problem Mit Miensweeper Clone & rekursive Methode Spiele- und Multimedia-Programmierung 4
M Performance Problem bei BufferedImage Spiele- und Multimedia-Programmierung 7
T Problem mit Speicherverbrauch Spiele- und Multimedia-Programmierung 5
S Programmstruktur Problem! Spiele- und Multimedia-Programmierung 8
BattleMaster246 Problem mit Jogl Spiele- und Multimedia-Programmierung 14
C MP3 Handler-Problem Spiele- und Multimedia-Programmierung 13
C [gelöst] MP3-Codec-Problem Spiele- und Multimedia-Programmierung 2
K Schiebepuzzle Array Zufallszahlen Problem Spiele- und Multimedia-Programmierung 8
J Java 3D Problem Spiele- und Multimedia-Programmierung 2
G Eclipse Problem mit Java3d Spiele- und Multimedia-Programmierung 3
H Repaint-Problem mit Quaxlis Tutorial Spiele- und Multimedia-Programmierung 2
C Java Sound API Clip.Close() Problem Spiele- und Multimedia-Programmierung 1
K Problem beim Anzeigen von Bildern Spiele- und Multimedia-Programmierung 5
D Problem mit Überprüfung beim Lottospiel Spiele- und Multimedia-Programmierung 6
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5

Ähnliche Java Themen


Oben