Warning: Constant ABSPATH already defined in /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-config.php on line 28 Warning: Cannot modify header information - headers already sent by (output started at /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-config.php:28) in /customers/e/7/0/florian-oeser.de/httpd.www/wordpress/wp-includes/feed-rss2.php on line 8 Projekte – Development-Blog von Florian Oeser http://www.florian-oeser.de "Die Wissenschaft hat keine Heimat, denn das Wissen gehört der Menschheit und ist ein Leuchtturm, der die Welt erhellt." (Louis Pasteur) Mon, 08 Oct 2012 13:38:57 +0000 de-DE hourly 1 https://wordpress.org/?v=6.0.8 MensaApp Berlin (Windows Phone 7.5) http://www.florian-oeser.de/2012/10/08/mensaapp-berlin-windows-phone-7-5/ http://www.florian-oeser.de/2012/10/08/mensaapp-berlin-windows-phone-7-5/#respond Mon, 08 Oct 2012 12:58:28 +0000 http://www.florian-oeser.de/?p=599 Das Semester ist nun zwei Wochen alt. Da fragen sich bestimmt viele Berliner Studenten, welche ganz nebenbei stolze WindowsPhone-Besitzer sind, was es in ihren Mensen so zu Essen gibt!

Abhilfe kann hier die von mir mit entwickelte „MensaApp Berlin“ schaffen. Mit dieser App kannst du die Speisepläne aller Mensen des Studentenwerks Berlin abfragen.

Icon der MensaApp Berlin App

Hier noch eine Auflistung ausgewählter Kern-Features:

  • Speiseplan für die nächsten 5 Tage
  • Angaben zu Zusatzstoffen
  • Öffnungszeiten
  • Suchfunktion
  • BingMaps – Integration
  • „Lieblings-Mensa“ auf Startseite pinnen

Also downloaden was das Zeug hält und Guten Appetit!

]]>
http://www.florian-oeser.de/2012/10/08/mensaapp-berlin-windows-phone-7-5/feed/ 0
Jump! – Update http://www.florian-oeser.de/2009/10/26/jump-update/ http://www.florian-oeser.de/2009/10/26/jump-update/#comments Mon, 26 Oct 2009 22:59:16 +0000 http://www.florian-oeser.de/?p=549 Es ist soweit, nach Monaten mal wieder ein Update in Bezug auf die Entwicklung von Jump! Es hat sich einiges getan seit März diesen Jahres. Der wichtigste Punkt ist sicherlich das wir zu drei Testsessions geladen haben um Feedback zu Jump! von den Spielern zu bekommen. Die Anzahl der unterschiedlichen Testern war nicht umwerfend, jedoch war das Feedback quantitativ und qualitativ ausreichend um auf dieser Basis weiterzuentwickeln. Danke auch nochmal an dieser Stelle an alle Tester 😉

Weiterhin habe ich auch die Jump!-Seite hier mal ein wenig überarbeitet. Gleiches gilt für die Bildersektion. Im Übrigen hat das Spiel nun auch seit geraumer Zeit eine direkte Homepage auf der es den Download gibt, Informationen zum Spiel und auch ein Forum um uns Bugs und Feedback mitzuteilen.

jump

Während der Testsessions habe ich immer mal wieder ein paar Videos mitgeschnitten. Das Ergebnis gibt es gleich hier zu sehen und kann als „90 seconds of Catch the Chicken“ deklariert werden, da es lediglich Szenen aus diesem Mode enthält.

In diesem Sinne viel Spass beim Schauen 🙂

This text will be replaced

]]>
http://www.florian-oeser.de/2009/10/26/jump-update/feed/ 3
simple RayTracer Part 2 (Refraction+NormalMapping) http://www.florian-oeser.de/2009/06/23/simple-raytracer-part-2-refractionnormalmapping/ http://www.florian-oeser.de/2009/06/23/simple-raytracer-part-2-refractionnormalmapping/#respond Tue, 23 Jun 2009 19:02:34 +0000 http://www.florian-oeser.de/?p=407 Es ist soweit. Heute möchte ich den vorerst letzten Part des Raytracers vorstellen und veröffentlichen. Nachdem mit Part 1 der Grundstein gelegt wurde hier nun erst einmal die Änderungen und Erweiterungen auf einem Blick:

  • Texturen auch für Spheren
  • NormalMapping
  • Refraction
  • einige Bugfixes
  • Performanceoptimierungen

Zunächst möchte ich zwei Bilder zeigen, welche den aktuellen Stand repräsentieren, bevor ich dann einzelne Punkte noch einmal kurz aufgreifen werde. Beide Bilder zeigen das Phong-Model mit Reflection und Refraction kombiniert mit NormalMapping.
Phong+Refraction+NormalMappingPhong+Reflection+Refraction+NormalMapping+SphereTextures

NormalMapping

Das NormalMapping in diesem Raytracer unterscheidet sich vom gewohnten NormalMapping aus der 3D-RealTime Grafik in zwei Punkten. Zunächst ist der RayTracer statisch, sprich es gibt keine bewegten Lichtquellen bzw. Objekte. NormalMapping kommt erst dabei richtig zum Tragen bzw. entfaltet so eigentlich erst seine sichtbare Wirkung. Aus diesem Grund kann man den Effekt nur deutlich machen indem man zwei an sich identische Bilder direkt miteinander vergleicht.
NormalMapping on plane texturenormal diffuse texture map on plane (no normal texture)NormalMapping on plane; specular highlight (directional light)normal texture mapping without NormalMapping

Specular highlight through directional light and a normal map

Weiterhin sind für das NormalMapping in dem Raytracer keine Object- oder Tangentspace Berechnungen notwendig sondern lediglich die Berechnungen des Normalenvektors aus der NormalMap. Das sind dann üblicherweise so bzw. so ähnlich aus:

color normal = normalMap.getTexelBilinear( u, v, distance );
double x = (normal.add(color(-1,0,0))).mult(2.0f).r;
double y = (normal.add(color(0,-1,0))).mult(2.0f).g;
double z = (normal.add(color(0,0,-1))).mult(2.0f).b;

Dieser Normalenvektor ersetzt dann einfach, bei der Diffuseberechnung, den Normalenvektor der an dem Schnittpunkt des Rays mit der Plane bzw. Sphere errechnet wurden wäre.

Refraction

Bei der Berechnung von Refraction (Lichtbrechung) habe ich mich auf das hervorragende Tutorial von Jacco Bikker gestützt. Hier nocheinmal ein Bild vom Anfang:

Phong+Refraction+NormalMapping

Man kann deutlich einen unterschiedlichen Brechungsindex zwischen der linken, organgen und der rechten, lilanen Sphere erkennen. Der Brechungsindex eines Mediums ist die Angabe wie schnell die Lichtgeschwindigkeit in diesem Medium abnimmt. Sprich das Verhältnis zwischen der Phasengeschwindigkeit des Lichtes im Vakuum und der Phasengeschwindigkeit des Mediums. Die linke Sphere definiert eine Phasengeschwindigkeit von 1.33 welches Wasser bei 20° Celsius entspricht. Folglich verliert das Licht 25% (1/1.33) seiner Geschwindigkeit gegenüber der Geschwindigkeit im Vakuum. Über das Snelliussches Brechungsgesetz kann man dann, über die unterschiedlichen Brechungsindizes, die eigentliche Brechung berechnen.
Die rechte, lilane Sphere hat eine Phasengeschwindigkeit von 1.0 und ist folglich derer im Vakuum gleich. Daraus resultiert dann auch das die hintere, gelbe Sphere ohne Brechungen sichtbar ist. Im Übrigen hat die vordere, güne Sphere eine Phasengeschwindigkeit von 1.31 (Eis).
Jetzt noch zwei Bilder aus einer anderen Perspektive, welche nebenbei auch nocheinmal den NormalMapping Effekt gut verdeutlichen:
refraction with normalmappingrefraction without normalmapping

Performance

Auch im Bereich der Performance hat sich einiges getan. Dies aber lediglich über Implementierungsoptimierungen und nicht über Beschleunigungsansätze wie beispielsweise ein Spatial Tree. Trotzdem kann sich der Zuwachs sehen lassen. Ein Bild mit sieben texturierten Spheren und entsprechender Plane, bei 1000×1000, sechs Rekursionen für Reflection ist mehr als doppelt so schnell berechnet wie das selbe Bild ohne Texturen für die Spheren. Das ist in der Hinsicht imposant da die Berechnungen der entsprechenden UV-Koordinaten und das eigentliche fetchen des Texels einen nicht unerheblicher Mehraufwand darstellt. Die Optimierung rührt zum Großteil daher das die Materialklassen, welche relativ viel Speicher durch die Texturen in Anspruch nehmen, nun als Pointer gehandelt werden und so nicht jedes mal auf dem Stack hin und her kopiert werden müssen.

Download

Hier nun der Download. Zum einen ein reiner Release-Build und weiterhin der komplette Source (VS bzw. VC++Express Solution). Das .NET 2.0 Framework wird vorrausgesetzt.

Release (.rar, 3.3MB)
sGUIRayTracer-Solution (.rar, 3.3MB)

Interessante Links/Quellen

Tutorialreihe auf Flipcode (sehr zu empfehlen!)

The math behind NormalMapping

Und natürlich all die anderen Tutorials die in Part 1 zu finden sind!

Wie immer keine Garantie auf Richtigkeit oder Vollständigkeit!

]]>
http://www.florian-oeser.de/2009/06/23/simple-raytracer-part-2-refractionnormalmapping/feed/ 0
simple RayTracer Part 1 http://www.florian-oeser.de/2009/05/05/simple-raytracer-part-1/ http://www.florian-oeser.de/2009/05/05/simple-raytracer-part-1/#comments Tue, 05 May 2009 13:34:43 +0000 http://www.florian-oeser.de/?p=343 Nach längerer Pause hier möchte ich heute meinen Raytracer, den ich in der letzten Zeit erarbeitet habe, vorstellen und zum Download anbieten. Zunächst ersteinmal ein paar Bilder welche den aktuellen Stand aufzeigen. Eine Beschreibung und die entsprechenden Berechnungszeiten sind jeweils im Bildbeschreibungstext zu finden. Dazu muss man aber sagen das weder der RayTracer ansich optimiert wurde (z.B. über ein kd-Tree), noch der Sourcecode drumherum optimiert ist.

Ambient+Diffuse-Specular+Shadow; Athlon 64 X2 Dual 6000+; 33 Sekunden bei 1000x1000 simple GUI Ambient+Diffuse-Specular+Shadow+Perfect Reflection; Athlon 64 X2 Dual 6000+; 56 Sekunden bei 1000x1000

Der RayTracer ist komplett in C++ und die entsprechende GUI mit VC++ .Net auf WinForms Basis geschrieben. Im Moment ist das Phong-Beleuchtungsmodell implementiert und als kleinen Bonus kann man noch, zumindest für die Ebenen, Texturen laden, welche die Diffusefarbe ersetzen. Nun folgt noch eine kleine Bildergalerie welche Schritt für Schritt zeigt wie man von einfachem Ambient bis zur PerfectReflection mit Schatten kommt. Die einzelnen Schritte lassen mit frei wählbaren Einstellungen auch in der GUI simulieren.

Ambient Ambient+Diffuse (one light source) only specular Ambient+Diffuse+Shadow (three light sources) Ambient+Diffuse+Specular+Shadow (one light source) Ambient+Diffuse+Specular+Shadow (three light sources) Ambient+Diffuse+Specular+Shadow+Perfect Reflection same aas image before; 9 sphere with a closer floor same as before but with texture on floor

Hier nun der Download. Zum einen ein reiner Release-Build und weiterhin der komplette Source(VS bzw. VC++Express Solution). Das .NET 2.0 Framework wird vorrausgesetzt.

Release (.rar, 187KB)

sGUIRayTracer-Solution (.rar, 258KB)

Da mir die Arbeit an diesem Raytracer sehr viel Spass gemacht hat und man viel dabei lernen konnte werde ich wohl noch ein wenig daran weiterarbeiten. Hier mal eine Liste was man überhaupt noch in einem Raytracer implementieren kann. Was ich davon noch wählen werde steht noch nicht fest. Es hat alles seinen Reiz und im Moment tendiere ich zu Normalmapping direkt über eine Map und/oder Bumpmapping über PerlinNoise.

  • kd-Tree oder spatial subdivision zur Geschwindigkeitsoptimierung
  • depth of Field
  • isosurfaces (blobs)
  • fresnel und Transparenz (refraction)
  • Bump/Displacement mapping
  • Normalmapping
  • fog
  • Soft-Shadows
  • Photon maps (global illumination)
  • weitere Geometrieobjekte (Cylinder, Box etc.)
  • Antialiasing
  • Photo exposure
Interessante Links/Quellen

Wikieintrag zu RayTracing

Mandelbrot’s RayTracing explanations

Tutorialreihe auf Flipcode (sehr zu empfehlen!)

Tutorialreihe auf Codermind

Tutorialreihe der DGL-Wiki

Tutorialreihe von Forrest Briggs

Wie immer keine Garantie auf Richtigkeit oder Vollständigkeit!

]]>
http://www.florian-oeser.de/2009/05/05/simple-raytracer-part-1/feed/ 1
Jump! Development Video http://www.florian-oeser.de/2009/02/20/test/ http://www.florian-oeser.de/2009/02/20/test/#respond Fri, 20 Feb 2009 17:04:05 +0000 http://www.florian-oeser.de/?p=287 Dieses Video wurde von Thomas und mir produziert und zeigt verschiedene Sachen rund um die Entwicklung von Jump!. Unter anderem werden verschiedene Entwicklungsstadien aber auch Gameplay-Szenen vorgestellt. Mehr will ich gar nicht verraten seht einfach selbst 😉

Alle anderen Videos gibt es weiterhin hier. Im Übrigen bräuchte ich mal eine Tipp wie man die Qualität der Videos auf Youtube erhöhen kann. Schon viel probiert aber nie mit einem ordentlichen Ergebniss. Ich denke aber ich werde kommende Videos auch wieder auf dem Webspace legen, da ich nun einen ordentlichen Player gefunden habe.

Nun gut viel Spass beim Schauen und danke nochmal an dich Thomas 🙂

This text will be replaced

]]>
http://www.florian-oeser.de/2009/02/20/test/feed/ 0
Projekt: MarioWorldWars (mittlerweile Jump!) http://www.florian-oeser.de/2008/10/30/marioworldwars/ http://www.florian-oeser.de/2008/10/30/marioworldwars/#respond Thu, 30 Oct 2008 00:44:04 +0000 http://www.florian-oeser.de/?p=104 So eben wurde eine neue Seite zu meinem aktuellen Projekt ‚MarioWorldWars‘ eingerichtet!

Dort erfahrt ihr um was für ein Projekt es sich diesmal handelt und bekommt einen Einblick in die aktuelle Entwicklung…

Siehe Header, Sidebar oder einfach auf das folgende Bild klicken 😉


]]>
http://www.florian-oeser.de/2008/10/30/marioworldwars/feed/ 0
Projekt: radioSiTY http://www.florian-oeser.de/2008/06/06/projekt-radiosity/ http://www.florian-oeser.de/2008/06/06/projekt-radiosity/#comments Fri, 06 Jun 2008 15:02:16 +0000 http://www.florian-oeser.de/?p=29 Einleitung

Projekt radioSiTY bezeichnet das 2. größere Projekt was von uns während des Studiums konzipiert und erstellt wurde. Dabei handelt es sich um eine Web-Stream-Plattform, die während des 4. Semesters in der Veranstaltung Multi-Media Engineering 2 entwickelt wurde.
Zunächst ersteinmal zwei Bilder, damit ihr eine Vorstellung von der GUI bekommt.

radio1

radio2

Die Anwendung

Mit dieser Anwendung ist es möglich AOL- und Shoutcastsstreams zu hören. Zu jedem Sender kann man sich aktuelle Informationen über den Sender selbst, den Song der gerade gespielt wird und noch viele andere Sachen anschauen. Es ist weiterhin möglich die Sender zu bewerten und zu kommentieren. Dies ist aber erst möglich sobald man sich erfolgreich registriert hat. Genauere Informationen und noch mehr Bilder findet ihr auf dem Blog meines Mitentwicklers Michael Palmer.

Die Applikation ist unter folgender URL zu finden: http://62.75.209.120/radio/#

Umsetzung/Probleme

Für unsere Entwicklung haben wir uns einen vServer gemietet, auf dem die aktuelle Version vorliegt. Leider muss man sagen das unsere Anwendung diesen sehr schnell in die Knie zwingt und keiner Dauerbelastung stand hält. Das liegt daran das wir gerade einmal 512MB Flex-Ram zu Verfügung haben und alleine der FDS-Tomcat uns davon beim Starten ~350MB ‚klaut'(JVM). Wir mussten uns eigentlich auch schon einem ‚Trick‘ (siehe Conclusion) bedienen um den Tomcat überhaupt starten zu können. Das heißt um unsere Applikation eigentlich vernünftig zu hosten wäre ein vServer/RootServer mit mindestens 1GB Ram erforderlich. Leider haben wir nicht das benötigte Kleingeld dafür! Bitte habt somit Verständniss dafür, dass die Applikation keiner Dauerbelastung standhält und es durchaus sein kann das der Server irgendwann nicht mehr antwortet 🙁

Weitere Probleme ergaben sich mit dem Auslesen der Streaminformation bzw. dem generellen Abspielen, der Arbeit mit Flex insbesonderen mit einem strukturierten Aufbau mit mehreren mxml’s, AS3 Klassen und Events. Ein größeres Problem ergab sich zunächst auch mit der Arbeit um Hibernate bei dem viel Zeit verloren gegangen ist. Schuld war hier ran das wir nicht auf dem Server direkt unsere Klassen kompilierten und es folglich immer zu unschönen ‚Can’t find destination‘ Fehlern kam. Die Lösung bemerkten wir erst als wir uns wieder dem Datenaustausch zwischen Frontend und Backend via RPC’s zuwanden, wo wir zunächst vor dem selben Problem standen. Eine genauere Beschreibung des Problemes und ein kleines HowTo zu der Arbeit mit Flex und Hibernate auf dem FDS-Tomcat werde ich in nächster Zeit bloggen.

In diesem Projekt haben wir Papervision 2.0 für die Slideshow und die BassBox verwendet. Die komplette GUI wurde mit Flex selbst gestaltet. Für die Datenhaltung haben wir MySQL und JDBC verwendet. Eigentlich wollten wir das komplette Datenmanagement mit Hibernate und dem Flex LiveCycle umsetzten. Bedingt durch die anfänglichen Probleme in der Richtung, haben wir aber angefangen ein Teil davon über Servlets zu lösen. Mittlerweile sind aber auch Elemente wie zum Beispiel die Kommentar- und Bewertungsfunktion über Hibernate und RPC umgesetzt.

Wir sind sehr froh dieses Projekt sogar relativ zeitig vor dem Zeitablauf beendet zu haben und konnten ausserdem wieder eine Menge dazugelernen. Insbesondere ich konnte, dadurch das ich mich um das Backend und den Webserver gekümmert hatte, wieder viel in einer Disziplin dazulernen in der ich nicht so erfahren bin!

Da es sich um Studienprojekt handelt möchte ich euch noch das Pflichtenheft zur Verfügung stellen. Es wurde nach den Richtlinien von Heide Balzert erstellt und enthält auch eine OO-Analyse des Projektes. Dies soll lediglich als Anregung dienen und es gibt logischerweise kein Anspruch auf Richtigkeit/Vollständigkeit!

Pflichtenheft + OO-Analyse (.pdf, 373KB)

Techniken:

  • Flex/AS3
  • FDS-Tomcat (Webserver)
  • MySQL über JDBC
  • Papervision 3D 2.0
  • RPC Dienst des Adobe Live Cycle Data Services (LCDS)
    • HTTP Service (Servlets)
    • RemoteObjects (Hibernate)
  • persitente Datenhaltung via Hibernate (Java)
  • Verwendung des MVC-Modell 2 Frameworks
]]>
http://www.florian-oeser.de/2008/06/06/projekt-radiosity/feed/ 6
Projekt: RingRong http://www.florian-oeser.de/2008/06/05/projekt-ringrong/ http://www.florian-oeser.de/2008/06/05/projekt-ringrong/#comments Thu, 05 Jun 2008 21:52:01 +0000 http://www.florian-oeser.de/?p=17 Einleitung

Das Projekt RingRong war für uns das erste große Projekt während des Studiums. Konzipiert und entwickelt wurde es während des 3. Semesters im Fach Multimedia Engineering I. Das Team bestand aus zwei Programmieren(Michael Palmer und ich), einem Grafiker(Martin Schmidt) und einem Modeller(Thomas Vogel), welcher ebenfalls für das zauberhafte Intro zuständig war. Insgesamt hatten wir rund vier Monate Zeit eine Multimediaanwendung zu entwickeln. Wir haben die Zeit komplett ausgereizt und haben eine sehr schönes Projekt abgeliefert, was jedem von uns viel abverlangt hat. Es ist komplett mit Flash CS3/AS3 und Papervision3D 1.5 realisiert.

Zunächst erst einmal ein paar Bilder und der Download damit das hier nicht alles so trocken wird 😀

ringrong_1

ringrong_tutorial

Die Anwendung

Das Projekt hat einen rein fiktiven Inhalt. Es dient der Vermarktung von Robotern, die so natürlich nicht existieren. Hauptteil ist der Baukasten, indem man sich nach Lust und Laune einen eigenen Roboter zusammen bauen kann. Weiterhin kann man den Roboter mit Upgrades ausstatten wie beispielsweise dem SecuritySystem. Aber schaut lieber selbst und entdeckt alle Features im Alleingang. Ihr werdet es nicht bereuen. Selbst ich schau es mir hin und wieder noch an und werd schon beim Intro schwach 😀

Umsetzung/Probleme

Meine konkrete Aufgabe war die Erstellung der ‚Tutorialapplikation‘ und einige Nebenläufigkeiten wie die Bildergalerien.

Es gab viele mehr oder minder große Probleme. Das größte war sicherlich unser massives Speicherproblem und die Performance. Ersteres konnte zum Glück gelöst werden. Die Perfomanceprobleme haben einfache Ursachen. Zum einen wird AS3 interpretiert und nicht kompiliert. Ausserdem greift Flash auch nicht auf die Grafikkarte zum Rendern zurück(in Flash10 soll dies jetzt möglich werden :-)). Desweiteren steckte pv3D noch fast in den Kinderschuhen mit der Version 1.5. Nunmehr ist pv3D v2.0 errschienen was durch verbesserte Renderarchitektur und Sachen wie Frustrum Culling auch einiges an Performance wieder gutmacht. Leider was es zu spät noch auf diese Version umzusteigen. Man brauchte also schon ein DualCore um bei der Tutorialapplikation auf rund 20 FPS zu kommen 😀

Trotzdem sind wir alle sehr froh dieses Projekt so gut umgesetzt zu haben. Wir haben viele Nächte zum Tag gemacht aber es hat sich gelohnt. Mal vom Lerneffekt und der Erfahrung mal ganz abgesehn 😀

Weitere Informationen und den Download findet ihr im Blog von Michael Palmer!

Techniken:

  • Flash CS3 mit AS3
  • Papervision3D 1.5
  • Maya
  • AfterEffects
  • Photoshop 😉
]]>
http://www.florian-oeser.de/2008/06/05/projekt-ringrong/feed/ 1