# Zugriff auf einzelne Objekte



## Gourmet (15. Okt 2004)

Hallo!

Ich beschäftige mich seit einigen Tagen mit java3D, da ich ein Programm welches ich mit Director und Shockwave 3D geschrieben habe gerne in Java umsetzen würde.
Es geht um einen kleinen 3D-Park; in 3d-Max modeliert. Man kann am Anfang einzelne Objekte auswählen und die Kamera startet dann eine Rundfahrt zu diesen Objekten.

Ich habe es bis jezt geschafft meine Welt mittels eine Loaders in java3D zu  laden und anzeigen zu lassen.
Um jedoch jetzt diese Kamerafahrt hinzukriegen muss ich auf die Koordinaten der einzelnen Objekte der Welt zugreifen. Der Loader gibt eine Transformgroup zurück, ich habe schon rausgefunden dass diese als Kindknoten nur eine Branchgroup hat und diese hat dann 53 Kindknoten usw... Wie kann ich jetzt überhaupt herausfinden, in welchem Knoten welches Objekt steckt? Kann ich nur über Indexe auf die Knoten zugreifen, oder habe sie auch Namen? Wenn ich in meiner 3D-Welt z.B. ein Polygon-Objekt namens Kugel habe, taucht der Name Kugel dann irgendwo in dem Szenegraf auf und kann ich dessen Transformation abfragen?

Danke !!!


----------



## Gourmet (16. Okt 2004)

Hi !!!

Also ich habe jetzt mal eine 3d Szene mit nur EINEM Würfel reingeladen und bin den SzeneGraph dann durchgegangen.
Der 3ds-Loader liefert eine TransformGroup, die hat nur ein Child, eine BranchGroup, die hat auch nur ein Child, wieder eine Branchgroup und die hat auch nur ein Child, wieder eine Transformgroup. 
Die hat auch nur ein Child, ein Shape3D. Diese hat nur eine Geometrie...
Also schließe ich mal messerscharf dass diese Geometrie mein Würfel ist...

Aber kann ich das auch irgendwie abfragen oder so ?  Also in 3dMax heißt mein Würfel wurf. Ist es überhaupt möglich, dass ich irgendwo in java den namen wurf übergebe, denn passenden Knoten im Graphen suche, die Transformation abfrage und dann die View auf diese Transformation einstelle ????  Oder nicht so ohne weiteres ...?

Wie gesagt ich beschäftige mich erst seit ein paar Tagen mit j3d und dieses Szenegrafmodell ist mir ziemlich suspekt...

Hoffe auf eine Antwort !!!! Danke !!!


----------



## Reality (16. Okt 2004)

http://fivedots.coe.psu.ac.th/~ad/jg/ch9/index.html


----------



## Guest (16. Okt 2004)

Na das sieht doch gut aus...
      Danke !!!


----------



## Oxygenic (16. Okt 2004)

Reality hat gesagt.:
			
		

> http://fivedots.coe.psu.ac.th/~ad/jg/ch9/index.html



Das hat halt nur einen Schönheitsfehler: hier wird das uralte und nicht mehr weiterentwickelte NCSA-Portfolio verwendet, das noch nicht mal als Source verfügbar ist.


----------



## Gourmet (17. Okt 2004)

Ja so ist es...

Aber wenigsten habe ich rausfinden können, dass ich einen anderen Loader brauche, welcher mir ein Scene Object zurückgibt, damit ich die getNamedObjects Methode und die Möglichkeit zur Traversierung meiner Szene bekomme...
Ich habe mir jetzt schon einige angeguckt, kann hier Jemand eine Loader empfehlen, der Scene Objecte zurückgibt? Am besten soll er natürlich Texturen, Lichter, Animationen usw... übernehmen, mindestens aber Texturen. 
Format ist eigentlich relativ egal, dennk ich, man findet ja von allem zu allem irgendwelche Konverter, oder ???


----------



## Oxygenic (17. Okt 2004)

Mit diesem Format hatte ich bisher noch nix zu tun, aber schau mal hier: http://java3d.virtualworlds.de/loader.php


----------



## Gourmet (18. Okt 2004)

Wen es interessiert...
Ich habe einen 3DS Loader gefunden, welcher ein SceneObjekt zurückgibt. Er läd auch Texturen.
Nachdem man das Scene-Object hat, kann man z.B. obiges Tuorial genauso wie dort angegeben durcharbeiten.


http://www.starfireresearch.com/services/java3d/inspector3ds.html


----------



## dergrüne (3. Dez 2007)

Servus, habe nun auch mein Glück mit dem von Gourmet geposteten 3ds loader versucht, es geht auch soweit.

Nur habe ich mit den TExturen ein Problem. Ich habe mein Model mit BLender erstellt und ihm auch in Blender eine 

Textur gegeben, welche Blender auch korrekt darstellt, wenn ich mir das gerenderte Modell in Blender anschaue.

Nun lade ich das ganze in Java und er zeigt mit zwar eine Textur an, die von dem jpg. was die Textur darstellt abhängt. 

Aber er zeigt die nunmal nicht korrekt an er zeigt nur eine farbe anstatt eine struktur an.

Hier mein Code


```
Inspector3DS loader = new Inspector3DS(".\\models\\baracks.3ds"); // constructor
		loader.setTexturePath(".\\models");	
		loader.parseIt(); // process the file
		
		TransformGroup theModel = loader.getModel();
```

Hat jemand schonmal mit Blender und dem 3ds loader gearbeitet. Muss ich das in Blender irgenwie besonders exportieren oder abspeichern? Damit man das in Java genauso texturiert erkennt, wie in Blender?

mfgh


----------



## der JoJo (4. Dez 2007)

hi, hast du die textur coordinaten selber erstellt (uv mapping) oder hast du eine automatische Funktion von Blender genutzt? das mit der Farbe klinkt nämlich sehr nach einer nicht vorhandenen uv map


----------



## dergrüne (4. Dez 2007)

Servus,

ja damit könntest du recht haben. Ich verwende dazu Accutrans, darin lassen sich für mich einfacher Texturen auf 3ds Objecte machen, als in Blender.

Jetzt habe ich leider ein Problem das das Object zwar in Java3D mit dem o.a. Code geladen wird und zwar auch mit Texturen, allerdings wenn ich das Object mit einem interpolator rotieren lasse. Fehlen bei machen seiten scheinbar die Texturen. Siehe sehen bzw. unsichtbar aus. Siehe Bilder unten:

So sieht es korrekt aus








Und hier die fehlerhaften Texturen






In dem accuTrans werden die Texturen aber von jedem Winkel aus korrekt angezeigt.

Hat jemand eine Idee oder kennt das AccuTrans evtl. sogar.

mfg


----------



## der JoJo (5. Dez 2007)

hm, das sieht so aus, als müsstest du mal unter blender die ausrichtung der Normalen prüfen (irgendwo kann man einstellen das die angezeigt werden.) Da müssten dann an jeder Fläche so kleine Striche dran sein, die die Außenseite der Fläche vorgeben.

oder du versucht unter java3d (frag mich nicht wie damit kenne ich mich nicht aus) die Option "CullFace" (oder so ähnlich) zu deaktivieren.


----------



## dergrüne (5. Dez 2007)

Alles klar Danke werde mal danach schauen.


----------

