Projekt x3j: XML für J3D: Interesse?

Status
Nicht offen für weitere Antworten.

Illuvatar

Top Contributor
Guten Morgen allerseits :)

Mein aktuelles Projekt, wie ihr vielleicht der Überschrift entnommen habt, heißt "x3j".
Als ich irgendwann mal wieder unübersichtlichen Code mit BranchGroups, TransformGroups und was weiß ich geschrieben habe, hab ich mich gefragt, ob es nicht sinnvoller wäre, einen solchen Scenegraph in XML zu beschreiben. Herausgekommen ist jetzt erstmal eine erste Betaversion, die zwar schon funktioniert, der aber noch einiges fehlt. Das Ganze trennt die Oberfläche von der Java-Logik und ist also auch von dieser Seite aus gesehen eine gute Sache.
Wie gesagt - es ist noch lang nicht fertig. Die Frage ist jetzt: Findet ihr das Sinnvoll? Könnt ihr euch vorstellen, dass irgendjemand sowas benutzen würde? Gibt es sowas schon und ich war nur zu doof zu googlen? Die Frage ist nämlich, ob ich das jetzt weitermache, evtl. auf einer Plattform wie Sourceforge, oder ob ich das halt von dem Punkt hier aus immer soweit weiterbaue, wie ich es eben gerade brauche.

Features:
Die XML-Struktur besteht aus 4 großen Bereichen. <meta> ist ähnlich wie <head> in HTML, innerhalb von <canvas> stehen die eigentlichen scene graphs. Dann gibt es <pattern> - der (mit Argumenten veränderbare) Inhalt eines pattern kann innerhalb eines <canvas> mit einem <patternlink> eigebaut werden.
Dazu kommen <type>s. Types sind mit Klassen in der OOP vergleichbar; für nahezu jedes XML Element kann über das Attribut type eine Instanz des types erstellt werden. Wozu das gut ist? Innerhalb von types steht JavaScript-Code in Funktionen / Methoden. Jedes Element bietet events an, wenn das event ausgelöst wird, wird die entsprechende Funktion des types aufgerufen. Das JavaScript kann natürlich für die Übersicht auch in andere Dateien ausgelagert werden.
Für das Ganze gibts nochmal ne extra-Dokumentation (doc/types.txt). Ich hab die allerdings in eclipse geschrieben, und meine sämtlichen anderen Editoren (notepad, textpad, ...) machen die Tabstopps anders, so dass das etwas unfein aussieht - da hätt ich mal früher dran denken sollen, muss überarbeitet werden (vllt als HTML) :)
Damit kann simpler Code, der nicht zur eigentlichen Logik gehört, in die Datei miteingebunden werden. Theoretisch ist es dadurch natürlich auch möglich, innerhalb einer x3j-Datei ein komplettes, beliebiges Programm zu schreiben (man kann im onLoad-Event des canvas das Canvas3D einem anderen Container hinzufügen, dadurch wird es sonst nirgendwo mehr gezeigt, und man kann irgendwas komplett anderes anzeigen). Sinnvoll ist das allerdings nicht :D Für sinnvoller halte ich z.B., die x3j-Datei aus eigenem Java-Code heraus aufzurufen und dann innerhalb von event im x3j - wenn es was größeres ist - wieder eigenen Java-Code in der Programmlogik aufzurufen.
Für unterhalb des <canvas> tags sind bereits XML-tags für die meisten Klassen in javax.media.j3d geschrieben. Auch von deren Attributen ist ein großteil beschrieben und wird vom Parser erkannt.
Es gibt einen Editor, bei dem man sehr einfach und relativ schnell auf Knopfdruck das Ergebnis des Codes sehen kann. Wenn Jaxe installiert ist, wird übrigens Jaxe innerhalb des x3j-Editors als XML-Editor verwendet.

Beispiel:
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE x3j SYSTEM "x3j.dtd">
<x3j>
   <meta>
      <information key="Example" value="Simple Scenegraph / Hello, World"/>
      <information key="Author" value="Illuvatar"/>
   </meta>
   <type name="Main">
         function onMouseClick()
         {
            alert ("Hello, World");
         }
   </type>
   <canvas type="Main">
      <helper setcam="nominal" antialiasing="on" rotatingcolorcube="add">
         <orbitbehavior/>
      </helper>
      <branchgroup>
      </branchgroup>
   </canvas>
</x3j>
(zeigt nichts vom eigentlichen SceneGraph, das wäre dann zu lang geworden. Ladet das zip-Archiv runter, da sind noch paar mehr Beispiele)

To Do:
Größere Features
- Umwandlung der Beschreibungssprache von dtd in XML-Schema (warum hab ich eigentlich je dtd genommen?) - und da dann auch einiges nochmal ändern (einheitliche Darstellung von gleichen Variablenarten, Reihenfolge der Elemente, etc.)
- Einbauen von <mutator>: Standardisierte Operationen (Highlighting, Alpha ändern, ...) per XML-Tag statt im JavaScript
- <camera>: Position im Scenegraph, der die "Kamera" folgen wird
- Möglichkeit, kleine IWT (braucht euch nicht zu interessieren) und damit auch Swing-Szenen im postRender zu rendern
- evtl. Lokalisierung / I18N vereinfachen
- onXXX Attribute direkt für die Elemente - kein extra type am anderen Ende der Datei notwendig

kleinere Änderungen / Änderungen an der Beschreibung des scene graphs (ausführlicher am Ende der DTD)
- Daten in andere Dateien auslagern (bisher nur mit types möglich)
- Überall noch mehr Attribute, es sind längst nicht alle da (vor allem: <texture>, das hab ich ausgelassen)
- Restliche Elemente implementieren
- Sinnvollere Exceptions werfen, falls nötig; Exceptions schöner anzeigen
- BOUNDS IMPLEMENTIEREN! (danach geht auch soundscape, alternateappearance, fog, etc)
- <geometry> ist noch unausgereift
- <view> einbauen
- mehr JS-Funktionen vordefinieren

Download:
http://home.arcor.de/sidiousx/X3J Beta Release 1.zip
Das ganze ist bisher in meiner "Privat-Bibliothek" namens IlluLib integriert, da ich dachte, das Projekt würde kleiner werden - außerdem ist es noch mit einigen anderen Klassen von da verzahnt :) Das Archiv enthält: Die komplette IlluLib als jar, 2 Windows-cmd-Dateien um den Editor zu starten / um eine x3j-Datei anzuzeigen (Editor.cmd am Besten editieren und den Pfad zum lib-Ordner von Jaxe einfügen!), die sourcen von x3j, und die Javadoc der gesamten IlluLib (ganz unten ist x3j, de.illu.x3j.*)
Benötigt wird Java 6 - im Endeffekt werd ich aber schauen, dass es auf Java 5 läuft. Das Problem ist, dass ich javax.script extensiv nutze, und das ist bei Java 5 nicht dabei (aber ich kann irgendwie auch da ScriptEngines einbinden, ich hab das nur noch nie gemacht).

Screenshot vom X3JEditor
 

lumo

Top Contributor
verstehe ich das richtig, dass du visuelles programmieren für jogl implementierst und das dann in xml abspeicherst?
kannst du damit in echtzeit effekte creieren und preview darstellen?
 

Illuvatar

Top Contributor
Ich bin mir nicht sicher, ob ich deine Frage richtig verstehe, aber ich glaube: Ja, nur Java3D, nicht JOGL.
 
G

Gast

Gast
Das sieht erstmal sehr interessant aus. Werd mir das ganze später mal näher anschauen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Minecraft weitere Java Entwickler für minecraft projekt gesucht Spiele- und Multimedia-Programmierung 0
Kenan89 Kleines Projekt für Java Spiele- und Multimedia-Programmierung 5
D STARTHILFE gesucht !! Java-Projekt für Schule !! Spiele- und Multimedia-Programmierung 73
hdi Suche Partner für Hobby-Projekt: 2D-Strategie-Spiel Spiele- und Multimedia-Programmierung 86
P Suche Leute für ein Hobby-Projekt (Browser Game) Spiele- und Multimedia-Programmierung 4
S Gesucht: Java Profis für MMOG Projekt Spiele- und Multimedia-Programmierung 2
D BlueJ Ufo-Projekt Spiele- und Multimedia-Programmierung 10
P [Projekt] Star Four - Sci-Fi RPG Spiele- und Multimedia-Programmierung 0
P [Projekt] Radioplayer Spiele- und Multimedia-Programmierung 2
Androbin "Projekt Library" Spiele- und Multimedia-Programmierung 3
A Jogl-Projekt unter 32-Bit kompiliert und unter 64-Bit ausführen, geht das überhaubt ?? Spiele- und Multimedia-Programmierung 9
P Frage zu einem Projekt "Einarmiger Bandit" 3 Walzen / 9 Zeichnungen BLUEJ Spiele- und Multimedia-Programmierung 10
F "Doodle Jump" Projekt Spiele- und Multimedia-Programmierung 8
1 [Java3D] komplexes Projekt? Spiele- und Multimedia-Programmierung 10
T Uni Projekt - Spiel Set Spiele- und Multimedia-Programmierung 13
J Java Projekt Black Jack Spiele- und Multimedia-Programmierung 25
Developer_X Amerika-der Erste Kontakt- Projekt- Wer hat Lust mitzumachen? Spiele- und Multimedia-Programmierung 21
hdi Das java-forum.org 2D-Game Projekt/Tutorial Spiele- und Multimedia-Programmierung 6
D 4 gewinnt Projekt Spiele- und Multimedia-Programmierung 2
T Größeres Spiele Projekt - einige Fragen zur Umsetzung Spiele- und Multimedia-Programmierung 3
H Das JAVA-FORUM.ORG/DE-Spiel Projekt Spiele- und Multimedia-Programmierung 228
B Server für Spiel aufsetzen, was Shutdown ist Spiele- und Multimedia-Programmierung 3
N Minecraft Frage für einen Minecraft Server Spiele- und Multimedia-Programmierung 2
Drachenbauer Speicher-Tool für ein Spiel schreiben Spiele- und Multimedia-Programmierung 13
B Deepmind Poker Bot für PokerStars konfigurieren? Spiele- und Multimedia-Programmierung 2
G Minecraft PlayerBot (Listener Thread für jeden Spieler?) Spiele- und Multimedia-Programmierung 3
K Wie bekomme ich eine Transition für alle Objekte zum stoppen? Spiele- und Multimedia-Programmierung 1
E Organisation für Game Spiele- und Multimedia-Programmierung 1
Excess Ballerfisch für Android Spiele- und Multimedia-Programmierung 3
coolian ich brauche irgendeine gui lib für lwjgl2 Spiele- und Multimedia-Programmierung 51
krgewb Anderer Algorithmus für Bounding Box Spiele- und Multimedia-Programmierung 9
MiMa MP3 Dateien für Metadaten abgleichen Spiele- und Multimedia-Programmierung 0
Freshy Bot für Discord Spiele- und Multimedia-Programmierung 61
R Ideen für die Backend-Entwicklung eines Games gesucht Spiele- und Multimedia-Programmierung 8
G Mikrophon-/Audiosteuerung für einen Character Spiele- und Multimedia-Programmierung 1
P Tennis- Spielstand- Zähler für Schule programmieren Spiele- und Multimedia-Programmierung 6
M Logik für ein Quiz Spiele- und Multimedia-Programmierung 7
P Hilfe für Seminar Arbeit Spiele- und Multimedia-Programmierung 9
MiMa Metadaten für Multimedia Daten ermitteln Spiele- und Multimedia-Programmierung 4
G Übungsprogramm für Matheaufgaben Spiele- und Multimedia-Programmierung 1
F Algorithmus für bessere Kollisionsabfragen Spiele- und Multimedia-Programmierung 10
S Bilder Für Schachfiguren Spiele- und Multimedia-Programmierung 14
Timo_neu_in_java Suche etwas einfaches für Anfänger Spiele- und Multimedia-Programmierung 6
I Minecraft Suche Plugin Developer für Minecraft Netzwerk! Spiele- und Multimedia-Programmierung 2
S GUI erstellen für Text Adventure Spiele- und Multimedia-Programmierung 4
S Eigene Klasse vec_t - 3 oder 4 Einheiten für x, y, z und w Spiele- und Multimedia-Programmierung 11
R Vererbbarer GameLoop für Engine Spiele- und Multimedia-Programmierung 14
J Vektor für Gravitation erzeugen Spiele- und Multimedia-Programmierung 34
I Minecraft: Craftingrecipe für Braustand ändern Spiele- und Multimedia-Programmierung 9
Z Minimax-Algorithmus für TicTacToe Spiele- und Multimedia-Programmierung 5
H KI für Spiele Spiele- und Multimedia-Programmierung 1
S Pssende Datenstruktur für ein Netz Spiele- und Multimedia-Programmierung 5
S MouseEvents für Sprites Spiele- und Multimedia-Programmierung 3
I Spectator Modus für Spiel ähnlich zu Terraria Spiele- und Multimedia-Programmierung 8
K Bestes Bildformat für Spielegrafiken und deren Einbindung in Java Spiele- und Multimedia-Programmierung 2
J mehrere Listener für einen Button / Label Spiele- und Multimedia-Programmierung 1
C Port umleiten: lesen und schreiben für MCServer-Client über Skype Spiele- und Multimedia-Programmierung 0
J Musik Bibliothek für GUI Spiele- und Multimedia-Programmierung 7
B Hauptmenü für Spiel Spiele- und Multimedia-Programmierung 1
R Ratschlag für 2D-3D Engine für die Spieleentwicklung gesucht Spiele- und Multimedia-Programmierung 4
Androbin KI für Verfolgung im Raster Spiele- und Multimedia-Programmierung 2
A Bot für Browsergame Spiele- und Multimedia-Programmierung 2
H Tutorials für Fortgeschrittene 3D-Anwedungen Spiele- und Multimedia-Programmierung 2
lord239123 suche Graphiker für ein Pokemon-Spiel Spiele- und Multimedia-Programmierung 6
Furtano Vektoren für Bewegung für eine 2D-Simulation Spiele- und Multimedia-Programmierung 3
T Sinusgenerator für eine Hp Spiele- und Multimedia-Programmierung 8
J Menü für Snakespiel in einzelnem JFrame Spiele- und Multimedia-Programmierung 5
Guybrush Threepwood Ketzerische Frage: Opus-Codec für Java Spiele- und Multimedia-Programmierung 14
L Hilfe bei Klassendesign für Spiel Spiele- und Multimedia-Programmierung 2
N Animationen für ein 2D game Spiele- und Multimedia-Programmierung 6
S Aufbau für 2D Spiele Spiele- und Multimedia-Programmierung 7
L Client für ein Browsergame Spiele- und Multimedia-Programmierung 21
Devil0s Swing Elemente für Inventar? Spiele- und Multimedia-Programmierung 9
Kenan89 Ansatzfrage: Kartenspiel für 2 Spieler Online Spiele- und Multimedia-Programmierung 3
F Ideen für spiel Spiele- und Multimedia-Programmierung 4
P Spielfeld für RPG Spiele- und Multimedia-Programmierung 15
Hoppelmann Alphamap (Bild) für 3D-Terrain generieren Spiele- und Multimedia-Programmierung 2
S Algorithmus zur Ressourcesuche für die KI Spiele- und Multimedia-Programmierung 5
M Farbwerte für Flächen aus einem Bild erkennen Spiele- und Multimedia-Programmierung 3
K Einfache Engine für einfaches 3D gesucht Spiele- und Multimedia-Programmierung 10
C KI für Skatspiel - Wie können die Computerspieler eigenständig handeln? Spiele- und Multimedia-Programmierung 10
S Aufbau von Klassen für Spiel Spiele- und Multimedia-Programmierung 13
M Empfehlungen für ein 2D-Jump'n'run Spiele- und Multimedia-Programmierung 4
A Grundlagensuche für Spiel Spiele- und Multimedia-Programmierung 8
C Wo ist der MP3 Plugin für JMF? Spiele- und Multimedia-Programmierung 3
qwerqer Design Pattern gesucht für Spielregeln Spiele- und Multimedia-Programmierung 2
M Java als Programmiersprache für kommerzielle Spieleentwicklung? Spiele- und Multimedia-Programmierung 3
K Game Engine für selbstprogrammiertes Spiel Spiele- und Multimedia-Programmierung 27
Y Warum Thread für Spieleprogrammierung? Spiele- und Multimedia-Programmierung 27
A Music für Android game Spiele- und Multimedia-Programmierung 3
Gossi Probleme beim Laden der Images aus dem "Tutorial für Java-Spiele" Spiele- und Multimedia-Programmierung 4
M Minecraft Suche Java Programmierer (für Minecraft) Spiele- und Multimedia-Programmierung 2
Luk10 Tipps für bessere Animationen / Grafik Engine Spiele- und Multimedia-Programmierung 2
T 2D Menü für 3D Spiel Spiele- und Multimedia-Programmierung 5
T Grundlagenwissen für den 3D Raum Spiele- und Multimedia-Programmierung 6
I getSubImage sorgt für starken Performanceeinbruch Spiele- und Multimedia-Programmierung 6
M technologie für video, webcam & co Spiele- und Multimedia-Programmierung 25
C Java für große Spiele geeignet ? Spiele- und Multimedia-Programmierung 101
D Libraryempfehlung für Effekte Spiele- und Multimedia-Programmierung 3
B Spiele programmieren für ein Fenster? Spiele- und Multimedia-Programmierung 14

Ähnliche Java Themen


Oben