Programmierparadigmen in der Computergrafik

Ähnliche Dokumente
4. 3. Grafik-Programmierung

OpenGL vs. Direct3D Ein 3D-API Vergleich

VRML Tools. Markus Czok, Carsten Rohde

3.5 Implizite Beschreibungen

Warum X3D als ISO Standard?

Seminar: Grafikprogrammierung

OpenGL. (Open Graphic Library)

Praktikum: Spieleengine im Eigenbau

5. Programmierschnittstellen für XML

5. Programmierschnittstellen für XML

Inhalt. Grundlagen - Licht und visuelle Wahrnehmung 1. Grundlagen - 2D-Grafik (Teil 1) 43. Grundlagen - 2D-Grafik (Teil 2) 67

Open Source IDE - eclipse ETIS SS04

Lehrbuch der Grafikprogrammierung

Kapitel 02. Java was, wann, warum, wieso. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Scalable Vector Graphics (SVG)

3D-Druckformate und COLLADA

André Maurer Wirtschaftsinformatik FH 3.5 Fachhochschule Solothurn, Olten

Anwendungsentwicklung mit dem Windows Phone 7

Szenengraph-Architekturen im Kontext von VR- und AR-Anwendungen

Glossar. SVG-Grafiken in Bitmap-Grafikformate. Anweisung Eine Anweisung ist eine Folge aus Schlüsselwörtern, Variablen, Objekten,

Workshop: Einführung in die 3D-Computergrafik. Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar

Java basierte Browser Plug-ins. Martin Kreis 3D-Graphik im Web WS 02/ Java basierte Browser Plug-ins 1. Übersicht

Die OSGi Service Plattform

Windows Presentation Foundation

Enterprise Portal - Abbildung von Prozessen, SAP-Datenintegration und mobile Apps

Virtuelle Realität und Simulation - Übung 2

IAC-Programmierung HELP.BCFESITSIACPROG. Release 4.6C

1 Was ist XML? Hallo XML! Kommentare in XML 52

Programmiersprachen und Programmierkonzepte

Praktikum aus Softwareentwicklung 2. Web Services. Java Praktikum SS 2010

Secure Network Communications (BC-SEC-SNC)

Computergrafik SS 2016

Einführung in OpenGL. Einführung in OpenGL

eclipse - Entwicklungsumgebung und mehr ETIS SS05

Architektur und Entwicklung von VR-Anwendungen (VR-Frameworks)

Google Earth: 3D-Modelle, Formate, Standards

DirectX und OpenGL. Proseminar Multimedia-Hardwareerweiterungen Michel Weimerskirch, 15. Februar 2006

Objektorientierte graphische Programmierung

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick

Embedded Computing Conference 2014 Embedded UI Qt5

Einführung in die Programmierung mit Java

Was ist SVG? Inhalt: Allgemeines zu SVG Besondere Merkmale Vor- und Nachteile Dateiformat Standardobjekte Koordinatensystem Beispiele Links

Integrierte Editoren in Plone

Dateiformat für Doc-Safe. Anforderungen Vergleich von Standardformaten serverseitige Konvertierung Vorschau usw...

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

1. Java Grundbegriffe

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

Notationen zur Prozessmodellierung

Remote Communications

ReactOS das zu Windows binärkompatible Open-Source- Betriebssystem

Autorensysteme für mobile Anwendungen - Totgesagte leben länger. Prof. Dr. Michael Bauer Autorensysteme

Sachwortverzeichnis

Kryptos Eine Lernplattform zur Kryptologie

Client/Server-Systeme

Einsatz von Scalable Vector Graphics (SVG) zur Modellrepräsentation und -manipulation in Web-Anwendungen mit J2EE

Spring Dynamic Modules for OSGi Service Platforms

Java 3D. Linien, Flächen und Objekte Axel Bartsch, Okt. 2002

Mobile Application Development

3D webservices - where do we stand? Emmanuel Belo emmanuel.belo@camptocamp.com

Computergrafik - Projekt

Mit XML-basierten Web-Standards zur Lernplattform im Projekt ITO

Die XML-basierten Grafikformate SVG und XVL - eine Revolution der technischen Dokumentation?

Grafik - wozu? GUI Grafische Benutzungsschnittstellen. Gehört zum Standardumfang des JDK. 2 Varianten: AWT und Swing

Spring Dynamic Modules for OSGi Service Platforms

Java und XML 2. Java und XML

XNA XNA s Not Acronymed. Vorlesung Virtual Reality Wintersemester 2007/2008 Jonas Schmidt, Martin Schiewe

Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework

Java und XML/XML und Java. Mario Jeckle DaimlerChrysler Forschungszentrum Ulm

Webseiten-Programmierung

Einführung in COM Seite 1

Seminar Game Development Game Computer Graphics. Einleitung

MARKERLESS AUGMENTED REALITY. Henrik Brauer

App Entwicklung mit Hilfe von Phonegap. Web Advanced II - SS 2012 Jennifer Beckmann

Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap

Grundlegende Algorithmen

Kinect. Seminar Objektorientiertes Programmieren mit.net und C# Christoph Ihrke. Institut für Informatik Software & Systems Engineering

HTML5. Die Zukunft mobiler geodatenbasierter Anwendungen? Dipl.-Inf. Steve Schneider. Fraunhofer-Institut für Fabrikbetrieb und -automatisierung IFF

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering

ActiveX Scripting IE und DHTML (DOM): Architektur, Beispiele (Object Rexx)

Mobile Applications. Adrian Nägeli, CTO bitforge AG

Game Development 1. Proseminar Objektorientiertes Programmieren mit.net und C# Philipp Kaiser. Institut für Informatik Software & Systems Engineering

Integration von 3D-Visualisierungstechniken in 2D-Grafiksystemen

Eclipse und EclipseLink

1. Software-Plattform Android Android. Was ist Android? Bibliotheken, Laufzeitumgebung, Application Framework

Fujitsu BeanConnect TM V3.0 Software 0 FUJITSU LIMITED 2013

Scalable Vector Graphics. Ulrich Hoffmann

Multimediale Web-Anwendungen. JavaScript. Einführung. MWA JavaScript-Einführung Dr. E. Schön Sommersemester 2015 Folie 1.

Teil III. Grundlagen der Computergrafik

Dataport IT Bildungs- und Beratungszentrum. HTML- Grundlagen und CSS XML Programmierung - Grundlagen PHP Programmierung - Grundlagen...

Reporting Lösungen für APEX wähle Deine Waffen weise

Grid-Systeme. Betrachtung verschiedener Softwareplattformen zur Realisierung von Grids und Vorstellung des Globus Toolkit Grid Systeme 1

Zukunft der Oracle Applikationsentwicklung: ADF & XDB

Berater-Profil Senior Web-Developer (OO-Analyse und -Design) Sun Certified Java Programmer

Dipl. Inf. (FH) Thomas Obermaier Freier Softwareentwickler Kapellenstraße Gutenberg. Lebenslauf. Geburtstag. 1. Dezember 1981.

Multimedia/Graphics Libraries & Systems

Transkript:

Programmierparadigmen in der Computergrafik Dr. Thomas Wieland thomas@drwieland.de FH Coburg, 25. März 2002 Gliederung! Einführung! Deklarative Programmierung! Standard-APIs! OpenGL! DirectX! Java3D! Zusammenfassung 25. März 2002 Programmierparadigmen in der Computergrafik 2 1

Einführung Was ist Computergrafik?! Ziel: Erzeugung eines künstlichen Bildes auf Basis einer Beschreibung oder eines Algorithmus! Unterschiede zu! Bildverarbeitung: Manipulation eines vorhandenen Bildes (meist Kameraaufnahmen)! Bildanalyse: inhaltliches Erkennen von Bildbestandteilen 25. März 2002 Programmierparadigmen in der Computergrafik 4 2

Anwendungsgebiete der Computergrafik " Wissenschaft " Technik " Animationen " Filme " CAD " Medizin " Spiele " Simulation " Architektur 25. März 2002 Programmierparadigmen in der Computergrafik 5 Programmierung von Computergrafik! Schritt 1: Festlegung der Objekte! 3D-Formen werden durch Polygon-Oberflächen (bzw. Dreiecke) definiert! Polygone sind durch ihre Eckpunkte bestimmt! Schritt 2: Festlegung eines Blickpunkts (Position des Betrachters) und der Projektion! Schritt 3: Festlegung der Lichtquelle: Punktlichtquelle, gerichtete Lichtquelle, Umgebungslicht etc.! Schritt 4: Festlegung der Eigenschaften der Oberflächen der Objekte! Schritt 5: "Rendering" der Szene 25. März 2002 Programmierparadigmen in der Computergrafik 6 3

Die Grafik-Pipeline! Pipeline: Umwandlung der Bildbeschreibung ins fertige Bild! Stufen: Modellierung Konstruktion von grafischen Objekten Rendering Erzeugung von Bilddaten (geräteunabhängig) Ausgabe Sichtbares Bild auf Monitor, Drucker etc. 25. März 2002 Programmierparadigmen in der Computergrafik 7 Stufen des Rendering! Rendering: Umwandlung vom Polygon- Modell zum Pixel-Bild! Stufen: 1. Transformationen (Geometrische Manipulationen) 2. Clipping (Abschneiden an Grenzflächen) 3. Projektion 3D nach 2D 4. Entfernen nicht sichtbarer Flächen 5. Schattierung, Helligkeit, Farbe 6. Umsetzung in Rasterpunkte 25. März 2002 Programmierparadigmen in der Computergrafik 8 4

Wandel der Computergrafik Früher: Heute:! Offene, freie Software! Wenige standardisierte APIs (OpenGL, DirectX)! Mächtige Grafikformate für deklarative Programmierung (SVG, VRML)! Algorithmen bereits in Hardware integriert! Computergrafik dank Spielkonsolen allen vertraut, mit leistungsfähiger Software leicht selbst herstellbar 25. März 2002 Programmierparadigmen in der Computergrafik 9 Programmierparadigmen Deklarative Programmierung! Proprietäre Grafik-Pakete dominierten die Industrie! Jeder Programmierer und Dozent verwendete eigenes API! Viele Algorithmen mussten selbst implementiert werden! Computergrafik war nur "Eingeweihten" vorbehalten Skript- Programmierung Z.B. SVG, VRML In kommerziellen Produkten wie 3DStudio Max oder truespace Prozedurale Programmierung Objektorientierte Programmierung In Standard-APIs wie OpenGL Z.B. Direct3D (zum Teil) oder Java3D 25. März 2002 Programmierparadigmen in der Computergrafik 10 5

Deklarative Grafik-Programmierung Scalable Vector Graphics SVG! XML-Sprache für 2D-Vektorgrafiken, definiert vom W3C, für Verbreitung im Web! Kann als XML bearbeitet werden, z.b.! mit XSL transformieren! über DOM manipulieren! über Apache Batik SVG Toolkit in Java programmieren! Umfasst Vektordarstellungen, Animationen, eingebettete Schriften, Transparenz, Filtereffekte und Farbmanagement! Auch JavaScript-Verarbeitung und Hyperlinks werden unterstützt 25. März 2002 Programmierparadigmen in der Computergrafik 12 6

Beispiel für SVG <svg width="600" height="300"> <g transform="translate(10 10)"> <g style="stroke:none; fill:lime;" > <path d="m 0.0 112 L 20 124 L 40 129 L 60 126 L 80 120 L 100 111 L 120 104 L 140 101 L 164 106 L 170 103 L 173 80 L 178 60 L 185 39 L 200 30 L 220 30 L 240 40 L 260 61 L 280 69 L 290 68 L 288 77 L 272 85 L 250 85 L 230 85 L 215 88 L 211 95 L 215 110 L 228 120 L 241 130 L 251 149 L 252 164 L 242 181 L 221 189 L 200 191 L 180 193 L 160 192 L 140 190 L 120 190 L 100 188 L 80 182 L 61 179 L 42 171 L 30 159 L 13 140 L 00 112 Z"/> </g> </g> </svg> 25. März 2002 Programmierparadigmen in der Computergrafik 13 Virtual Reality Modelling Language! Sprache für 3D-Grafiken (dynamische 3D- Szenen)! Kann über das WWW verbreitet werden! 3D fürs Internet! Benötigt einen eigenen Viewer! HTML nachempfunden! VRML-Dateien können mittels einem Editor, einem Grafikprogramm mit Export-Funktion oder einem Konverter erstellt werden! X3D entspricht VRML in XML 25. März 2002 Programmierparadigmen in der Computergrafik 14 7

Eigenschaften von VRML! VRML-Dateien sind Textdateien (UTF8)! VRML-Objekte werden durch "Knoten" in der Datei definiert! Geometrie (z.b. Würfel, Kegel, Kugel)! Materialien, Oberflächen, Transformationen etc.! Weiterhin möglich:! Hyperlinks zu anderen URLs! Einbinden von externen Bildern! Interaktivität und Dynamik durch JavaScript 25. März 2002 Programmierparadigmen in der Computergrafik 15 Beispiele für VRML #VRML V2.0 utf8 Shape { geometry Cylinder { radius 0.1 height 3.0} appearance Appearance { material Material { diffusecolor 0.1 0.1 0.9 } } } Transform { translation 0 2.5 0 children [ Shape { geometry Sphere { radius 1 } appearance Appearance { material Material { diffusecolor 1 0 0 } } } ] } 25. März 2002 Programmierparadigmen in der Computergrafik 16 8

Standard-APIs Standard-APIs! API: Application Programming Interface! Programmierschnittstelle für Anwendungsentwickler! Zwei Varianten:! Hardwarenah, sehr fein detailliert! Vorteil: Direkter Zugriff auf alle Grafikmöglichkeiten! Nachteil: Schwierige und umfangreiche Programmierung! Beispiele: OpenGL, DirectX! Abstrakt, gröber! Vorteile: Leichter erlernbar, mächtige Befehle! Nachteil: Weniger Möglichkeiten! Beispiele: Java3D, Open Inventor 25. März 2002 Programmierparadigmen in der Computergrafik 18 9

OpenGL! Weit verbreitete Programmierschnittstelle, besonders für 3D-Grafik! Erstmals 1992 vorgestellt! Wird von allen wichtigen Plattformen (Unix, Linux, Windows, Mac, OS/2 usw.) unterstützt! Ein Architekturkomitee legt die Spezifikation fest! Implementierungen können eigene Erweiterungen bereitstellen! Werden manchmal in den Standard aufgenommen 25. März 2002 Programmierparadigmen in der Computergrafik 19 Funktionsgruppen in OpenGL! Objektfunktionen: Definieren von dreidimensionalen polygonalen Objekten! Attributfunktionen: Festlegen von Eigenschaften der Objekte! Blickfunktionen: Festlegen des Betrachtungsmodus! Transformationsfunktionen: Modifizieren von Objekten, z.b. Verschieben, Drehen, Skalieren! Eingabefunktionen! Kontrollfunktionen: Initialisierung, Rückgriff auf das Fenstersystem 25. März 2002 Programmierparadigmen in der Computergrafik 20 10

OpenGL-Blockdiagramm Bild Pixel auspacken Pixel packen Pixeloperationen Bildrasterung Texturspeicher Fragmentoperationen Frame Buffer Kanten auspacken Kantenoperationen Geometrie Polygonrasterung Quelle: SGI 25. März 2002 Programmierparadigmen in der Computergrafik 21 OpenGL-Beispielprogramm 25. März 2002 Programmierparadigmen in der Computergrafik 22 11

DirectX! Sammlung von Multimedia-APIs für Windows von Microsoft, aktuell Version 8! Enthält für Grafik: DirectDraw und Direct3D! Plattform für hochperformante Grafikoperationen in Echtzeit! Feingranulare Funktionen ("low-level")! Schnittstellen basieren auf COM (Component Objekt Model)! Zugriff aus C++ meist in Makros gekapselt! Zugriff aus VisualBasic bzw. C# einfacher! DirectX ist hardware-unabhängig! Nutzt Hardware-Beschleunigung in Grafikkarten und Prozessoren (z.b. MMX, 3DNow!)! Verwendet ansonsten Software-Emulation 25. März 2002 Programmierparadigmen in der Computergrafik 23 Microsoft COM! Abstraktes Objektmodell! Definiert einen Standard für die Interaktion von binären Komponenten (auch "ActiveX" genannt)! Ist programmiersprachenunabhängig, aber nicht wirklich objekt-orientiert!! Schnittstellen fassen Methoden zusammen! Objekte sind nur über ihre Schnittstellen erreichbar! Jede Schnittstelle ist von IUnknown abgeleitet! Enthält u.a. Mechanismus für Objektlebenszeit! Schnittstellen werden in der Interface Description Language (IDL) spezifiert! MIDL-Compiler erzeugt daraus Proxy-Code und Typelibs 25. März 2002 Programmierparadigmen in der Computergrafik 24 12

Einordnung von Direct3D Win32-Anwendungen D3D Retained Mode GDI DirectDraw Direct3D Immediate Mode Software Emulation Windows DDI DirectDraw/Direct3D HAL Grafik-Hardware 25. März 2002 Programmierparadigmen in der Computergrafik 25 Direct3D Beispielprogramm 25. März 2002 Programmierparadigmen in der Computergrafik 26 13

Grafikprogrammierung in Java Sun Java 2 Plattform 25. März 2002 Programmierparadigmen in der Computergrafik 28 14

Java3D! Plattformunabhängiges, abstraktes API ("high-level") zur 3D-Programmierung in Java (J2SE)! Verfügbar für Windows, Solaris, AIX, HP-UX, Linux und IRIX! Bildet Abstraktionsschicht über Standard-APIs, d.h. benutzt selbst OpenGL, DirectX etc.! Hohe Leistungsfähigkeit! Hohe Performanz! Umfangreiche 3D-Funktionalität! Objektorientiertes Paradigma! Unterstützung verschiedener Dateiformate! Unabhängige asynchrone Komponenten! Automatisches Rendering! Ereigniserzeugung (Kollisionserkennung)! Flexible Behandlung von Eingabegeräten 25. März 2002 Programmierparadigmen in der Computergrafik 29 Der Szenengraph! Spezifiziert die Grafik in ihren Elementen! Objekte! Gruppierung! Verhalten (Call-backs)! Hierarchischer Aufbau! Anwendung konstruiert den Szenengraph, API übernimmt das Rendering! Enthält in Java3D:! "View"-Zweig für Blickrichtung etc.! "Content"-Zweig für Formen, Beleuchtung usw. 25. März 2002 Programmierparadigmen in der Computergrafik 30 15

Java3D-Beispielprogramm 25. März 2002 Programmierparadigmen in der Computergrafik 31 Java Game API for Mobile Phones! Java-Schnittstelle für Spiele und Grafikanwendungen auf Mobiltelefonen (J2ME/CLDC+MIDP)! Unterstützt u.a.! Sprites! Zeichenfunktionen! Bildmanipulationen! Gekachelte Hintergründe! Schnelle Funktionen durch native C-Implementierung mit dünner Java-Schnittstellen-Schicht! Standardisiert im Java Community Process (JSR-118) 25. März 2002 Programmierparadigmen in der Computergrafik 32 16

Siemens Java Game API 25. März 2002 Programmierparadigmen in der Computergrafik 33 Zusammenfassung 17

Fazit! Computergrafik wird allgegenwärtig! Deklarative Grafikformate wie SVG oder VRML/X3D werden immer leistungsfähiger! Programmierung von Computergrafik wird heute durch Standard-APIs wie OpenGL oder DirectX bestimmt! Abstrakte Programmierschnittstellen wie in Java3D erlauben die Konzentration auf die Anwendung, weg von der reinen Grafikprogrammierung! Theoretische Grundkenntnisse sind immer noch nötig, werden aber nicht mehr so oft gebraucht! "Arbeitsteilung" zwischen Grafikprogrammierer und Anwendungsentwickler 25. März 2002 Programmierparadigmen in der Computergrafik 35 Wissenschaftliche Herausforderungen! Verbindung von Foto/Video und Computergrafik! Z.B. als "augmented reality"! Nutzung neuer Darstellungsmöglichkeiten! Z.B. Holografie, 3d-Eindruck ohne Hilfsmittel! Effiziente Grafikverfahren für kleine Geräte (Webpads, PDAs, Smart Phones)! "Hochsprachen" für Grafikprogrammierung! Grafik als Bestandteil der Software-Architektur 25. März 2002 Programmierparadigmen in der Computergrafik 36 18

Danke für Ihre Aufmerksamkeit Fragen oder Anmerkungen? 25. März 2002 Programmierparadigmen in der Computergrafik 37 19