Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Dennis Willkomm, Jens Freiling & Nils Sawade 1 Interface QT/XML/CVS Praktikum Augmentierte Bildsynthese mit Photon Mapping Interface Gruppe.

Ähnliche Präsentationen


Präsentation zum Thema: "Dennis Willkomm, Jens Freiling & Nils Sawade 1 Interface QT/XML/CVS Praktikum Augmentierte Bildsynthese mit Photon Mapping Interface Gruppe."—  Präsentation transkript:

1 Dennis Willkomm, Jens Freiling & Nils Sawade 1 Interface QT/XML/CVS Praktikum Augmentierte Bildsynthese mit Photon Mapping Interface Gruppe

2 Dennis Willkomm, Jens Freiling & Nils Sawade 2 Interface QT/XML/CVS Gliederung  Qt Allgemein  XML  CVS  OpenEXR

3 Dennis Willkomm, Jens Freiling & Nils Sawade 3 Interface QT/XML/CVS QT allgemein

4 Dennis Willkomm, Jens Freiling & Nils Sawade 4 Interface QT/XML/CVS Was ist Qt  C++ Klassen Bibliothek  GUI Toolkit  Für Unix und Windows  Quelle: www.trolltech.comwww.trolltech.com

5 Dennis Willkomm, Jens Freiling & Nils Sawade 5 Interface QT/XML/CVS Interface Elemente/Buttons  Push Button  Check Box  Radio Button  Label  Tool Button  Button Group

6 Dennis Willkomm, Jens Freiling & Nils Sawade 6 Interface QT/XML/CVS Interface Elemente/Input  Scrollbar  Slider  Combo Box  Spin Box  Line Edit  Dial  LCDNumber  PixmapLabel

7 Dennis Willkomm, Jens Freiling & Nils Sawade 7 Interface QT/XML/CVS Interface Elemente/Widgets HelloWorld.cpp #include int main( int argc, char **argv) { QApplication myApplication (argc, argv); QPushButton myPushButton („Hello World!“, 0); myPushButton.resize(100, 30); myApplication.setMainWidget( &myPushButton); myPushButton.show(); return myApplication.exec(); }

8 Dennis Willkomm, Jens Freiling & Nils Sawade 8 Interface QT/XML/CVS Signals & Slots  Kommunikation zwischen Objekten  Signale werden ausgelöst, wenn ein Event autritt

9 Dennis Willkomm, Jens Freiling & Nils Sawade 9 Interface QT/XML/CVS Interface Elemente/Widgets HelloWorld.cpp #include int main( int argc, char **argv) { QApplication myApplication (argc, argv); QPushButton myPushButton („Hello World!“, 0); myPushButton.resize(100, 3); myApplication.setMainWidget( &myPushButton); myPushButton.show(); QObject::connect(&myPushButton, SIGNAL(clicked()), &myApplication, SLOT(quit()) ); return myApplication.exec(); }

10 Dennis Willkomm, Jens Freiling & Nils Sawade 10 Interface QT/XML/CVS OpenGL Anbindung #include GLBox::GLBox( QWidget* parent, const char* name) : QGLWidget( parent, name) { xRot = yRot = zRot = 0.0; scale = 1.0; localDisplayList = 0; }

11 Dennis Willkomm, Jens Freiling & Nils Sawade 11 Interface QT/XML/CVS Unser Interface?

12 Dennis Willkomm, Jens Freiling & Nils Sawade 12 Interface QT/XML/CVS XML

13 Dennis Willkomm, Jens Freiling & Nils Sawade 13 Interface QT/XML/CVS Gliederung  XML Allgemein  Aufbau einer XML-Datei  XML-Parser

14 Dennis Willkomm, Jens Freiling & Nils Sawade 14 Interface QT/XML/CVS XML Allgemein  Was ist XML? 1. Ein Informationscontainer „XML ist den allgegenwärtigen Plastikbehältern von Tupperware sehr ähnlich.“ (O‘Reilly) XML enthält, formt, benennt, strukturiert und schützt Informationen.

15 Dennis Willkomm, Jens Freiling & Nils Sawade 15 Interface QT/XML/CVS XML Allgemein  Was ist XML? 2. Ein Werkzeugkasten für Markup-Sprachen XML ist keine Markup-Sprache, da kein festgelegtes Vokabular und keine festgelegte Grammatik existiert. XML legt ein Fundament aus syntaktischen Beschränkungen, anhand denen man sich eine eigene Sprache schaffen kann.

16 Dennis Willkomm, Jens Freiling & Nils Sawade 16 Interface QT/XML/CVS XML Allgemein  Was ist XML? 3. Ein offener Standard Ein offener Standard wird nicht stillschweigend geändert und ist auch nicht an das Schicksal eines Unternehmens geknüpft. Spezifikation steht der Öffentlichkeit zur Verfügung (http://www.w3.org/TR/REC-xml)http://www.w3.org/TR/REC-xml

17 Dennis Willkomm, Jens Freiling & Nils Sawade 17 Interface QT/XML/CVS XML Allgemein  Was leistet XML? - Daten speichern und abrufen - Dokumente formatieren - In Präsentationsformate transformieren

18 Dennis Willkomm, Jens Freiling & Nils Sawade 18 Interface QT/XML/CVS Ein XML-File

19 Dennis Willkomm, Jens Freiling & Nils Sawade 19 Interface QT/XML/CVS Ein XML File  Typen von Tags in XML Leere Elemente Container Elemente Das ist ein Absatz Deklarationen Verarbeitungsanweisungen Kommentare CDATA-Abschnitte Entity-Referenzen &name

20 Dennis Willkomm, Jens Freiling & Nils Sawade 20 Interface QT/XML/CVS XML Parser  Wie funktioniert ein Parser

21 Dennis Willkomm, Jens Freiling & Nils Sawade 21 Interface QT/XML/CVS XML Parser  Was macht ein Parser 1. Interne Prüfmechanismen (Ablegen auf Stacks) 2. Der Parser sucht nach Quellen von Entity-Referenzen und gliedert diese in das Dokument ein 3. Strukturprüfung (Validierung)

22 Dennis Willkomm, Jens Freiling & Nils Sawade 22 Interface QT/XML/CVS XML Parser  Parser in Browsern Man kann XML-Files in Browsern anzeigen. Bis zu einem gewissen Grad werden Prüfungen durchgeführt.  Parser in Programmiersprachen Es gibt viele fertige API‘s, die man für seine Programme verwenden kann. Problem: XML ist stark auf Java ausgerichtet. Weniger Auswahlmöglichkeiten und Dokumentationen für C++.

23 Dennis Willkomm, Jens Freiling & Nils Sawade 23 Interface QT/XML/CVS XML Parser  Was sollte ein Parser können? SAX (Simple API for XML) DOM (Document Objects Model) DTD-Validierung

24 Dennis Willkomm, Jens Freiling & Nils Sawade 24 Interface QT/XML/CVS XML Parser  SAX Simple API for XML - erste und beliebteste Methode - XML Inhalt wird als Art Pipeline behandelt (Stream) - abhängig von einfachem Markup, das der Verarbeitungsreihenfolge entspricht - die Quelle der Dateien ist unwichtig (Datei oder Programmausgabe)

25 Dennis Willkomm, Jens Freiling & Nils Sawade 25 Interface QT/XML/CVS XML Parser  DOM Document Object Model - Baummethode - Möglichkeit zu jedem Punkt zu gehen - mehr Ressourcen erforderlich

26 Dennis Willkomm, Jens Freiling & Nils Sawade 26 Interface QT/XML/CVS XML Parser  Unsere Auswahl (vorläufig) Xerces-C Unterstütz Java, C++, Perl API‘s: DTD-Validierung, SAX, DOM, Xerces Native Interface, XML Schema http://xml.apache.org

27 Dennis Willkomm, Jens Freiling & Nils Sawade 27 Interface QT/XML/CVS CVS Concurrent Version System

28 Dennis Willkomm, Jens Freiling & Nils Sawade 28 Interface QT/XML/CVS  Versionskontrollsystem Gleichzeitiges Arbeiten an Dateien (keine Locking- Mechanismen) Arbeitet mit Versionsnummer Verzeichnisbaumstruktur Ist in Client/Server aufgebaut  Auf dem Server stehen die Projekte in Modulen in einem globalen Repository zur Verfügung.  Die Benutzer haben eine Arbeitskopie des aktuellen Moduls auf ihrem eigenen Arbeitsbereich CVS

29 Dennis Willkomm, Jens Freiling & Nils Sawade 29 Interface QT/XML/CVS Befehlsaufbau  Alle Kommandos werden als Parameter mit dem Programm cvs aufgerufen  Die allg. Optionen sind nur einmal nötig, da sie von cvs im lokalen Modul abgespeichert werden (z.B. –d für den Repository-Pfad) der normale Aufruf sieht daher meist so aus: cvs [allg. optionen] Kommando [kommandooptionen] cvs Kommando [kommandooptionen]

30 Dennis Willkomm, Jens Freiling & Nils Sawade 30 Interface QT/XML/CVS Repository Anlegen Man benötigt hier die allg. Option - d um den Ort des Repository anzugeben cvs –d /usr/local/cvsroot init oder extern cvs –d :pserver:user@prakt.uni- koblenz.de:/usr/local/cvsroot init mit dem Kommando init wird das Repository initialisiert pserver gibt die verwendete Zugriffsmethode an (es gibt noch andere z.B. via ssh, dies wird hier aber nicht behandelt)

31 Dennis Willkomm, Jens Freiling & Nils Sawade 31 Interface QT/XML/CVS Module ins Repository anlegen Als erstes wechselt man in das Verzeichnis, indem die Verzeichnisse/Daten liegen, die als Modul ins Repository importiert werden sollen cvs –d import –m Es werden nun alle Dateien/Verzeichnisse im Aktuellen Verzeichnis ins Modul importiert. Mit –m wird ein Kommentar hinzugefügt. Die Tags am Schluß dienen „nur“ für die Verwaltung von CVS, sie sind daher beliebig wählbar.

32 Dennis Willkomm, Jens Freiling & Nils Sawade 32 Interface QT/XML/CVS Auschecken von Modulen Man wechselt in das gewünschte lokale Verzeichnis, in das das Projekt als Arbeitskopie angelegt werden soll.  eventuell muss man sich vorher noch auf dem Server einloggen: cvs –d login cvs –d checkout oder kurz cvs –d co

33 Dennis Willkomm, Jens Freiling & Nils Sawade 33 Interface QT/XML/CVS Arbeitskopie aktualisieren Seine Arbeitskopie des Moduls auf den neusten Stand bringt man, indem man in den Projekt-Ordner wechselt und folgende Eingabe aufruft cvs update besser cvs update –d –A -d fügt auch neue Verzeichnisse hinzu -A löscht eventuelle Optionen von vorherigen Updates

34 Dennis Willkomm, Jens Freiling & Nils Sawade 34 Interface QT/XML/CVS Update auf andere Versionen cvs update –D bringt die Arbeitskopie auf den „aktuellen“ Stand vom angegebenen Datum cvs update –r oder bringt sie auf den Stand einer bestimmten Versionsnummer oder auf eine Version, die durch einen Tag markiert wurde (siehe auch Tagging)

35 Dennis Willkomm, Jens Freiling & Nils Sawade 35 Interface QT/XML/CVS Dateien verändern Bevor man eine Datei verändern kann, muss man es beim Repository anmelden cvs edit Jetzt kann man die Datei ändern. Damit die veränderte Datei ins Repository aufgenommen wird fehlt noch ein cvs commit –m cvs unedit falls man die Datei doch nicht verändert will, werden eventuelle Änderungen rückgängig gemacht (edit und unedit wird bei uns nicht benötigt, es reicht veränderte Datei mit commit ins Reposity zu stellen)

36 Dennis Willkomm, Jens Freiling & Nils Sawade 36 Interface QT/XML/CVS Mischen & Konflikte Wenn man eine veränderte Datei ins Repository überführen will, kann es sein, das sie schon in einer neueren Version, als die geänderte Datei, vorliegt. CVS gibt eine Warnung aus und übernimmt die Datei nicht ins Repository. Nun muss man, um seine Änderungen in die neue Version aufzunehmen, auf die neuste Version updaten. Hierbei mischt CVS die neuere globale Version mit der eigene lokalen Version zusammen. Läuft das Mischen konfliktfrei, so wird eine neue Version erstellt, die man nun ins Repository übertragen kann.

37 Dennis Willkomm, Jens Freiling & Nils Sawade 37 Interface QT/XML/CVS Mischen & Konflikte Treten aber beim Mischen Konflikteauf, so meldet das CVS und erstellt eine neue Datei, in der die Konflikte folgendermaßen gezeigt werden... <<<<<<< filename... lokaler Text... =======... globaler Text... >>>>>>> 1.3... die Probleme müssen behoben werden und die Datei kann dann als neue Version ins Repository übermittelt werden. (die eigene Datei wird als # im Arbeitsverzeichnis abgesichert)

38 Dennis Willkomm, Jens Freiling & Nils Sawade 38 Interface QT/XML/CVS Datei & Verzeichnisse anlegen Eine neue Textdatei/Verzeichnis, muss erst im/ins Project-Ordner erstellt/kopiert werden, nur dann kann sie in die eigene Arbeitskopie aufgenommen werden, das geht dann mit cvs add cvs add -kb (-kb wird bei Binärdateien benötigt, da sie nicht mit einander verglichen werden können) cvs add Damit die Datei noch ins Repository aufgenommen wird, fehlt noch ein cvs commit –m bei Verzeichnissen reicht das add Kommando aus.

39 Dennis Willkomm, Jens Freiling & Nils Sawade 39 Interface QT/XML/CVS Löschen von Datein Dateien, können aus der Arbeitskopie gelöscht werden mit cvs remove sie müssen dann noch physikalisch aus dem Arbeitverzeichnis gelöscht werden, das geht mit cvs remove –f auch in einem Schritt, mit cvs commit –m werden sie auch aus dem Repository „gelöscht“, hier werden sie, damit vorherige Versionen wieder hergestellt werden können, aber nur als gelöscht markiert.

40 Dennis Willkomm, Jens Freiling & Nils Sawade 40 Interface QT/XML/CVS Unterschiede in Dateien zeigen Um die Unterschiede zwischen lokaler und globaler Fassung zu bestimmen, kann man den Aufruf cvs diff verwenden. Mit der zusätzlichen Angabe von Versionsnummern lassen sich die Differenzen zwischen beliebigen Fassungen ausgeben cvs diff –r -r

41 Dennis Willkomm, Jens Freiling & Nils Sawade 41 Interface QT/XML/CVS Herausfinden, wer was gemacht hat cvs log Bekommt man die Log-Datei ausgegeben, eine Übersicht aller Versionen der Datei/en mit den Kommentaren wird gezeigt cvs history zeigt eine Datei mit allen Aktionen, die CVS bisher durchgeführt hat

42 Dennis Willkomm, Jens Freiling & Nils Sawade 42 Interface QT/XML/CVS Tagging CVS vergibt für jede Datei automatisch Versionsnummern. Dateien mit verschiedensten Versionen kann man zu einem Release zusammenstellen durch cvs tag dadurch werden alle Dateien symbolisch zusätzlich mit diesen tagname versehen

43 Dennis Willkomm, Jens Freiling & Nils Sawade 43 Interface QT/XML/CVS GUI für CVS z.B. WinCvs für Windows, MacCvs für Mac und gCvs für Linux www.wincvs.org Videos * WinCvs

44 Dennis Willkomm, Jens Freiling & Nils Sawade 44 Interface QT/XML/CVS CVS Quellen CVS findet man unter www.cvshome.orgwww.cvshome.org Nützliche Dokumente zu CVS  www.cvshome.org/docs/manual/ www.cvshome.org/docs/manual/  cvsbook.red-bean.com/translations/german/ cvsbook.red-bean.com/translations/german/  www.fido.de/kama/cvsmtp/cvsmtp.html www.fido.de/kama/cvsmtp/cvsmtp.html  pi.informatik.uni- siegen.de/kelter/lehre/04w/uk04w/skripten.html pi.informatik.uni- siegen.de/kelter/lehre/04w/uk04w/skripten.html

45 Dennis Willkomm, Jens Freiling & Nils Sawade 45 Interface QT/XML/CVS OpenEXR

46 Dennis Willkomm, Jens Freiling & Nils Sawade 46 Interface QT/XML/CVS Gliederung  HDR Images  Besonderheiten von OpenEXR  Die OpenEXR API  Beispiele für OpenEXR

47 Dennis Willkomm, Jens Freiling & Nils Sawade 47 Interface QT/XML/CVS HDR Images Das in der Natur vorhandene Helligkeitsspektrum unterscheidet sich stark von dem, das im Computer reproduzierbar ist. (totale Dunkelheit – Sonne) Darstellung auf Bildschirm / Foto subjektiv richtig, da die Augen selbst auch das Helligkeitsspektrum auf ein erträgliches Maß reduzieren. Helligkeitsbandbreite von normalen RGB-Bildern ist zu klein um eine 3D-Szene realistisch auszuleuchten. Bei HDRI werden zu jedem Pixel auch dessen Energiewerte abgespeichert.

48 Dennis Willkomm, Jens Freiling & Nils Sawade 48 Interface QT/XML/CVS HDR Images

49 Dennis Willkomm, Jens Freiling & Nils Sawade 49 Interface QT/XML/CVS HDR Images Formate von HDRI Die gebräuchlichsten sind RadianceFiles (.HDR /.RGBE). Eine neue Alternative ist das OpenEXR Format (.EXR) von Industrial Light and Magic.

50 Dennis Willkomm, Jens Freiling & Nils Sawade 50 Interface QT/XML/CVS Besonderheiten von OpenEXR OpenEXR wurde speziell für die Anforderung im 3D und Postproduktionsbereich entwickelt und kann neben HDRI auch Ebenen und Alphakanäle speichern. Durch eine leicht verminderte Dynamik (im Vergleich zu.HDR) wird die Dateigröße zwischen 30 und 50% reduziert.

51 Dennis Willkomm, Jens Freiling & Nils Sawade 51 Interface QT/XML/CVS Die OpenEXR API Auf www.openexr.com downloadbar.www.openexr.com Erlaubt lesen / schreiben von.EXR in C++

52 Dennis Willkomm, Jens Freiling & Nils Sawade 52 Interface QT/XML/CVS OpenEXR Beispiele


Herunterladen ppt "Dennis Willkomm, Jens Freiling & Nils Sawade 1 Interface QT/XML/CVS Praktikum Augmentierte Bildsynthese mit Photon Mapping Interface Gruppe."

Ähnliche Präsentationen


Google-Anzeigen