# Neueinsteiger: JOGL oder Java3d



## sockeqwe (9. Jul 2007)

Hi,
ich möchte nun beginnen ein bisschen 3D in Java zu programmieren. Ich hab mich nun ein bisschen im Internet schlau gemacht. 

Dabei habe ich in erfahrung gebracht, dass JOGL und JAVA3D die wohl beliebtesten und bekanntesten 3D Pakete sind.

Nun wollte ich fragen, was der Größte unterschied zwischen den Beiden sind?
Den sie verwenden ja beide OpenGL oder?

Welches würdet ihr mir empfehlen zu verwenden?

Bei JOGL hab ich ein großes Problem, das ich es nicht schaffe das zu "installieren"....

Ich versteh nicht wie ich das in Eclipse als Import hineinbekomme, das dann der Aufruf funktioniert.

Habe auch das aktuelle JOGL.jar in das JAVA Verzeichnis kopiert: C:\Programme\Java\libs\
hineinkopiert. So wie ich das mit JDBC für Datenbankanbindung auch gemacht habe. Da hat es dann einfach so
funktioniert. Nur mit JOGL hab ich das damit noch nicht geschafft. 

Kann mir da auch einer weiter helfen?


----------



## tuxedo (9. Jul 2007)

Schau dir doch auch mal "JMonkeyEngine" an... --> www.jmonkeyengine.com 

Einfache API mit gutem Szenengraph... Fand ich jetzt persönlich schicker wie nacktes JAVA3D ...


----------



## egrath (9. Jul 2007)

Hallo,

auch wenn JMonkeyEngine eine tolle Sache ist würde ich zum Einsteigen Java3D empfehlen. Und zwar aus folgenden Gründen:


 "Offizielle" 3D API von Sun für Java
 Es gibt mehr leute die sich mit Java3D auskennen als mit JMonkeyEngine, dementsprechend mehr Informationen im Netz verfügbar.

Für die Entwicklung von professionellen Anwendungen welche nicht im Gaming Bereich liegen würde ich Java3D den Vorzug geben.

Grüsse,
    Egon


----------



## tuxedo (9. Jul 2007)

Naja, allein am "professionellem" würd ich's nicht festmachen.

Wenn man keinen Szenengraph braucht ist man mit Java3D vielleicht besser dran. 

"Professionelle" Simulationen kann man recht gut mit JME machen. Wobei hier die Kombination "pfofessionell" und "simulation" nicht in den Gaming-Bereich fällt.

BTW: Die JME-Community ist nicht gerade klein.

Es gilt halt immer noch: jedem das seine ...

Gruß
Alex


----------



## sockeqwe (9. Jul 2007)

Hmmm,
wie benutzt man den JME? Einfach die jar Achives in Eclipse importieren? Oder muss ich die irgendwie in einen JAVA Ordner schieben?

Wo gibt es denn ein paar JME Tutorials? Kennt da jemand ein paar nützliche Seiten?

hab da nicht wirklich viel gefunden ...

Meine Programmierrichtung die ich anstreben würde wären schon so kleinere Games ...


----------



## Xams (9. Jul 2007)

Nimm Jpct, das ist sehr einsteigerfreundlich(Schau mal hier: http://www.java-forum.org/de/topic46139_jpct-3d-spiele-programmierung-tutorial.html)
Java 3D wird nicht mehr weiter entwicket


----------



## Marco13 (9. Jul 2007)

Java3D wird soweit ich weiß noch von einer freien Community weiterentwickelt, und Sun bringt ab und zu "Releases" raus (oder so ähnlich), aber soweit ich weiß ist der Unterschied zwischen Java3D und JOGL schon gravierend. Ich habe noch nicht nicht JOGL gearbeitet, darum ist das eigentlich "Halbwissen", aber unter der Annahme, dass dieses Halbwissen "richtig" ist:

JOGL ist vergleichsweise Low-Level. AFAIK wurde dabei in erster Linie versucht, OpenGL so genau wie möglich nachzubauen. Und OpenGL programmiert man eigentlich in C, und da ist man von Objektorientierter Programmierung schon sehr weit weg. (NB: Ob JOGL auch "High-Level"-Convenience-Funktionen (und z.B. einen Szenegraphen) anbietet, müßte man nachlesen). Der Vorteil ist dabei, dass man "alles machenkann, was auch mit OpenGL geht" (von extremen Sachen wie Shadern vielleicht(!) abgesehen). Demgegenüber ist Java3D sehr High-Level. Alles sind Objekte, und man kann nichts darstellen, was nicht im Szenegraphen hängt. Der Vorteil ist, dass man "mal schnell" einen Szenegraphen basteln und mit einem MouseOrbitBehavior ein Objekt frei im Raum drehen kann. Allerdings hat man teilweise schon SEHR wenige Einfluß auf das, was dort "Hinter den Kulissen" passiert (man kann z.B. fast nicht zu einem fest definierten Zeitpunkt rendern o.ä).


----------



## tuxedo (9. Jul 2007)

Zu JME hab ich mal ne Setup-Howto in meinem Wiki gebastelt:
http://wiki.root1.de/index.php?n=Java.JmeSetup

Infos, das offizielle Wiki und Forum findest du hier: www.jmonkeyengine.com

- Alex


----------



## sockeqwe (9. Jul 2007)

Danke


----------



## egrath (9. Jul 2007)

alex0801 hat gesagt.:
			
		

> Wenn man keinen Szenengraph braucht ist man mit Java3D vielleicht besser dran.



Java3D ist Scenengraph basierend. Du hast schon recht, dass jedem das seine ist - für mich ist halt der Scenegraph basierende Ansatz wie ihn J3D bietet wesentlich griffiger als die State Machine von bsp. OpenGL (JOGL). 

JME bietet zwar auch ein SceneGraph basierendes System aber es macht halt irgendwie den Anschein eines Systems welches eher für die Spieleentwicklung konzipiert ist. Vor allem wenn man sich die Referenzen auf deren Homepage ansieht.

Grüsse,
    Egon


----------



## Evil-Devil (10. Jul 2007)

JOGL/LWJGL bilden OpenGL nicht nach, sie bilden eine direkte Schnittstelle über JNI zu OpenGL. ALles was die OpenGL API bietet kann man damit dann ansprechen. Tutorialsmäßig gibt es sehr viele gute Quellen zu OpenGL, unter anderem die Quake 3 Engine dessen Source freigegeben wurde.

@J3D: Steht nicht irgendwo in der offiziellen Beschreibung von J3D das J3D ein Scenegraph ist? Meine das so gelesen zu haben.

@Shader: Ich weiß zwar nicht wie das unter J3D mit Shadern aussieht, bei JOGL/LWJGL hast du aber den vollen Zugriff auf GLSL, du bist lediglich in deiner eigenen Hardware limitiert. Hast du zb. eine Geforce 8800, könntest du  theoretisch Shader für das Shader Modell 4 schreiben. ^^


----------



## tuxedo (10. Jul 2007)

Evil-Devil hat gesagt.:
			
		

> @J3D: Steht nicht irgendwo in der offiziellen Beschreibung von J3D das J3D ein Scenegraph ist? Meine das so gelesen zu haben.



Da muss ich was durcheinander gebracht haben. Sorry. 

@egrath

Naja, was ist wohl der Hauptabsatzmarkt im 3D Bereich der einem Einfällt wenn man vorm PC sitzt: Spiele ...
Aber mit 3D kann man ja nicht nur spielen. Das Fraunhofer Institut in Karlsruhe (durfte ich mal von innen sehen  ), machtsehr viel auf dem 3D-Gebiet. Und die haben auch Szenengraphen etc. Eben alles was man auch für ein 3D-Spiel so braucht um einen gewissen Realismus zu erzeugen.


----------



## Quaxli (11. Jul 2007)

Dann gebe ich auch noch mal meine Senf dazu, damit die Entscheidung noch etwas schwieriger wird:



> Nimm Jpct, das ist sehr einsteigerfreundlich(Schau mal hier: http://www.java-forum.org/de/topic46139_jpct-3d-spiele-programmierung-tutorial.html)
> Java 3D wird nicht mehr weiter entwicket



Dem stimme ich prinzipiell zu, da ich schon eine Weile mit Java und 3D rumexperimentiere. ABER: Was mich doch ein wenig stört ist, daß auf der Homepage von JPCT kein Einsteigertutorial enthalten ist (zumindest habe ich es trotz intensiver Suche nicht gefunden). Ich habe mir mein erstes Programm mühevoll über die beiden Beispiele zusammengefrickelt und empfinde es schon als Nachteil, wenn kein Tutorial für Einsteiger vorhanden ist.


----------



## egrath (11. Jul 2007)

> Nimm Jpct, das ist sehr einsteigerfreundlich(Schau mal hier: http://www.java-forum.org/de/topic46139_jpct-3d-spiele-programmierung-tutorial.html)
> Java 3D wird nicht mehr weiter entwicket



Hallo,

also dass Java3D nicht mehr weiterentwickelt wird kann ich nicht nachvollziehen wenn man sich die CVS Logs des J3D Repositories ansieht. Sun selbst will in naher Zukunft JOGL als Unterbau für J3D implementieren (hab ich vor kurzen in einem Sun-Blog gelesen)

Grüsse, Egon


----------



## ice-breaker (12. Jul 2007)

egrath hat gesagt.:
			
		

> Hallo,
> 
> also dass Java3D nicht mehr weiterentwickelt wird kann ich nicht nachvollziehen wenn man sich die CVS Logs des J3D Repositories ansieht. Sun selbst will in naher Zukunft JOGL als Unterbau für J3D implementieren (hab ich vor kurzen in einem Sun-Blog gelesen)
> 
> Grüsse, Egon



*gg*
das sagen sie schon lange, genauso wie schon seit Langem an JMF weitergearbeitet werden sollte


----------



## Xams (15. Jul 2007)

Quaxli hat gesagt.:
			
		

> Dann gebe ich auch noch mal meine Senf dazu, damit die Entscheidung noch etwas schwieriger wird:
> 
> 
> 
> ...


Gut da muss ich dir recht geben, andererseits hat man hierdirekten KOnntakt zum Entwickler und kann demm genug Fragen stellen, desweiteren sind die Klassen sehr gut dokumentiert. Ausserdem scheib ich gerade am Tutorial (siehe Post oben)
MFG


----------



## Quaxli (16. Jul 2007)

Ich will aber nicht wegen jeder kurzen Frage dem Entwickler 'ne Message schicken müssen. Und ein Tutorial gehört zu einer guten Lib/Engine einfach dazu. Dein Tutorial ist halt leider auch noch nicht fertig und wird, wie es aussieht, wohl noch etwas dauern (nicht böse gemeint).
Ich hab' schon 'ne Stunde rumgedocktert, bis ich mein Anfangsprogramm, daß Du jetzt verwendest hingefpriemelt hatte. Imho fängt ein gutes Tutorial aber gleich mal mit dem bekannten "Hello World" oder ähnlichem an, damit der geneigte Anwender mal ein Erfolgserlebnis hat. Zu jeder besseren 3d-Engine gibt es ausführliches Tutorial um dem Einsteiger die Anwendung zu erleichtern. Bei JPCT fehlt das halt leider noch. Was ich sehr schade finde, da sie mir sehr gut gefällt.


----------



## Evil-Devil (16. Jul 2007)

Eine Engine/Lib kommt eigentlich immer nur mit einer Doku daher. MAn sollte schon erwarten können das der Programmierer der die Lib/Engine nutzen will eine DOku lesen kann.


----------



## Quaxli (16. Jul 2007)

Definiere Doku.
Wenn Du Doku mit API gleichsetzt, muß ich Dir widersprechen. Gerade bei komplexen Engines im 3D-Bereich.

Ich bin mir ziemlich sicher, daß es für jede gängige 3D-Engine ein Tutorial gibt.


----------



## Xams (16. Jul 2007)

Das kommt aber auch auf den Bekannthetsgrad an, für Java3D setzt sich eher jemand hin und schreibt ein Tutorial.
Es gibt ja auf der JPCT Website zumindest eine Einstiegshilfe.

>Ich will aber nicht wegen jeder kurzen Frage dem Entwickler >eine Message schicken
Klar, ich meinte damit auch nur, dass man bei Problemen Hilfe vom Entwickler bekommen kann und Egon Olsen tut das ja auch (wie du ja selbst gemerkt hast)

Ausserdem ist dein Programm, dafür das du das zusammengefriemelt hast ziemlich gut...
MFG


----------



## Evil-Devil (16. Jul 2007)

Quaxli hat gesagt.:
			
		

> Definiere Doku.


Hey, das ist mein Spruch 
Reicht mir eigentlich wie ich die Engine einbinde und was das Hauptpackage ist. Den Rest les ich mir an, da es meist keine Doku im eigentlichen Sinne gibt.



			
				Quaxli hat gesagt.:
			
		

> Wenn Du Doku mit API gleichsetzt, muß ich Dir widersprechen. Gerade bei komplexen Engines im 3D-Bereich. Ich bin mir ziemlich sicher, daß es für jede gängige 3D-Engine ein Tutorial gibt.


Die weningsten haben eine gute Dokumentation. Sei es nun auf der API Seite oder direkt Beispiele


----------

