Salve, sto usando da poco tempo il java e il 3D con qualche difficoltà.
Sto cercando di realizzare un programma che abbia un cubo che ruota prendendo le cordinate di x,y e z in input.
Ad esempio voglio creare il file pippo che richiami il metodo della classe Cubo e gli passi i dati i modo che questa classe crei il cubo, sempre usando la stessa finestra.
Sono riuscita a creare un cubo e ruotarlo cambiando le coordinate a mano con questo codice

codice:
import java.applet.Applet;
import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.applet.MainFrame;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.TransformGroup;
import javax.media.j3d.Transform3D;
import javax.media.j3d.Canvas3D;
import com.sun.j3d.utils.geometry.ColorCube;
import java.awt.*;

public class Cubo4 extends Applet
{
	// crea l’universo
	public void init()
	{
		setLayout(new BorderLayout());
		GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
		canvas = new Canvas3D(config);
		group = new BranchGroup();
		group.addChild(trasla());
		group.compile();
		universe = new SimpleUniverse(canvas);
		add("Center",canvas);
		universe.getViewingPlatform().setNominalViewingTransform();
		universe.addBranchGraph(group);
	}
	
	// trasla il cubo
	public TransformGroup trasla()
	{
		double x = Math.PI / 6;
		double y = Math.PI / 6;
		double z = Math.PI / 2;
	
		Transform3D transf2 = new Transform3D();
		Transform3D transf = new Transform3D();
		TransformGroup tg = new TransformGroup();
		/* setta la rotazione di 45 gradi intorno all’asse Y:
		l’angolo è espresso in radianti (pi greco/4) */
		transf.rotZ(z);  // si puo' usare al posto di transf.rotZ(Math.PI / 2);
		transf2.mul(transf);
		transf.rotY(y);  // si puo' usare al posto di transf.rotY(Math.PI / 6);
		transf2.mul(transf);
		transf.rotX(x);  // si puo' usare al posto di transf.rotX(Math.PI / 6);
		transf2.mul(transf);
	
			//posizione.setRotation(transf2);
			// setta la traslazione
			//transf.setTranslation(posizione);
	
		tg.setTransform(transf2);
		tg.addChild(cube);
		return tg;
	}
	
	// attributi
	private SimpleUniverse universe;
	private BranchGroup group;
	private Canvas3D canvas;
	private ColorCube cube = new ColorCube(0.3);

// main
	public static void main(String args[])
	{
		new MainFrame(new Cubo4(),400,400);
	}
}
cambiando il metodo init in modo da acquisire 3 double e da poterli passare a trasla in

codice:
group.addChild(trasla());
mi da errore dicendo che c'è già un figlio con quel nome.