[J3D]Dynamische Erzeugung vom Objekt Box

mattn

Aktives Mitglied
guten Mittag ^^

ich will in einer for-Schleife z.b. 100 Würfel mit eigener ID erzeugen
ich schreib einfach mal meine beiden mislungenen versuche rein... hoffendlich lacht ihr euch nicht schlapp :lol:

so erster versuch
... da gibt der mir nichts aus
Java:
TransformGroup BoxTG_[] = new TransformGroup[n];
Transform3D BoxT3D_[] = new Transform3D[n];

for(i=0; i<n; i++){
   BoxTG_[i] = new TransformGroup();
   BoxT3D_[i] = new Transform3D();
   BoxT3D_[i].setTranslation(new Vector3f(0f,0f,2f));
   BoxTG_[i].setTransform(BoxT3D_[i]);
   BoxTG_[i].addChild(new Box(0.1f,0.1f,0.1f, BoxAppearance));
   rootBG.addChild(BoxTG_[i]);
      
   System.out.println(i);
}




das scheitert dann schon an der syntax ...
Java:
TransformGroup BoxTG[];
Transform3D BoxT3D[];

for(i=0; i<n; i++){
	BoxTG[i] = new TransformGroup();
	BoxT3D[i] = new Transform3D();
	BoxT3D[i].setTranslation(new Vector3f(0f,0f,2f));
	BoxTG[i].setTransform(BoxT3D[i]);
	BoxTG[i].addChild(new Box(0.1f,0.1f,0.1f, BoxAppearance));
	rootBG.addChild(BoxTG[i]);
	
	System.out.println(i);
}
 
Zuletzt bearbeitet:

mattn

Aktives Mitglied
ok... also

ich will keine aufwendigen grafiken bauen sondern eine datenstruktur mit ihren abhängigkeiten in 3d darstellen.

das erste was ich machen will ist ein performance test... den habe ich mit folgender schleife gemacht

Java:
		x=(float)-0.5; 	//Startwert für die Schleife
		y=(float)-0.5; 	//Startwert für die Schleife
		n= 500; 		//Anzahl der Würfel, die generiert werden sollen
		
		//Generierungmehrerer Knoten noch ohne Index
		for(i=0; i<n; i++){
			
			//Formatierung für bis zu 500 Würfel --> noch optimierbar
			switch(i){
				case 50:  { y= (float)(y + 0.025);
							x=(float)-0.5;  break; //x Wert wird für nächste Zeile zurückgesetzt
				}
				case 100: { y= (float)(y + 0.025); 
							x=(float)-0.5;  break;
				}
				case 150: { y= (float)(y + 0.025);
							x=(float)-0.5;  break;
				}
				case 200: { y= (float)(y + 0.025); 
							x=(float)-0.5;  break;
				}
				case 250: { y= (float)(y + 0.025);
							x=(float)-0.5;  break;
				}
				case 300: { y= (float)(y + 0.025);
							x=(float)-0.5;  break;
				}
				case 350: { y= (float)(y + 0.025);
				x=(float)-0.5;  break;
				}
				case 400: { y= (float)(y + 0.025);
							x=(float)-0.5;  break;
				}
				case 450: { y= (float)(y + 0.025);
							x=(float)-0.5;  break;
				}
			}
			
			TransformGroup BoxTG = new TransformGroup();
			Transform3D BoxT3D = new Transform3D();
			
			
			BoxT3D.setTranslation(new Vector3f((float)x,(float)y,0f)); // x und y für 
			BoxTG.setTransform(BoxT3D);
			BoxTG.addChild(new Box(0.01f,0.01f,0.01f, BoxAppearance));
			x= (float) (x+ 0.025);
			rootBG.addChild(BoxTG);
				
			//der BoxTG die Transformationen mit der Maus erlauben
			BoxTG.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
			BoxTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
			//verschieben mit rechter Maustaste
			BoundingBox boundBox=new BoundingBox (new Point3d(-1000,-1000,-1000),new Point3d(1000,1000,1000));
			MouseTranslate mouseTranslate= new MouseTranslate(BoxTG);
	        mouseTranslate.setSchedulingBounds(boundBox);
	        BoxTG.addChild(mouseTranslate);
/*	        //zoomen mit mittlerer Maustaste
	        MouseZoom mouseBeh2=new MouseZoom(BoxTG);
	        mouseBeh2.setSchedulingBounds(boundBox);
	        BoxTG.addChild(mouseBeh2);
	        //rotieren mit der linken Maustaste
			MouseRotate behavior = new MouseRotate(BoxTG);
	        behavior.setTransformGroup(BoxTG);
	        behavior.setSchedulingBounds(boundBox);
	        BoxTG.addChild(behavior);
*/
	        
			
			//System.out.println(i);
			
		}

ergebnis sind einfach 10 zeilen a 50 würfel
ich habe an vorerst an jeden einzelnen die MouseTranslate Eigenschaft - Verschieben mit der rechten Maustaste- gehängt um die cpu auslastung zu testen ....

leider habe ich gemerkt das ich den würfel garnicht mit dem cursor "anfassen" muss um ihn zu verschieben, sondern das es reicht wenn ich irgendwo klick+die maus beweg damit sich der würfel bewegt ... da ich aber will das ich den würfel, den ich bewegen will wirklich anfassen muss, muss ich das noch ändern(geht glaube ich mit picking oder so - ging bei mir noch nicht ^^)

soweit sogut ...

später brauch aber jeder würfel eine eigene ID - z.b. via index - damit ich daten/eigenschaften oder so "dahinter" leg.... habe mich mal schlau gemacht und denke das man das mit einen vektor oder einer map lösen kann ... leider ist mir das aber noch nicht gelungen.

konntest mir folgen?
ich hoff das war verständlich - wenn nicht frag einfach :)

vllt weißt ja rat ^^
 
Zuletzt bearbeitet:

truesoul

Top Contributor
Hallo.

Hmmm , deine Beschreibung ist noch ein wenig unverständlich vorallem deine frage zu deinem Problem fehlt noch ?!?

Willst du beim "anklicken" von einem Würfel herausfinden welcher das von den 500 ist oder was?

Gruß
 

mattn

Aktives Mitglied
ja genau...

jeder würfel steht .... z.b. für ein arbeitsprozess ... wenn ich den anklick möchte ich informationen darüber (wer bearbeitet ihn ... und so weiter) ... also denk ich mir das jeder würfel eine eindeutige id braucht
 

truesoul

Top Contributor
Als erstes lese dir mal : PickCanvas (Java 3D 1.3.2) durch .

Und google bisschen danach , es gibt sehr viele hilfreiche Beiträge darüber.

Ein Tipp:
Man kann die Speicheradressen der Objekte(Nodes) vergleichen und somit unter anderem herausfinden welches Objekt angeklickt wurde.

Mfg
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Dynamische Bilder erzeugen? Spiele- und Multimedia-Programmierung 7
V Java2D dynamische Kurven Spiele- und Multimedia-Programmierung 3
pcfreak9000 Objekt-Vorlagen Spiele- und Multimedia-Programmierung 0
Arif Maus-Objekt im Player Klasse implementieren !? Spiele- und Multimedia-Programmierung 2
H Objekt der Klasse A in der Klasse B verwenden und manipulieren Spiele- und Multimedia-Programmierung 6
M [JOGL] Maus über einem gezeichnetem Objekt abfragen? Spiele- und Multimedia-Programmierung 5
U Kann nur ein Objekt mit LWJGL rendern Spiele- und Multimedia-Programmierung 2
kaoZ Graphics Objekt liefert null Spiele- und Multimedia-Programmierung 14
E Java3D Objekt skalieren per JSlider/JButton Spiele- und Multimedia-Programmierung 10
D Probleme mit objekt initializirung mit Mouselistener Spiele- und Multimedia-Programmierung 10
S Java3D: Primitives zu einem Objekt kombinieren Spiele- und Multimedia-Programmierung 7
T LWJGL 3D Objekt Collision: Wie? Spiele- und Multimedia-Programmierung 11
S Wie erkennt ein Objekt ein anderes? Spiele- und Multimedia-Programmierung 7
B j3d mehr als ein Objekt rotieren Spiele- und Multimedia-Programmierung 18
G Hindernis vor Objekt erkennen Spiele- und Multimedia-Programmierung 6
W Java3D: Kanten die hinter einem Objekt liegen werden gezeigt Spiele- und Multimedia-Programmierung 2
S Graphics Objekt weiterreichen? Spiele- und Multimedia-Programmierung 4
H Eigenes 3D Objekt Spiele- und Multimedia-Programmierung 20
D 2D Objekt fragmentieren Spiele- und Multimedia-Programmierung 3
V Jogl: Objekt trotz Rotation immer in gleiche Richtung bewegen Spiele- und Multimedia-Programmierung 5
Kr0e OpenGL .. Pixel Buffer Objekt oder Frame Buffer Object? Spiele- und Multimedia-Programmierung 2
B String zu Objekt einer eigenen Klasse casten Spiele- und Multimedia-Programmierung 13
N Objekt entgegengesetzt bewegen Spiele- und Multimedia-Programmierung 8
M BoundingBox ist nicht bündig am Objekt Spiele- und Multimedia-Programmierung 5
K Kanten anzeigen lassen in einem Shape3D-Objekt Spiele- und Multimedia-Programmierung 4
S geladenes Objekt -> Material Zuweisen. Spiele- und Multimedia-Programmierung 4
J Picking Selection auf ein Objekt begrenzen ! Spiele- und Multimedia-Programmierung 6
C Objekt bei Buttonklick zeichnen Spiele- und Multimedia-Programmierung 16
G JOGL: per Mausbewegung Objekt verschieben Spiele- und Multimedia-Programmierung 2
C Objekt zwischen 2 Geraden? Spiele- und Multimedia-Programmierung 3
D 3D Objekt entlang Geraden Spiele- und Multimedia-Programmierung 4
Quaxli Picking: Vom Shape3D zum eigentlichen Objekt Spiele- und Multimedia-Programmierung 2
G Objekt nicht ins negative oder null skalieren Spiele- und Multimedia-Programmierung 2
G Objekt verschieben Spiele- und Multimedia-Programmierung 6
G Textur laden auf ein eingelesenes 3D Objekt Spiele- und Multimedia-Programmierung 4
I ScaleInterpolator verschiebt Objekt immer in den Ursprung. Spiele- und Multimedia-Programmierung 2
V Objekt per Tastendruck anzeigen/verschwinden lassen? Spiele- und Multimedia-Programmierung 4
R Objekt mit cos/sin verschieben Spiele- und Multimedia-Programmierung 27
G Kein Licht in Box-Objekt Spiele- und Multimedia-Programmierung 2
K Ein 3D-Objekt mit Maus auswählen Spiele- und Multimedia-Programmierung 5
D Alpha Objekt Spiele- und Multimedia-Programmierung 8
H Kompliziertes 3D-Objekt Spiele- und Multimedia-Programmierung 16
G Einen gif oder jpg Datei aus einem Graphics Objekt o. JFrame Spiele- und Multimedia-Programmierung 2
C Wie kann ich ein Objekt auf Tastendruck vor & zurück bew Spiele- und Multimedia-Programmierung 3
M Position der ViewingPlatform als Point3d-Objekt? Spiele- und Multimedia-Programmierung 12
S 3D Objekt erstellen und darstellen Spiele- und Multimedia-Programmierung 4
G RotationInterp. setzt Objekt an Ursprungsposition zurück Spiele- und Multimedia-Programmierung 2
N Shape3D Objekt auf dem Bildschirm zentrieren Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben