PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nette kleine cross-platform scenegraph engine


SavageX
2009-10-12, 09:31:04
Hallöchen,

ich soll derzeit für ein kleines hausinternes Forschungsprojekt nach einer 3D-Engine Ausschau halten. Im Wesentlichen sind hausintern Java-Kenntnisse vorhanden (das macht die Sache in diesem Bereich nicht einfacher, aber niemand will sich wirklich C++ ans Bein binden).

Im Wesentlichen habe ich mich da spontan an Irrlicht erinnert. Daran gefällt mir:

- cross-platform
- lädt q3bsp, was sehr nett ist, da ich mit GTKRadiant/NetRadiant ziemlich schnell Sachen zusammenkloppen kann, was schonmal die Hälfte der art-pipeline abdecken würde (nein, wir wollen Crysis nicht in den Schatten stellen)
- die Geschwindigkeit ist gut
- Sachen wie Kollisionserkennung sind einfach und robust
- die Szenengraphenarchitektur erlaubt es auch nicht-3D-Gurus halbwegs klar zu kommen
- die API ist schnell erlernt, die Beispiele ermutigend ;-)

Okay, das ist C++, vielleicht also doch in den sauren Apfel beißen?

Es gibt ja mit jirr ein Java-Binding an Irrlicht, das hängt von den Versionen aber etwas hinterher und die Weiterentwicklung scheint nicht schlüssig gesichert (zumal ich anscheinend etwas zu doof bin, um z.B. eine Linux-Variante zu erstellen, obwohl es nachgewiesenerweise geht. Na, dann lass ich es halt in Wine laufen: Ewww, aber geht zur Not). Ich denke mit Jirr kämen wir durchaus "weit genug".

Aber vielleicht habe ich ja Scheuklappen auf, vielleicht gibt es ja gerade für Java was "natives"?

Gast
2009-10-12, 10:33:50
Coin3D (http://www.coin3d.org/) (eine Implementierung vom OpenInventor (http://en.wikipedia.org/wiki/Open_Inventor) Scenegraph, eigentlich der deFacto Standard),
Ist halt auch C++ aber plattformunabhängig und sauber programmiert. Gibts auch eine nette Anbindung an Qt... ;)

Simon
2009-10-12, 11:08:38
naja, wie wärs dann direkt mit ioquake (verbesserte Quake3 Engine)?

SavageX
2009-10-12, 11:14:34
Habe auch an eine Quake-Engine gedacht (ich kenne mich da am ehesten mit Darkplaces aus, aber QuakeC ist u.U. nicht vermittelbar und eher rudimentär). Der Quake-3 Gamecode ist da etwas mächtiger, aber dem Vernehmen nach nicht das aufgeräumteste. Zumal wir eigentlich ganz gerne ein Java-Binding hätten. Oder hat jemand für Quake-3 ein Minimalbeispiel der Marke "wir laden ein Level und laufen rum"?

Ganon
2009-10-12, 11:47:29
Aber vielleicht habe ich ja Scheuklappen auf, vielleicht gibt es ja gerade für Java was "natives"?

Java3D (Scenegraph-Renderer quasi). ggf. auch http://www.jmonkeyengine.com/ (ganze Engine)

Simon
2009-10-12, 12:39:00
Habe auch an eine Quake-Engine gedacht (ich kenne mich da am ehesten mit Darkplaces aus, aber QuakeC ist u.U. nicht vermittelbar und eher rudimentär). Der Quake-3 Gamecode ist da etwas mächtiger, aber dem Vernehmen nach nicht das aufgeräumteste. Zumal wir eigentlich ganz gerne ein Java-Binding hätten. Oder hat jemand für Quake-3 ein Minimalbeispiel der Marke "wir laden ein Level und laufen rum"?
In xreal gibt es java-bindings für den Gameport. Wie ausgereift das ist, weiß ich allerdings nicht.

Wenn du einen Quake Level mit einer anderen Engine laden willst, ist das nicht sonderlich schwer. Ein Level-loader ist in ein paar Stunden zusammengezimmert. Ich hab da mal was angefangen zu schreiben (http://www.vicampus.com/index.php?action=tutorials&PHPSESSID=78bc9vhtafkq56qgsa0c4k5sb2). Damit hättet ihr völlig freie Auswahl ;)

Shink
2009-10-12, 13:12:13
Xith3D hat u.a. einen Q3-Levelloader; ist eine Art Java3D-Konkurrenzprodukt.
http://xith.org/index.php?switch=features

Inzwischen ist Java3D aber denke ich schneller als Xith und wesentlich schneller als Java Monkey Engine. Vermutlich ist das aber egal für euch.

SavageX
2009-10-12, 14:11:56
Vielen Dank für die Anregungen!


Für mich sieht Xith3D zurzeit recht gut aus: q3bsp, scene graphs, auch Soundunterstützung, läuft sogar hier auf den Radeon DRI-Treibern...

Baalzamon
2009-10-12, 15:23:51
Vielleicht ein bisschen überdimensioniert aber für Ogre (http://www.ogre3d.org) gibt es über Ogre4J (http://ogre4j.sourceforge.net/) auch Java Bindings. Relativ aktuell (vom 23.09.) und wird mMn auch noch weiter mitentwickelt.

Wie gut das funktioniert, kann ich dir leider nicht sagen, da ich Ogre unter C++ nutze. Aber evtl. ist es ja trotzdem einen Blick für dich wert. Ogre bietet auf jeden Fall alles was du suchst und ist imho sehr übersichtlich strukturiert sowie einfach zu benutzen und zu erweitern.

Ich hatte mir früher auch mal Irrlicht angesehen aber Ogre hat mich von der Code-Basis her eindeutig überzeugt.

RLZ
2009-10-12, 15:30:34
Hallöchen,

ich soll derzeit für ein kleines hausinternes Forschungsprojekt nach einer 3D-Engine Ausschau halten. Im Wesentlichen sind hausintern Java-Kenntnisse vorhanden (das macht die Sache in diesem Bereich nicht einfacher, aber niemand will sich wirklich C++ ans Bein binden).
Ohne eine richtige Anforderungsliste ist es etwas schwer eine gute Antwort zu geben.
Was wollt ihr damit machen?
Was bedeutet Cross-Platform für dich?
Welche Lizenzbeschränkungen?
3D Engine oder Gameengine?
Wollt ihr vorhandenen Javacode anschließen oder ist der Javaanschluss nur wegen Angst vor einer neuen Sprache?
etc.

SavageX
2009-10-12, 19:51:45
Ohne eine richtige Anforderungsliste ist es etwas schwer eine gute Antwort zu geben.

Aye.


Was wollt ihr damit machen?


Man stelle sich ein Adventure vor, in dem man first-person rumrennt und hier und da ein bisschen quatsch und interagiert.


Was bedeutet Cross-Platform für dich?


Linux, Windows, OSX


Welche Lizenzbeschränkungen?


LGPL oder BSD wären optimal


3D Engine oder Gameengine?


Gute Frage. Kollisionserkennung, object-picker, physik und sound sollten nach Möglichkeit schon drin sein. Xith3d sieht da gut aus.


Wollt ihr vorhandenen Javacode anschließen oder ist der Javaanschluss nur wegen Angst vor einer neuen Sprache?

Java für geringe Einarbeitungszeit und weil wir gerne unkompliziert bereits bestehende Java-tools einbinden möchten.

Shink
2009-10-13, 08:56:28
Was an Xith3D (oder auch Java3D) für Java-Jünger nett ist ist auch die Integration von Swing-Elementen: Die können selbst für Sachen wie HUD verwendet werden.

Wenn man schnell Ergebnisse haben will ist es schon sinnvoll beim bevorzugten Framework zu bleiben. (Ist ja nicht nur die Sprache sondern auch die Library die einem bei einem Umstieg fehlen wird)

Daedalus
2009-10-14, 23:18:01
Inzwischen ist Java3D aber denke ich schneller als Xith und wesentlich schneller als Java Monkey Engine. Vermutlich ist das aber egal für euch.

hmm. die jme sollte mittlerweile doch schneller sein als java3d. zumal es zur jme auch relativ viel vernünftige doku und beispiele gibt. der einstieg ist also eigentlich recht einfach. gut, die vererbungs hierarchien sind teilweise böse bei der engine, aber da steigt man auch nach etwas "eingewöhnung" durch.

Shink
2009-10-15, 08:21:41
hmm. die jme sollte mittlerweile doch schneller sein als java3d.
Soweit ich weiß hat sich das geändert seit Java3D Open Source ist.
http://www.jmonkeyengine.com/forum/index.php?topic=2597.0