MegaView, JOGL OpenGL Java 3D Engine

MegaView ist eine 3D OpenGL Engine unter Verwendung der JOGL Bibliothek zur Anbindung an Java. Dabei handelt es sich um ein Studienprojekt, mit dem wesentlichen Ziel sich in die Thematik einzuarbeiten. Die Realisierung hat eine ansprechende Performance (mehr als 35fps in einer 300.000 Polygonen Szene inklusive Echtzeit Schatten, Projektionen und Normalmapping auf einer GF8800), die kaum schlechter ist als native Implementierungen in anderen Sprachen. Ferner steht eine Java Webstart Variante zum Ausprobieren bereit.

Interessante Leistungsmerkmale

  • Per pixel lightning
  • NormalMapping in Pseudo-Tangentspace
  • Hemisphere lightning
  • Texture-Projection
  • Softshadowing by Shadowmapping filtering
  • Fog- and Fire Particle
  • Blooming and HDR-Simulation
  • Multithreaded per frame sequence processes
  • Timed Processes
  • Recursive Szenegraph/Szeneelement pattern for OpenGL statemachine
  • MP3 replay
  • Camera dependent ordering
  • Spherical and Cylindrial Billboarding
  • Camera effect
  • Mirror effect
  • Shader fading effect
  • Shader Black and White filtering effect
  • Wavefront, Heightmap and MD2 Modelloader
  • Efficent Vertexnormal calculation using a hashmap collision technique
  • Transparent encapsulations for DisplayLists, VertexArrays and Vertex Buffer Objects
  • High performance polygonal output due to objectreusing and Vertex Buffer Objects
  • among many other features...

Lizenz

Die MegaView Engine selbst ist unter der GPL veröffentlicht. Allerdings sei hier angemerkt, dass dies nicht für alle Bestandteile des Packetes gilt, insbesondere nicht für die eingesetzten medialen Dateien (Sounds, Texturen, Modelle). Diese haben mitunter alle individuelle Lizenzen, die allesamt ausführlich in der beigelegten ReadMe-Datei aufgelistet sind. Kurz gesagt dürfen die meisten Sachen nur in einem nicht-kommerziellen Kontext verwendet werden.

Video

The player will show in this paragraph

FAQ

Ein paar häufig gestellte Fragen.

Welche Hardware wird benötigt?
MegaView wurde unter Windows XP 64 und Windows XP getestet. Es sollte auf jeder NVIDIA Geforce G92 basierten Grafikkarte (getestet mit GF 8800 GT, GF 9800GTX und GF9600M) funktioneren. Tatsächlich gibt es einige Probleme auf ATI-Grafikkarten, wobei ich leider keine moderne AMD basierte Karte mein eigenen nennen kann. Zumindest lassen sich die Shader nicht auf einer ATI-Grafikkarte kompilieren. Ansonsten reicht ein DualCore mit 1024MB freiem RAM und 512MB dedizierten Grafikkartenspeicher völlig aus.

Welche Software benötige ich?
MegaView wurde erfolgreich unter der 32 under der 64 bit Sun-Java-6 JVM für die Windows XP 32 und die Windows XP 64 Plattform getestet.Fernre läuft es recht zuverlässig unter Ubuntu 8.10 Intrepid 64bit.

Java ist langsam!
Vielleicht ist es da, vielleicht aber auch nicht. Unabhängig davon finden die meisten Operationen dieser Demo nativ direkt im Grafikspeicher statt, sodass die verwendete Client-Sprache keinen sonderlichen Einfluss darauf ausübt.

Warum mit 7zip gepackt?
Nur um Platz und Bandbreite zu sparen, da ich alle Distributionen für die Plattformen in einer Datei zur Verfügung stellen möchte. Andere Kompressions-Algorithmen haben sich für speziell diese Zusammenstellung als deutlich zu ineffizient erwiesen.

History

[26. February 2009]
Release der ersten Version 0.01 der MegaView-Engine mit zwei enthaltenen Demos. Es wird ein 7zip kompatibler Entpacker benötigt. Alternativ kann diese Version als Webstart ausprobiert werden.

[30. Mai 2010]
Release der zweiten Bugfix Version 0.02 der MegaView Demos. Es wurden diverse Fehler in Shader und Engine behoben, die es verhinderten auf anderen Grafiken als dem Nvidia G92 zu laufen. Version 0.02 läuft nun auch unter MacOSX auf einer Nvidia 320M.

Bekannte Fehler in 0.01
Ja, gibt eine Reihe von Fehlern (welch Überraschung). Der bereits erwähnte ATI-Bug und einige Shadowmapping Fehler, sobald die Auflösung eine andere als die standardmäßigen 1024x768 ist. Ferner läuft die Linux-Distribution nicht out-of-the-box. Das einfachste ist es, die *.so Bibliotheken in das /lib Verzeichnis zu kopieren. Zudem muss der Prozess am Ende von Hand beendet werden (using Ubuntu 8.10 64 and NVIDIA driver 177), da sich die JVM scheinbar aufhängt.

Screenshots

Hier ein paar Screenshots aus den beiden Demos.

Black and white filtering
Black and white filtering

Heightmap and Collisionsimulation
Heightmap and Collisionsimulation

Texture-Projection
Texture-Projection

Softshadowing and HDR/Blooming simulation
Softshadowing and HDR-/Blooming Simulation

Cylindrial Billboarding
Cylindrial Billboarding

Realtime mirror
Realtime mirror

Softshadowing and particle fire
Softshadowing and particle fire

Desctruction animation
Destruction animation

AttachmentDatumSize
[file] megaview_0.01.7z31/03/09 10:21 am14.44 MB
[file] megaview_0.02.dmg30/05/10 3:52 pm39.95 MB
[file] megaview_0.02.zip30/05/10 4:39 pm15.88 MB