Prototyping Augmented Reality Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Medien zwischen Technik und Gesellschaft.

Slides:



Advertisements
Ähnliche Präsentationen
Proseminar: Anwendungen für Augmented Reality
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Rekursive Grafiken Reklursive Grafiken.
Seminar Internetdienste Web 2.0 und Rich Internet Applications (RIA) JavaFX Rainer Scholz.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Verteilte Software - Java - Prozedurale Programmierung 1
Graphische Datenverarbeitung IV Dr. Markus Heitz.
Java2D Richard Göbel.
Einführung in die Programmierung von 3D-Grafiken Basis ist Java3D
Listen Richard Göbel.
Java: Grundlagen der Sprache
FH-Hof Java 2D - Kontext für Zeichenoperationen Richard Göbel.
Ein Beispiel in Java.
Kann eine XML-Datenbank temporal sein? Universität zu Köln Hauptseminar: Datenbanken vs. Markup Dozent: Prof. Dr. Manfred Thaller Referentin: Cigdem Varol.
Virtuelle Forschungsumgebungen Hintergrundbeitrag: HTML5: Video Player und VideoJS Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung.
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Kapitel 12: „Variablen und Konstanten verwenden und Spiele.
Processing: Arrays & Laden von Dateien Aufbauend auf dem Beispiel: File I/O LoadFile1.
CIDOC-CRM Universität zu Köln Historisch-kulturwissenschaftliche Informationsverarbeitung AM 2 Dozent: Prof. Dr. Manfred Thaller Referent: Nelson Marambio.
KLIPS 2.0: Navigation über den Modulbaum
Sommersemester 2003 Lars Bernard
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 8 Sitzung 8: Zeichnen in Java.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
AWT – Detailbetrachtung Java 3D – Seminar im Wintersemester 2002/2003 Christian Schneider.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. D. Dörschlag Einführung in die Programmierung mit Java.
Java-Kurs Grafik Julian Drerup.
Programmieren mit JAVA Teil V. Grafikausgabe mit JAVA, das AWT Java wurde von Anfang an mit dem Anspruch entwickelt, ein vielseitiges, aber einfach zu.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Weitere Beispiele für Verzweigung mit und ohne Turtle
Informatik Grundkurse mit Java
© 2003 Pohlig Grundkurs Informatik 1 Übungen: Mustererzeugen.
UML Begleitdokumentation des Projekts
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
Processing Design by Numbers Nicolas Ruh & Christian Wüst Quellen:
Java ohne Kara. Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.
Augmented Reality Tassilo Schmidt ; xx.xx.2012 | Titel Seite 2 Agumented Reality AGUMENTED REALITY VERSTEHT MAN COMPUTERGESTÜTZTE ERWEITERTEN.
Einführung in die App- Programmierung Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Medien zwischen Technik und Gesellschaft.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Raimond Reichert Einführung in die Verwendung von Processing innerhalb von Eclipse.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Processing Design by Numbers Nicolas Ruh & Christian Wüst Quellen:
Optimale Ursprungsgerade
Visual Design mit Processing Übung Visualisierung semantischer Information.
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Learning By Doing Übungen GPanel Quadratfenster mit pixelunabhängigen Windowkoordinaten (doubles) Zweckmässige Standardwerte (defaults) 01 x 0 1 y // WbzEx5.java.
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
SFZ FN Sj. 13/14 Python 2 Turtle Inf K1/2 Sj 13/14 GZG FN W.Seyboldt.
Prototyping Augmented Reality Universität zu Köln Historisch-kulturwissenschaftliche Informationsverarbeitung Aktuelle Probleme digitaler Medien / Medien.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Klassen und Objekte.
Programmieren lernen ... ist un-möglich in einer Stunde...
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Programmieren lernen ... ist un-möglich in einer Stunde...
1 Bauhaus-Universität Weimar ArchitekturProgrammierung Generative Entwurfsmethoden Processing Grundlagen Professur Informatik in der Architektur.
Multimedia und Virtual Reality Vorlesung am Martin Kurze Virtual Reality - Überblick.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Virtuelle Forschungsumgebung in Musikwissenschaft
Benutzerprofil "Laie" Editionsphilologie -Historisch kulturwissenschaftliche Informationsverarbeitung- Universität zu Köln WS 2006/07 unter Leitung von:
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
ROBERT NYSTROM GAME PROGRAMMING PATTERNS III.8 Thema: Sequencing Patterns Seminar: Softwaretechnologie II (Teil 2) Dozent: Prof. Dr. Manfred Thaller Referent:
 Einführung  Szenengraphen  Bestandteile  Eingabe  JOGL  LWJGL  Beispiele  ARDOR3D Games 04/23/12Ardor 3D – Holzwarth/Kau 2.
1 Processing Seit 2001 von Casey Reas und Benjamin Fry (MIT) Ursprünglich erschaffen als spezifische Erweiterung für Java in Hinblick auf Künstler und.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Google Maps API 3 Universität zu Köln Medien zwischen Technologie und Gesellschaft Prof. Dr. Manfred Thaller Referentin: Saeideh Safat Zadeh.
Die Struktur einer Java-Klasse
Übungen: Mustererzeugen Januar 19 Grundkurs Informatik.
 Präsentation transkript:

Prototyping Augmented Reality Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Medien zwischen Technik und Gesellschaft WS 2012/13 Dozent: Prof. Dr. Thaller Referentin Maria Wagner

Inhaltsverzeichnis Augmented Reality Processing Blender Modeling Low-Poly Animated Character 3D-Programming in Processing AR mit Processing Physikalische Welt Webbasierte AR jMonkeyEngine Android

Augmented Reality Beschreibt eine Kombination von Technologien, die es ermöglichen, reale Zeit von computergenerierten Inhalt mit Live Video Bildschirmen zu mischen Sie erzeugen, was nicht wirklich da ist Vermischt Live Medien mit virtuellen Inhalt um des Nutzungswillen VR vs. AR Smartphone, Mobile Plattformen: eröffnet neue Möglichkeiten und Potential

Billig und einfach, für Marketingzwecke AR funktioniert durch – Location und Orientation (GPS) Printed Markers – Aktuelles Bild, markerlos – computer vision Interagieren durch: – Bild Verarbeitung – Computer Vision: wie man Computer gemachte 3D Inhalte verschmilzt mit Live Video und physikalischen Markern

Geschichte der AR Terminator (1984): Graphische Overlays in dem Sehkraft-System 1990: Tom Caudell Ende der ´90: ARToolKit

Processing

Umgebung Nicht unbedingt für Computer Programmierer Eine Extension von Java Programm Sprache

Die ersten Schritte Ein Fenster erstellen: size (600, 400); Ein Kreis zeichnen: background (0); fill (255, 255 0); stroke (255, 0,255); strokeWeight (10); ellipse (300, 200, 200, 200);

Interaktiver Modus, Animation setup () --> nur einmal executed draw () --> wiederholt den Code immer wieder int i = -50 void setup () { size (300, 300); fill (255); stroke (0); strokeWeight (3); } void draw () { background (100); ellipse(150, i, 100, 100); i++; if (i > 350) { i = -50; }

Weitere Formen Point () Line () Triangle () Quad () Rect () Ellipse () Arc ()

Farbe RGB Void setup () { Size (500, 500); Colormode (HSB, 1) HGB } Void draw () { For (int x = 0; x <=500; x++) { Stroke (x/500.0, mouseX/500.0, 0.7); Line (x, 0, x, 500); }}

Bouncers: Klassen, Mausinteraktion Wie die Kugeln gemalt werden: Class Spot { Int x, y; Int rate = 1; Int initialY; Boolean fall = true; Boolean active = false; … void display () {noStroke(); fill(255); ellipse…} Mausinteraktion: Void mouseReleased /Pressed(){ Spots [spotcount-1].initialY = mouseY; Spots [spotcount-1].active= true;

Blender

Modellieren, Texturieren, Animieren im 3D Kontext Open Source – Version Man kann einen animierten Charakter erstellen, der mit AR interagieren kann

Tipps Symmetrische Objekte: eine Hälfte modellieren, die andere duplizieren Low – poly Charakter Ambient occlusion (AO) als Lichteffekt UV Texturing

Low-Poly Animated Character

Animation Armature: Charakter – Skelet erstellen (bones) 3D Elemente platzieren, keying in verschiedenen Positionen in einer Zeit

3D-Programming in Processing

Einführung Void setup () { Size (500, 500, P3D); } Void draw () { Background (255); Sphere (100); }

Weiterführung int y = -100 Void setup () { Size (500, 500, P3D); noStroke ();} Void draw () { Background (255); Lights (); Translate (250, y, 0); Sphere (100); Y++; If ( y > 600){ Y = -100; }}

Licht int y = -100 Float dirY; Float dirX; Void setup () { Size (500, 500, P3D); noStroke (); Fill (255, 0, 255);} Void draw () { Background (255); If (mouseY <= y) { dirY = -(1.0-(mouseY/float(y)));} else { dirY = float (mouseY-y/float(height-y);} dirX = (mouseX/float(width) –0.5)*2; directionalLight (255, 255, 255, -dirX, -dirY, -0.5); Translate (250, y, 0); Sphere (100); Y++; If ( y > 600){ Y = -100; }}

OBJ Dateien Text basierte Dateien, welche die Koordinaten von Eckpunkten und ihre Verbindungen beschreiben Beinhalten Text Dateien, die 3D Daten enthalten OBJ library in Processing importieren Auch möglich: – Animation durch Schleifen, Boolean (true: es wird gemalt)

OBJ Dateien: Nutzung Import processing.opengl.*; Import saito.objloader.*; OBJModel ourModel; Float rotX, rotY; Void setup () { Size (800, 600, OPENGL); ourModel = new OBJModel (this, sa.obj, TRIANGLES); ourModel.enableDebug(); ourModel.scale (80); ourModel.translateToCenter(); noStroke();} Void draw () { Background (200); Lights (); Translate (width/2, height/2, 0); rotateX(rotY); rotateY(rotX); ourModel.draw (); } Void mouseDragged () { rotX += (mouseX – pmouseX) * 0.01; rotY -= (mouseY – pmouseY) * 0.01; }

AR mit Processing

NyAR4psg Library Von dem Projekt NyARToolkit by Rio Iizuka GSCapture cam; NyARMultiBoard nya; Pfont font, font2D; Void setup () { …colorMode (RGB, 100); Font = createFont (FFScala, 32); Font2d = createFont (FFScala, 10); Cam = new GSCapture (this, width, height); Cam.play (); String [] patts = {patt.hiro, patt.kanji}; Double [] widths = {80, 80};

Nya=new NyARMultiBoard(this, width, height, camera_para.dat, patts, widths); Nya.gsThreshold = 120;//(0>n>255) default=110 Nya.cfThreshold=0.4;//(0.0>n>1.0) default=0.4 Void drawMarkerPos(int[][]pos2d){ textFont(font, 10.0); Stroke(100,0,0); Fill(100,0,0); For (int i=0; i<4; i++) { Ellipse (pos2d[i][0], pos2d[i][1],5,5);}

Void draw() { If (cam.available() !=true){ Return;} Cam.read(); Hint (DISABLE_DEPTH_TEST); Image (cam,0,0); Hint (ENABLE_DEPTH_TEST); If(nya.detect(cam)){ Hint (DISABLE_DEPTH_TEST); For (int i=0; i<nya.markers.lenght;i++){ If(nya.markers[i].detected){ drawMarkerPos(nya.markers[i].pos2d);}} Hint (ENABLE_DEPTH_TEST); 3D

Nya.markers[i].beginTransform(); Translate (0,0,20); If (i==0){ Stroke (255, 200, 0); Box(40); }else{ Stroke (0,200,255); Sphere(25); } Nya.markers[i].endTransform();}}}

Physikalische Welt

Physical computing Software – basiertes System Beispiele: – Hausalarm-System – Bewegungsmelder Verändert die Umwelt

Arduino Mikrokontroller, Programmiersprache, Kontrolle der Beiden CPU Interagiert mit Processing

Webbasierte AR

FLARManager AR Toolset private funktion onMarkerAdded (evt:FLARMarkerEvent):void{ Trace ([+evt.marker.patternID+]added); This.modelContainer.visible=true; This.activeMarker=evt.marker; } um ein Marker zu erkennen

jMonkeyEngine

Provate PatternMarkerProcessor markerProcessor; Private NideRotateTranslateListener rtl;

Android

Vielen Dank für Ihre Aufmerksamkeit!