# JAVA 3D vs. JOGL



## Titanpharao (11. Jul 2008)

Guten Abend,

ich habe die nächste Woche frei und wollte mich mal in eine der JAVA 3D API's einarbeiten.

Erst werde ich probieren eine eigene zu schreiben (also nur 3D Objekt dastellen). Später denke ich einer der großen API's wird schon besser und ausgereift genug sein.

NUR! Was ist besser? Ich habe schon mein Freund google gefragt, aber der hält sich sehr bedeckt.
Was denkt ihr ist schneller, aber auch umfangreicher. Bzw wie siehts mit Zukunft aus? Habe in einem Forum gelesen, das JAVA 3D nicht weiter entwickelt wird und JOGL bald JAVA std ist.
Mal eure Erfahrung mit dem Beiden schilder und vielleicht hat einer parr (besten Dt.) Tutorials  :roll: 

Danke


----------



## tuxedo (11. Jul 2008)

Du warst bei google und bist nicht auf JMonkeyEngine, JPCT und LWJGL gestoßen?

- Alex


----------



## Marco13 (11. Jul 2008)

Allgemein sind JOGL und Java3D aber ziemlich unterschiedlich - fast schon "Orthogonal" zueinander. JOGL ist eine Low-Level-API, die direkt die OpenGL-Befehle durchroutet. Java3D baut eben komplett auf dem Szenegraphen auf, und abstrahiert von Hardware- oder Renderingdetails (z.B. gibt es Java3D ja sowohl für DirectX als auch für OpenGL - JOGL für DirectX gibt's glaubich eher nicht :wink: )

Zur weiteren Entwicklung: Java3D und JOGL werden fleißig von der Community weiterentwickelt. Java3D ist ja sowieso von Sun, und afaik ist JOGL gerade dabei, von Sun "anerkannt" zu werden  http://jcp.org/en/jsr/detail?id=231. Und wenn ich es richtig in Erinnerung habe, sollen Java3D und JOGL auch irgendwie miteinander verwurstet werden - zumindest hatte ich bei meinem letzten Blick in die API-Docs einige Überschneidungen festgestellt.

Aber ein bißchen Websuche dürfte doch Aufschluß bringen http://www.google.de/search?hl=de&q=+site:weblogs.java.net+java3d+jogl+blog


----------



## Gast2 (11. Jul 2008)

Moin,



			
				alex0801 hat gesagt.:
			
		

> ... JMonkeyEngine ...



wenn ick wüsste wie ich das WasserDemo als Desktophintergrund setzen kann ... etwas die Farbe angepasst (zu dunkel, ist ja fast regnerisch) ... dann noch einen Strand und eine Palme ... ich weis CPU fressende Spielchen ... würde aber Hammer aussehen über 2 Monitore

hand, mogel


----------



## tuxedo (11. Jul 2008)

Java-Anwendungen als Desktop-Hintergrund? Glaub nicht dass da ohne irgendwelche spezialtricks geht. Und fraglich ist es dann auch, ob reines Java ausreicht, oder ob nicht doch JNI mit ins Boot muss.

- Alex


----------



## Gast2 (11. Jul 2008)

Moin,

unter Windows kannst Du eine HTML Seite als Hintergrund angeben ... das Applett darauf ist nur noch Handwerk

hand, mogel


----------



## tuxedo (11. Jul 2008)

Naja, das läuft ja schon fast unter "spezialtrick"... ;-)


----------



## Titanpharao (11. Jul 2008)

Ich suche keine Engine, sondern nur ein Werkzeug. Was sieht besser aus, fragen wir einfach mal so?
Womit geht eine hübschere Grafik? Oder hängt das alles von mir ab


----------



## Gast2 (11. Jul 2008)

Moin,



			
				Titanpharao hat gesagt.:
			
		

> Ich suche keine Engine, sondern nur ein Werkzeug.



hö? ... was willst Du machen 3D Welten erstellen (wo man durchlaufen kann) oder rendern (like Shrek & Co)


hand, mogel


----------



## Siassei (11. Jul 2008)

Titanpharao hat gesagt.:
			
		

> Ich suche keine Engine, sondern nur ein Werkzeug. Was sieht besser aus, fragen wir einfach mal so?
> Womit geht eine hübschere Grafik? Oder hängt das alles von mir ab



Ich persönlich würde dir Jogl und Java3D empfehlen. Zu Java3D gibt es eine schöne Dipl. Arbeit die es kostenlos im web gibt. Leider habe ich den Link nicht mehr   aber schon mal gelesen  :wink: Java3D ist eine High Level API -> Es ist alles bereits vorbereitet und du kannst sofort an die Arbeit machen z.B. einen Würfel in eine Welt legen und rendnern. Zudem siehst du bei Java3D eine Möglichkeit, wie du von OpenGL eine Engine erstellst und wie diese abläuft. Dies ist am Anfang sehr hilfreich.

Jogl ist dagegen eine Low Level API -> es sind so wenig Objekte wie möglich vorgegeben und den Rest musst du erst selbst Umsetzen. Dies bringt zwar einen kleinen Geschw.-Vorteil, da die Engine speziell für deine Anwendung designed ist. Jogl stellt dir also die OpenGL-Befehl unter Java bereit. Mehr oder weniger  :wink: Weitere Details kannst du später auf der Page von Jogl erfahren.

Java3D soll in den nächsten Jahren mit Jogl verschmolzen werden. Ich kenne die Ziele von Sun nicht 100%. Aber ich gehe mal davon aus, dass Jogl eine offizelle Low Level API und Java3D eine High Level API, auf Basis von Jogl, für Java SE darstellen sollen.


----------



## didjitalist (11. Jul 2008)

Das performance Argument würd ich für einen Einsteiger nicht bringen. Java3D bringt schon einiges an Optimierungen mit. Wenn man gerade erst einsteigt, werden diese, von Leuten, die wesentlich mehr Ahnung haben, als man selbst, erstellten Optimierungen sehr wahrscheinlich sowieso alles in den Schatten stellen, was man sich selbst zusammenfummelt.


----------



## Titanpharao (11. Jul 2008)

Ein Rollenspiel solls mal werden (MMORPG Zukunftsmusik  ). 
Denke mal werde mir JAVA 3D ansehen, geht ja auch mit DX was in meinen Augen noch einen Schritt vor OGL ist.
Bis welche Version von DX wird unterstützt?


----------



## tuxedo (12. Jul 2008)

Ein MMORPG? Na da wird doch sicher von den Engines wie JPCT und JME schon mehr von Haus aus mitgebracht was man fürn MMORPG braucht, oder? 
Zumindest von JME weiß ich, dass es da eine passende Physik-Engine, eine Erweiterung für extrem/beliebig große Karten und eine breite Unterstützung zum laden von Models aus diversen Formaten gibt.
JPCT hat mich auch beeindruckt was den Codeaufwand betrifft um eine begehbare 3D-Welt zu erzeugen: Das geht ziemlich fix.


Ob das mit Java 3D genauso ist? Keine Ahnung.

- Alex


----------



## Spacerat (2. Okt 2008)

Hallo...

Ich würde hier ganz klar JOGL den Vorzug geben. JOGL hat den Vorteil, das man beim Einarbeitungsprozess auf Codeschnipsel, Tutorials usw. aus C oder C++ zurück greifen kann* wärend man beim Einarbeitungsprozess in Java3D ausschliesslich an dieses spezielle Java-API gebunden ist. Im übrigen benutzt Java3D, sofern es im GL-Modus läuft, genau jene nativen OpenGL Methoden welche bei JOGL schlicht "durchgeschliffen" werden. Wenn man sich vor Augen führt, warum dieser Performancevergleich (z.B. indem man sich den JOGL-Quellcode genauer anschaut) eigentlich nur ein Witz ist (die Zahlen sind scheinbar nur zufällig verschieden), kann man sich sein eigenes JOGL basierendes Java3D basteln oder warten, bis Sun diese beiden APIs auf diese Weise vereint (verwurstet). Schliesslich ist es ja völlig egal, ob Java3D JOGL-Methoden oder native OpenGL-Funktionen aufruft. Sehr Empfehlenswert: NeHe Tutorial als Suchbegriff bei Google oder, wenn einem die englischen Tuts genügen, direkt bei NeonHelium nachschlagen.

cu Spacerat

* das geht in den meisten Fällen so:

```
import static javax.media.opengl.GL.*

JavaKlassenDefinition {
    JavaMethode xyz() {
        gl.openGLMethode(); // z.B. aus glEnable(LIGHTNING) C++ wird gl.glEnable(LIGHTNING) JOGL
    }
}
```


----------



## Spacerat (2. Okt 2008)

OOPS...

Hier hat sich ein Doppelpost eingeschlichen... bitte löschen danke...

cu Spacerat


----------

