3D Objekte mit einer Linie Verbinden

mattn

Aktives Mitglied
ich will 2 würfel (objekt 'box') mit einer linie verbinden
hier die transformgroups und die objekte
Java:
TransformGroup BoxTG = new TransformGroup();
Transform3D BoxT3D = new Transform3D();
BoxT3D.setTranslation(new Vector3f(0f,0f,-10f));
BoxTG.setTransform(BoxT3D);
		
TransformGroup BoxTG2 = new TransformGroup();
Transform3D BoxT3D2 = new Transform3D();
BoxT3D2.setTranslation(new Vector3f(2f,0f,-10f));
BoxTG2.setTransform(BoxT3D2);

box1 	= new Box(0.5f,0.5f,0.5f, BoxAppearance);
box2 	= new Box(0.5f,0.5f,0.5f, BoxAppearance);

ich will will nun die mittelpunke der beiden würfel bestimmen da diese punkte start und ende für die linie sind

ich habe mir das so gedacht...
Java:
public void center(Box x){
		//Mittelpunkt holen
		bar = new Point3d();
		if ( x.getBounds() instanceof BoundingSphere ) {
			((BoundingSphere)x.getBounds()).getCenter(bar);
			if(x == box1)System.out.println("box1");
			if(x == box2) System.out.println("box2");
			System.out.println("center is: " + bar);
		}
	}

als output bekomm ich den punkt auch in der form
Code:
(-0.05405956193200769, -0.22147945123557278, -0.05405956193200769)

um an die einzelnen pkt zu kommen werd ich das wohl zum sting umwandeln und das dann via array auslesen....

so nun das problem... die mittelpunkte der beiden würfel sind exakt gleich...liegt bestimmt daran das diese koordinaten auf den würfel und nicht auf das universe beziehen...
wie kann ich das so ändern das ich die koordnaten der mittelpunkte der würfel relativ zum universe bekomm, damit ich diese mit folgender methode als punke übergeben kann

Java:
public void createLine(){
	    
		Appearance app = new Appearance();
	    ColoringAttributes ca = new ColoringAttributes(white,
	        ColoringAttributes.SHADE_FLAT);
	    app.setColoringAttributes(ca);
		// Plain line
	    Point3f[] plaPts = new Point3f[2];
	    plaPts[0] = new Point3f(-0.9f, -0.7f, 0.0f);
	    plaPts[1] = new Point3f(-0.5f, 0.7f, 0.0f);
	    
	    LineArray pla = new LineArray(2, LineArray.COORDINATES);
	    pla.setCoordinates(0, plaPts);
	    Shape3D plShape = new Shape3D(pla, app);
	    rootBG.addChild(plShape);
	}

so nun will ich die linie zeichnen ....

muss irgendwie mit getLocalToVworld gehen ...
bekomm da aber auch keinen pkt raus
 
Zuletzt bearbeitet:

Marco13

Top Contributor

als output bekomm ich den punkt auch in der form
Code:
(-0.05405956193200769, -0.22147945123557278, -0.05405956193200769)
um an die einzelnen pkt zu kommen werd ich das wohl zum sting umwandeln und das dann via array auslesen....


Klingt abenteuerlich. In der Methode hast du den Punkt doch schon, nämlich genau 'bar' ???:L


so nun das problem... die mittelpunkte der beiden würfel sind exakt gleich...liegt bestimmt daran das diese koordinaten auf den würfel und nicht auf das universe beziehen...

Das klingt auch seltsam ... Die Koordinaten des Mittelpunktes einer Box in Java3D sind (bezogen auf den Würfel bzw. die Box) immer (0,0,0). Wenn dort ein anderer Wert rauskommt (kann's gerade nicht testen) dann steckt da entweder schon eine Transform mit drin (und dann sollte die auch für beide Würfel unterschiedlich sein), oder bei der Sache mit der BoundingSpehe geht irgendwas gewaltig schief. Das mit der BoundingSphere ist eh ein Krampf. Man sollte das nicht brauchen. Wenn man eine Box mit
box1 = new Box(0.5f,0.5f,0.5f, BoxAppearance);
erstellt, dann sollte ihr Mittelpunkt bei (0,0,0) liegen.

Wenn man diese Box nun mit EINER TransformGroup transformiert
Code:
TransformGroup BoxTG2 = new TransformGroup();
Transform3D BoxT3D2 = new Transform3D();
BoxT3D2.setTranslation(new Vector3f(2f,0f,-10f));
BoxTG2.setTransform(BoxT3D2);
[b]sceneGraphWurzelknoten[/b].add(BoxTG2);
(also wenn sie NICHT an einer "Kette" von mehreren hintereinandergeschalteten TransformGroups) hängt, dann sollte der Mittelpunkt eigentlich genau dem Translationsanteil der Transform3D entsprechen. Oder einfacher ausgedrückt: Im obigen Beispiel sollte der Mittelpunkt der Box bei (2f,0f,-10f) liegen ... Falls sie das nicht tut, wäre ein KSKB nicht schlecht, aber ich weiß nicht genau, wann nicht das ausprobieren könnte.

Falls die Boxes an einer "Kette" von mehreren hintereinandergeschalteten TransformGroups hängen, kann man sich die Transform3D der letzten TransformGroup (wo die Box dranhängt) mit getLocalToVWorld holen, und auch dort sollte der Mittelpunkt der Box dann einfach der Translationsanteil dieser Transform3D sein (also die letzte Spalte der Matrix)....
 

agentone

Bekanntes Mitglied
Wenn du eine Box einfach so zur Welt hinzufügst, ist ihr Mittelpunkt gleich dem Koordinaten-Ursprung der Welt.
Wenn diese Box dann nach "new Vector3f(0,0,-10)" transformiert wird, dann ist ihr Mittelpunkt auch genau bei (0,0,-10).

Ich kann dein Problem also nicht so ganz nachvollziehen...

edit: Übrigens hat die Klasse Point3d die drei öffentlichen Variablen x, y und z ...
Deine in String umwandeln und dann irgendwie in Array konvertieren kommt mir deshalb ziemlich umständlich vor. Point3d (Java 3D API)
 
Zuletzt bearbeitet:

mattn

Aktives Mitglied
Wenn du eine Box einfach so zur Welt hinzufügst, ist ihr Mittelpunkt gleich dem Koordinaten-Ursprung der Welt.
Wenn diese Box dann nach "new Vector3f(0,0,-10)" transformiert wird, dann ist ihr Mittelpunkt auch genau bei (0,0,-10).

ja das mit dem vector hab ich dann auch herausgefunden, indem ich die linie statisch von dem vector von box1 zu dem von box2 gezogen habe...


Ich kann dein Problem also nicht so ganz nachvollziehen...

ich will die würfel mit der maus bewegen und die linie soll dem würfel folgen.... bzw die line soll die würfel weiterhin verbinden.... das will ich mit dem mousepickbehavior machen.. wenn dieser 'aktiviert' wird soll das prog. den neuen mittelpunkt (vector der translation) des würfels auslesen, damit dieser punkt der funktion übergeben werden kann, welche die linie zeichnet

das ding ließt brav den vector aus ...
Java:
	public void koordinatenHolen(){
		System.out.println("koordinatenHolen");
		BoxTG.getTransform(BoxT3D);
		Vector3f translation = new Vector3f();
		BoxT3D.get(translation);
		System.out.println(translation);
	}

nur soll der das nur machen wenn
Java:
pickT.transformChanged(1, BoxT3D); //0-ROTATE | 1-TRANSLATE | 2-ZOOM

"true" ist

EDIT...
ok hat geklappt das der die koordinaten ausliest ...
habe wohl den falschen ansatz bei der callbacksache gehabt
der rest dürft 'nur' noch logik sein
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
P mehrer Verschiedene Objekte in einer Klasse erstellen. Allgemeine Java-Themen 4
S Algorithmus um Objekte auf einer Flaeche mit gleichem Abstand anzuordnen..? Allgemeine Java-Themen 20
N 2 Objekte zu einer Gruppe zusammenfügen Allgemeine Java-Themen 7
E Objekte in einer Liste suchen. Allgemeine Java-Themen 4
D LinkedList anhand einer long-Variable der Objekte sortieren Allgemeine Java-Themen 5
K Suche alle Objekte einer bestimmten Klasse Allgemeine Java-Themen 2
H In Testklasse Objekte erzeugen und in einer Schleife ausgebe Allgemeine Java-Themen 4
C Objekte einer Klasse zählen Allgemeine Java-Themen 25
G Objekte in einer Schleife erzeugen? Allgemeine Java-Themen 10
schegga_B javax.crypto - Cipher Objekte - Sevice Provider matching? Allgemeine Java-Themen 1
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
L Objekte in Set nicht gefunden Allgemeine Java-Themen 13
Avalon Data Transfer Objekte aus Datenbank erstellen Allgemeine Java-Themen 8
G Objekte mit Strings Aufrufen Allgemeine Java-Themen 8
H Objekte speichern und laden Allgemeine Java-Themen 10
H Objekte speichern und laden Allgemeine Java-Themen 1
MiMa Referenz auf Objekte und deren Inhalte Allgemeine Java-Themen 12
W Objekte reproduzieren Allgemeine Java-Themen 2
W Objekte per Reflexion instanziieren Allgemeine Java-Themen 7
W Unittest - Objekte simulieren Allgemeine Java-Themen 7
T OOP Objekte mit Erweiterung Initialisieren Allgemeine Java-Themen 6
O Erste Schritte Objekte als Datenelemente Allgemeine Java-Themen 14
J Equals Mock Objekte Allgemeine Java-Themen 5
J Mockito - Objekte miteinander vergleichen (equals) Allgemeine Java-Themen 6
N Bei Mouse Events nicht mehrere Objekte erstellen Allgemeine Java-Themen 13
J Java Objekte = null, Garbagecollector Allgemeine Java-Themen 12
F Listen - Mehrere Objekte Allgemeine Java-Themen 1
J Verständnis Frage zur Instanz, Objekte, Instanzierung, Referenz Allgemeine Java-Themen 14
F Objekte erzeugen Allgemeine Java-Themen 1
E Threads ThreadPoolExecutor remove mit callable Objekte Allgemeine Java-Themen 3
E OOP Objekte und Methoden Allgemeine Java-Themen 1
@SupressWarnings() Umgebungsvariable Objekte "gekoppelt" Allgemeine Java-Themen 6
C Objekte in Array List speichern? Allgemeine Java-Themen 1
OnDemand Objekte speichern Allgemeine Java-Themen 8
B Objekte anhand von Properties file Allgemeine Java-Themen 41
U Tiefe Objekte schreiben Allgemeine Java-Themen 1
R Abstrakte Basisklasse und instanzierte Objekte der abgeleiteten Klasse als Basisklasse übergeben Allgemeine Java-Themen 2
E 3D Objekte in 2D Bild finden Allgemeine Java-Themen 5
J Daten aus GUI auslesen und in Objekte umwandeln Allgemeine Java-Themen 6
F FileOutput/Input Objekte Allgemeine Java-Themen 6
OnDemand Objekte serialisieren Allgemeine Java-Themen 3
J unterschiedliche Objekte, selbe getter und setter Allgemeine Java-Themen 15
L Lib gesucht: Java-Objekte mit JSON Allgemeine Java-Themen 2
U Set erklären dass objekte gleich sind Allgemeine Java-Themen 12
E Best Practice Verdammt große Objekte Allgemeine Java-Themen 10
B Mehrere Objekte verschlüsselt serialisieren Allgemeine Java-Themen 6
G Liste anzahl der gleichen Objekte Allgemeine Java-Themen 6
N Objekte an eine andere Applikation übergeben Allgemeine Java-Themen 3
M Instanzierte Objekte in XML Dokument speichern Allgemeine Java-Themen 3
B Verschiedene Objekte in Abhängigkeit eines Typs instanziieren. Allgemeine Java-Themen 17
K Input/Output Im Programm instanzierte Objekte Speichern und laden Allgemeine Java-Themen 3
S OOP Objekte als Return-Werte: Einen Klon zurückgeben oder Instanz auf das Feld? Allgemeine Java-Themen 10
H Objekte Serialisiert speichern Allgemeine Java-Themen 10
L MouseListener für viele Objekte erstellen Allgemeine Java-Themen 16
5 Objekte Sortieren lassen Allgemeine Java-Themen 7
N Objekte aus Array Inhalt erzeugen Allgemeine Java-Themen 8
L Input/Output Textdatei in Objekte überführen? Allgemeine Java-Themen 4
R Input/Output Objekte speichern ohne überschreiben Allgemeine Java-Themen 7
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
H Threads Thread stirbt aber Objekte in ihm leben weiter?! Allgemeine Java-Themen 9
M Java Objekte in XML mit JAXB Allgemeine Java-Themen 9
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
H COM-Objekte/ AktiveX Objekte Allgemeine Java-Themen 4
C Script für Website mit Objekte Ausblenden Allgemeine Java-Themen 3
M Txt einlesen & Objekte erzeugen Allgemeine Java-Themen 2
X Objekte aus TableModel serialisieren und deserialisieren Allgemeine Java-Themen 4
T ObjectInputStream - Arrayliste, die unbekannte Objekte enthält Allgemeine Java-Themen 9
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
D Grafische Objekte zeichnen Allgemeine Java-Themen 4
A Wie zur Laufzeit auf Objekte zugreifen Allgemeine Java-Themen 7
F Referenzen auf Objekte Allgemeine Java-Themen 5
H Eclipse und Objekte Allgemeine Java-Themen 6
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
I Über eine Liste iterieren und Objekte löschen. Wie löst man das sauber? Allgemeine Java-Themen 5
I Pattern zum Erweitern existierender Objekte Allgemeine Java-Themen 4
N Dynamische Objekte / DB Allgemeine Java-Themen 5
J Objekte binär speichern Allgemeine Java-Themen 10
TiME-SPLiNTER Unbekannte Anzahl serialisierter Objekte lesen Allgemeine Java-Themen 2
V Objekte in Kategorien einteilen. Allgemeine Java-Themen 6
F Wie zur Laufzeit ganz neue Objekte erzeugen? Allgemeine Java-Themen 5
A Dummy-Objekte für Webgui erzeugen Allgemeine Java-Themen 12
W Objekte speichern mit JFileChooser Allgemeine Java-Themen 8
D befehl auf mehrere objekte anwenden Allgemeine Java-Themen 7
L Objekte in Liste packen Allgemeine Java-Themen 2
S XML in Objekte wandeln. Euer Rat? Allgemeine Java-Themen 12
G Objekte serialisieren Allgemeine Java-Themen 2
L Parameter-Objekte verändern oder nicht? Allgemeine Java-Themen 6
D Objekte nur unter bestimmten Voraussetzungen erzeugen Allgemeine Java-Themen 4
S Objekte mit Arrays Allgemeine Java-Themen 9
F Objekte oder besser ID in Listen speichern? Allgemeine Java-Themen 2
S erzeugte objekte zählen Allgemeine Java-Themen 3
U auf Objekte mit variablem Namen zugreifen Allgemeine Java-Themen 4
Airwolf89 dynamischer Zugriff auf Variablen/ Objekte Allgemeine Java-Themen 4
Landei Objekte ohne Konstruktoraufruf erzeugen Allgemeine Java-Themen 7
E tiefe Kopie nicht serialisierbarer Objekte Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben