This page (revision-33) was last changed on 04-May-2012 18:27 by Peter Hormanns 

This page was created on 16-Jan-2007 16:18 by ThomasBayen

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
33 04-May-2012 18:27 15 KB Peter Hormanns to previous FMJ
32 12-Dec-2010 17:52 15 KB ThomasBayen to previous | to last PDF-Renderer in Java
31 03-Apr-2010 19:33 13 KB Peter Hormanns to previous | to last openprozessing.org
30 28-Jan-2009 11:55 13 KB MarkusMonderkamp to previous | to last Kreativ mit Processing
29 07-Sep-2008 16:58 13 KB ThomasBayen to previous | to last Tagging
28 19-Feb-2008 21:45 13 KB PeterHormanns to previous | to last Kategorie raus
27 21-Jan-2008 13:29 13 KB MarkusMonderkamp to previous | to last Tagging
26 16-Dec-2007 19:38 13 KB ThomasBayen to previous | to last Java Advanced Imaging Framework (JAI)
25 07-Feb-2007 19:02 11 KB ThomasBayen to previous | to last Auslagerung auf die Seite JEmpire
24 07-Feb-2007 11:52 19 KB MarkusMonderkamp to previous | to last Feedback zu JEmpire
23 06-Feb-2007 19:50 19 KB ThomasBayen to previous | to last Link auf JEmpire
22 31-Jan-2007 15:40 19 KB Stefan Gaffga to previous | to last Link zu delphigl und geometrictools ergänzt
21 27-Jan-2007 15:56 18 KB ThomasBayen to previous | to last Link zu KaiEhlers' Partikelfontäne

Page References

Incoming links Outgoing links

Version management

Difference between version and

= Java-Grafik =

''Ich habe mir erlaubt, die Seite in Überschriften einzuteilen und umzusortieren sowie einiges auf JavaJNI und OpenGL auszulagern. Dabei habe ich versucht, an jeden umsortierten Absatz den Autoren dranzuschreiben, damit klar bleibt, welches Know-How wo schon vorhanden ist. Ich habe einigen erklärenden Text dazugeschrieben, allerdings in dieser Version keine echte neue Information eingefügt. Nach wie vor ist das hier eine Sammlung von Einstiegsversuchen und noch keine echte Hilfe, also bitte fleissig weiterkommentieren! -- ThomasBayen''

== Anlass ==

>>Beim LUG-Treffen im Limericks am 15.01.09 diskutierten einige LUG-Mitglieder noch zu später Stunde über Spiele-Engines und warum es keine bekannten freien Spiele-Projekte gibt.

*''(Java als Gameengine finde ich eine interessante Idee, \\und auch z.B. [FrozenBubble|http://de.wikipedia.org/wiki/Frozen_Bubble] als freies Spiel und [Crystal Space|http://www.heise.de/newsticker/meldung/83843/from/rss09]/[PyGame|http://de.wikipedia.org/wiki/Pygame] als Spieleframeworks mit Java-/Python-Bindung -- MarkusMonderkamp)''

Dabei kam zum Vorschein, daß mindestens zwei LUG-Mitglieder Visionen von eigenen grafikintensiven Spielen im Kopf haben. Dann kam der Gedanke auf, mal zu eruieren, inwiefern man z.B. in Java eine Grafik-Engine programmieren könnte, die man dann für verschiedene Projekte nutzen könnte.

Anwesend waren insbesondere ThomasBayen und KaiEhlers und zwei neue LUGer, <<JanReitzderen>> <<Namen ich mir einfach nicht gemerkt habe. (JanReitz >>und <<PatrickFabeck.PatrickFabeck)>>

Diese Seite hier soll eigentlich nur als Sammlung dienen, um Gedanken und Links zum Thema zusammenzutragen.

<<== Grundlagen ==

3D-Grafik ist normalerweise eine sehr rechenintensive Angelegenheit. Aus diesem Grunde unterstützen fast alle Grafikkarten besondere Beschleunigungen. Um auf diese zugreifen zu können, gibt es den plattform- und sprachübergreifenden Standard OpenGL. Hiervon gibt es - im Zuge der selbstverständlich fortschreitenden technischen Entwicklung auf diesem Gebiet - mehrere Versionen. Falls man eine Grafikkarte hat, die OpenGL nicht unterstützt (oder den "optimalen" Treiber nicht eingebunden hat), gibt es auch eine Software-Implementation namens "Mesa", die z.B. in XOrg eingebunden ist. Diese soll jedoch um einen Faktor von 20-200 langsamer sein! 3D-Grafik in Java ist also zuerstmal die Frage: Wie kann ich auf OpenGL zugreifen?

== Welche Möglichkeiten gibt es ==

Die Seite http://j3d.org/ ist eine sehr gute Einstiegsseite für verschiedene Java-3D-Projekte.

Alle Lösungen verwenden native Teile (sind also keine reinen Java-Libs). Dies ist ja auch logisch, weil wir ja direkt auf die API des X-Servers bzw. von Windows bzw. direkt auf die Hardware zugreifen wollen (zur Installation siehe JavaJNI) und dazu dann aus der Java-VM heraus müssen. --ThomasBayen

Gibt man in Google <OpenGL Java> ein findet man einige interessante Seiten.
Z.B. im Wiki-NJH findet man einen Beitrag wie jogle zur Java-Bücherei hinzugefügt werden kann.
Es gibt auch eine Artikel in PDF, der die Programmierung eines Springbrunnens in JAVA mit jogl
beschreibt. Auch dort wird beschrieben wie die zwei jogl-Dateien in Java eingefügt werden
müssen. --KaiEhlers--

=== Java3D ===

>>Auf der Sun-Seite wird man auf Java3D verwiesen. Das ist eine 3D-API, die von Sun (mit-)entwickelt wurde. Man <<sollmuss>> das Paket in sein JRE hineininstallieren <<(siehe(es>> <<JavaJNI).enthält>> <<native Teile, ist also keine reine Java-Lib). >>Java3d ist wohl eine ganz eigene API, also kein echtes <<OpenGL,OpenGL.>> <<greift aber natürlich intern immer auf OpenGL zurück. >>Inzwischen gibt es wohl alternativ noch einige <<direkte >>OpenGL-Implementationen. Irgendwo habe ich gelesen, daß Java3D von der Funktionalität etwas hinterherhinkt und deshalb wohl der OpenGL-Weg der bessere sei. Das würde auch das Know-How vereinfachen, weil es zu OpenGL genug Tutorials aus anderen Programmiersprachen gibt. <<DerDie>> <<VorteilHomepage>> <<kannvon>> <<natürlichJava3D>> <<sein,ist>> <<daßhttp://java3d.j3d.org/>> <<die API evtl. höher abstrahiert, besser in Java integriert und evtl. höher entwickelt ist. Um das zu entscheiden, habe ich jedoch noch nicht genug Ahnung von beiden Methoden. >>Die <<HomepageMutterseite>> <<vonhttp://j3d.org/>> <<Java3D >>ist <<http://java3d.j3d.org/

===
eine
>> <<JOGLsehr>> <<(bishergute>> <<"EmpfehlungEinstiegsseite>> <<derfür>> <<Redaktion")verschiedene>> <<===

Java-3D-Projekte.
>>Interessant sieht für mich auch Java OpenGL (JOGL) aus. <<Dieses Projekt wird auch von Sun unterstützt. Da eine einfaches Java3D-Beispiel bei mir nicht lief (siehe unten), habe ich es ausprobiert. Ein einfaches Beispiel mit einem einzelnen, bunten Dreieck ist mir gelungen. >>-- ThomasBayen

<<Die beste Implementation von OpenGL in JAVA dürfte das jogl-Projekt sein. --KaiEhlers--

=== Probleme mit OpenGL-Versionen ===

>>Ich habe mir Java3D 1.5 installiert und ein Testprogramm aus dem Tutorial in Eclipse übersetzt. Beim Start meckert dieses nur, daß es GLX 1.3 braucht und ich nur 1.2 installiert habe. Kann das jemand erklären, der sich damit besser auskennt? Angeblich kann man mit "glxinfo" feststellen, welche Möglichkeiten ein X-Server hat. Kann mir da mal jemand mit einem aktuelleren System (insbes. X-Server) sagen, ob er da mehr als 1.2 angezeigt bekommt? Oder ist das von der Grafikkarte abhängig? Kann doch nicht angehen, daß unsere Anwendung hinterher auf manchen Grafikkarten einfach gar nicht läuft?!? << >>Ich werde mal in Richtung JOGL weiterforschen; vielleicht bekomme ich dann raus, was der Unterschied zwischen 1.2 und 1.3 ist. -- ThomasBayen

In OpenGL 1.2 wurde z.B. das Multitexturing hinzugefügt, in 1.3 und 1.4 kamen dann noch Support für Vertex- und Fragmentprogramme sowie Support für Vertexbuffer-Objekte hinzu. <<-- StefanGaffga>>
<<
Wenn ich Zuhaus bin schau ich mal nach was mein glxinfo rausgibt, hab ne recht aktuelle NVidia mit proprietärem Treiber. -- JanReitz

=== Performance ===

>>Ein rein in Java programmiertes 3D-Spiel dürfte keine befriedigende Performance liefern - das liegt nicht an dem interpretierten Java-Bytecode, sondern am Garbage-Collector den man nicht frei kontrollieren kann. Bereits nach einigen Sekunden Laufzeit beginnt dieser zu arbeiten und verursacht unangenehme Ruckler im Spielablauf. Eine Lösung hier wäre es möglicherweise in C/C++ über das JNI-Interface das Rendering und die Behandlung von Kollisionserkennung zu implementieren?! -- StefanGaffga

: ''Laut [Tuning Java GC|http://java.sun.com/docs/hotspot/gc1.4.2/] oder auch [deutscher Artikel zur Java 5-GC|http://www.zdnet.de/builder/program/0,39023551,39147079,00.htm] kann man die GC genau einstellen (kommt allerdings auf einen praktischen Test an). -- ThomasBayen''

<<Wenn ich Zuhaus bin schau ich mal nach was mein glxinfo rausgibt, hab ne recht aktuelle NVidia mit proprietärem Treiber.
>>Anm. zum Java-GC: Ich habe mal mit dem Tao-Framework unter Mono rumprobiert, und hatte keine probleme mit abfallender Performance, vieleicht kann man die GC soweit unterdrücken das es erträglich ist.
-- JanReitz

<<;Links:Die beste Implementation von OpenGL in JAVA dürfte das jogl-Projekt sein.\\>>
<<*Gibt>> <<Grundblibliothekenman>> <<fürin>> <<3D-GrafikGoogle <OpenGL Java> ein findet man einige interessante Seiten.\\>>
<<**Z.B.>> <<im Wiki-NJH findet man einen Beitrag wie jogle zur Java-Bücherei hinzugefügt werden kann.
Es gibt auch eine Artikel in PDF, der die Programmierung eines Springbrunnens in JAVA mit jogl
beschreibt. Auch dort wird beschrieben wie die zwei jogl-Dateien in Java eingefügt werden
müssen.\\
--KaiEhlers--

;Links:
*
>>http://j3d.org/ - Java 3D Community Site
<<***>> http://java3d.j3d.org/ - Java3D von Sun
<<***>> http://opengl.j3d.org/ - JOGL (auch von Sun unterstützt)
<<***>> https://jogl.dev.java.net hier kann man die jogl-Dateien herunterladen.
<<***>> https://jogl-demos.dev.java.net/ - JOGL Demos (einige laufen bei mir, einige nicht - je nach "Requirements")
* <<Seiten[http://bytonic.de/]>> <<zu-->> <<freien3D>> <<AnwendungenSpiel>> <<undin>> <<SpielenJava>> <<inQuake2>> <<Java-Clone
*
>> <<die[https://lg3d.dev.java.net/de/index.html]>> <<3D-Grafik->> <<nutzenGlass Desktop>>
** <<[http://bytonic.de/][http://www.oszine.de/Article6232.html]
**
>> <<--[http://www.pro-linux.de/berichte/LG3D-Tutorial/LG3D-Tutorial.html]
*
>> <<3D[http://nehe.gamedev.net]>> <<SpielOpenGL>> <<Tutorials >>in <<Javaetlichen>> <<Quake2 CloneSprachen>>
<<***>> [http://icculus.org] Einige 3D Engines/Spiele als OpenSource (auch sehr Fortgeschrittene ala Quake 3 oder Decent)
* [Crystal Space|http://www.heise.de/newsticker/meldung/83843/from/rss09] 3D-Engine für z.B. [Planeshift|http://de.wikipedia.org/wiki/Planeshift], auch mit Java-Anbindung
<<** [https://lg3d.dev.java.net/de/index.html] - Glass Desktop
*** [http://www.oszine.de/Article6232.html]
*** [http://www.pro-linux.de/berichte/LG3D-Tutorial/LG3D-Tutorial.html]
>>* <<Tutorials
** [http://nehe.gamedev.net] OpenGL Tutorials in etlichen Sprachen
* verwandte Links, die aber andere Programmiersprachen betreffen
**
[PyGame|http://de.wikipedia.org/wiki/Pygame] Spiele-Framework der Flying-Circus-Sprache
<<*** [FrozenBubble|http://de.wikipedia.org/wiki/Frozen_Bubble] - Beweis, dass auch mit Perl grafisch ansprechender Zeitvertreib möglich sein kann.

;Kategorien:KategorieJava