MF Breadcrumbs Sergej Schefer & Fabian Marx
MF Breadcrumbs! Entwurf! Algorithmen! Screenshots / Live-Demo
Entwurf! 2.5D Jump n Run! Spieler kann sich durch Level bewegen und Punkte aufsammeln! Freie Levelgestaltung durch Benutzer! Ein durch den Nutzer aufgemaltes Level kann in Spielgeometrie umgewandelt werden
Algorithmen! Bildverarbeitung! Kontrasterhöhung! Faltungsoperation! Tiefpassfilterung zur Rauschunterdrückung! Sobelfilter für Kantenerkennung! Kreiserkennung für Münzen im Level! Template Matching / Kreuzkorrelation
Algorithmen! Computergrafik! Matrix- und Vektorrechnung! Effiziente Rendermethode für Würfel! Viewfrustum Culling! Textur-,.obj-,.mtl-, Shaderloader! Interpretation des erstellten Levels! Deferred Lighting
Faltungsoperator! Benötigt! Kernel! Bild! Für jedes Pixel im Bild! Erstelle Matrix mit Kernelgröße! Setze Pixelwerte rundum das aktuelle Pixel in die Matrix! Prüfe ob Pixel sich noch im Bild befindet (Ränder)! Multipliziere Elementweise und addiere auf! Result += Kernel[i] * Matrix[i]
Leveleditor: Automatisierte Verarbeitung! Lade Bild! Erhöhe Kontrast des Bildes! Wandle das Bild in Graustufen um! Wende 5x5 Gauß-Tiefpassfilter an! Wende 3x3 X- und Y-Sobelfilter an! Speichere Bild temporär zwischen
Leveleditor: Automatisierte Verarbeitung
Leveleditor: Automatisierte Verarbeitung! Wende Blobsegmentation an und speichere Ergebnisse! Wende Templatematching auf das Bild an, um Start- und Endflaggen zufinden! Färbe die Blobs komplett schwarz, in denen die Flaggen gefunden worden sind
Leveleditor: Automatisierte Verarbeitung
Leveleditor: Automatisierte Verarbeitung! Verändere Dimensionen des Bildes, auf Leveleditor- Fenstergröße! Berechne Flaggenpositionen in Relation des verkleinerten Bildes neu! Nutzerabfrage Details nachzeichen?! Nein: Nächster Schritt! Ja: Füge Mouselistener hinzu und färbe die Stellen ein, wo der Nutzer hinklickt! Nächster Schritt! Suche nach Kreisen mit Hough Circles Algorithmus im Bild und speichere die Positionen ab
Leveleditor: Automatisierte Verarbeitung
Leveleditor: Automatisierte Verarbeitung
Leveleditor: Automatisierte Verarbeitung! Setze Levelvariablen fest! Segmentiere das Bild/Matrix in 50x50 Quadrate und speichere die Werte, die in den Quadraten vorhanden sind, nach einander ab! Exportiere das Bild als Level
Static Cube Rendering! Lade Würfelgeometrie aus.obj! Lies Leveldatei und speichere Positionen! Erstelle Würfel an den Positionen in der Physikengine! Hänge Vertexbuffer mit Würfelgeometrie ein! Hänge Shaderprogram für Wüfel ein! Für alle interpretierten Würfel! Übernimm Position aus Physikengine! Prüfe ob Würfel in Frustum! Berechne Matrix für das VBO anhand der Position! Sende Daten an Shaderprogram! Zeichne VBO Inhalt! Setz die Matrix des VBO s auf die Identitätsmatrix zurück
Deferred Lighting! Forward Lighting Methode! Für jedes Objekt / Mesh! Finde Lichtquellen, welche das Objekt beleuchten! Schicke Meshdaten und Lichtdaten [als Array, max. Größe im Shader festlegen] an Shader! Rendere Objekt! Vorteile! Alpha / Transparenz! Simpel und leicht zu verstehen! Hardware Anti-Aliasing! Nachteil! Rechenaufwendig [O(m * l)]! Begrenzte Lichtquellen möglich! Shader sind unübersichtlich! Nicht sichtbare Faces werden mitgerendert! Faces die nicht vom Licht betroffen sind, werden mitgerendert und in die Lichtkalkulation einbezogen
Deferred Lighting! Deferred Lighting! Multipass-Verfahren! 1. Pass! Rendert Meshinformationen auf Texturen! 2. Pass! Rendert Lichtquellen & Lichtberechnungsergebnis auf eine Textur! 3. Pass! Kombiniert 1. & 2. Pass auf eine Textur
Deferred Lighting! Vorteil! Laufzeit [O(m + l)]! Unendlich viele Lichtquellen möglich! Nur sichtbare Pixel werden in Kalkulation einbezogen! Geometrie der Lichtquellen wird als Stencil verwendet, so dass nur die in Pixel vorliegen, die in der Schablone der Lichtgeometrie liegen! Vereinfacht Post Processing! Kleinere und einfachere Shader! Nachteile! Kein Hardware Anti-Aliasing möglich (Muss in das Post Processing integriert werden)! Kompliziert und aufwendige Implementation! Keine Alpha-Dargestellung möglich
Deferred Lighting Meshdaten Rendere auf G-Buffer Albedo Position Normals Depth
Deferred Lighting Lichtquellen Rendere auf Framebuffer
Deferred Lighting Kombiniere auf FBO
Screenshots / Live-Demo
Screenshots / Live-Demo
Screenshots / Live-Demo
Ende! Vielen Dank für Ihre Aufmerksamkeit