Universität Innsbruck

Größe: px
Ab Seite anzeigen:

Download "Universität Innsbruck"

Transkript

1 Universität Innsbruck Institut für Informatik Intelligente und Interaktive Systeme Physic Integration für Viz-Artist Mathias Hölzl Bachelorarbeit Betreuer: Justus Piater 24. Juni 2016

2

3 Abstract Der erste Teil dieser Bachelorarbeit befasst sich mit der Evaluation der verfügbaren Physik Engines für Echtzeitsimulationen. Dabei werden folgende Kategorien bewertet: Allgemeines, Simulationsarten, Kollisionsgeometrien, Gelenke und Motoren und die Hardwareunterstützung. Die Physik Engine mit der besten Bewertung wird im zweiten Teil dieser Arbeit in dem Programm Viz-Artist integriert. Zusätzlich soll ein Plug-in entwickelt werden, welches die Simulation starrer Körper ermöglichen soll. i

4 ii

5 Inhaltsverzeichnis Abstract Inhaltsverzeichnis Erklärung i iii v 1 Einführung Hintergrund Viz-Artist Physikalische Simulation Vor- und Nachteile der Animationssysteme Arbeitsbeschreibung Verwandte Arbeit Physik-Engine Simulationsarten Physik starrer Körper Evaluierung Anforderungen Evaluierte Engines PhysX Bullet Open Dynamics Engine Newton Game Dynamics Weitere Physik Engines Bewertung Resultate Zusammenfassung Design Use-Cases Viz-Artist Plug-in System Komponenten Viz-Artist Plug-in PhysicWrapper Konvexe Zerlegung V-HACD iii

6 6 Implementierung Technologien API Programmierung Binäre Kompatibilität Laden einer DLL zur Laufzeit Referenzzählung PhysicWrapper Kollisionsgeometrie Komplexe Geometrien für dynamische Körper Objektorientierte Plugin Benutzeroberfläche Visualisierung Resultate Umwandlung komplexer Geometrie Plug-ins Rigidbody Plug-in Kinematic Platform Plug-in Canon Plug-in Schlussfolgerung Zusammenfassung Aussicht Bewegungsunschärfe Erweiterungen Geometrieumwandlung auf der GPU Literaturverzeichnis 29 Abbildungsverzeichnis 31 Tabellenverzeichnis 33 iv

7 Erklärung Ich erkläre hiermit an Eides statt durch meine eigenhändige Unterschrift, dass ich die vorliegende Arbeit selbständig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel verwendet habe. Alle Stellen, die wörtlich oder inhaltlich den angegebenen Quellen entnommen wurden, sind als solche kenntlich gemacht. Signiert: Datum: v

8 vi

9 Kapitel 1 Einführung In der digitalen Unterhaltungsbranche versucht man vermehrt eine realitätsnahe Illusion zu schaffen. Dies lässt sich dadurch erreichen, dass man Objekte naturgetreu darstellt. Das alleine reicht jedoch nicht aus, denn die Objekte müssen sich zudem natürlich verhalten. Solche Verhaltensweisen lassen sich am besten mit Gesetzen der Physik beschreiben. Die Formulierung und Programmierung solcher Prozesse sind keineswegs trivial. Aus diesem Grund ist es sinnvoll, bereits existierende Physik-Engines zu verwenden. Da die Anzahl an verfügbaren Physik-Engines so groß ist, ist es umso wichtiger, die richtigen Entscheidungen bei der Auswahl zu treffen. 1.1 Hintergrund Bei der Produktion von digitalen Inhalten für Fernsehausstrahlungen ist es üblich, Grafiken über ein bestehendes Video zu legen. Charakteristisch ist die sogenannte Bauchbinde. Dabei wird mit einer Grafik im unteren Bildrand, der Name und die Funktion einer Person erklärt. Heutzutage ist diese jedoch nur noch ein kleiner Teil der Produktion. Animierte 3D-Grafiken und anspruchsvolle Effekte sind bereits der Standard. Auch der Einsatz der erweiterten Realität nimmt immer mehr zu. Dabei stehen reale und virtuelle Objekte im dreidimensionalen Zusammenhang Viz-Artist Der Viz-Artist [15] ist ein Programm der Firma Vizrt [16]. Vizrt bietet Softwarelösungen für die Broadcasting-Branche. Mit fast 600 Mitarbeitern und 40 Niederlassungen weltweit gilt Vizrt als Marktführer in dieser Sparte. Im Viz-Artist können die 2D- und 3D-Grafiken für die Einblendungen erstellt und animiert werden. Für die Animation werden sogenannte Schlüsselbilder verwendet. Ähnlich wie bei einem Video, besteht die Animation aus einzelnen Schlüsselbildern, welche Informationen wie Position und Orientierung der Objekte zu einem gewissen Zeitpunkt beinhalten. Durch die Interpolation zwischen zwei Schlüsselbildern verringert sich die Anzahl der benötigten Schlüsselbilder für eine ruckelfreie Darstellung. Die einzelnen Bilder werden bei der Produktion aufgenommen und gespeichert. Die Interpolation erfolgt erst bei der Wiedergabe Physikalische Simulation Bei der physikalischen Simulation verhalten sich die Objekte nach den Gesetzen der Physik. Jedes Objekt erhält physikalische Parameter wie Masse, Reibung und Elastizität. Bei der Wiedergabe werden diese durch einen Simulationsschritt kontinuierlich aktualisiert. Wie bei der Schlüsselbildanimation, ist auch bei der physikalischen Simulation eine Interpolation zwischen 1

10 2 KAPITEL 1. EINFÜHRUNG zwei Simulationsschritten möglich Vor- und Nachteile der Animationssysteme Schlüsselbildanimation: + Konstanter Zeitaufwand bei der Wiedergabe + Einfaches Vor- und Zurückspulen + Wiedergabe an einem beliebigen Zeitpunkt + Deterministische Wiedergabe + Definierter Zustand zu einem exakten Zeitpunkt Natürliche Vorgänge können nicht per Hand animiert werden (Rauch, Wasser, herabfallende Gegenstände,... ) Muss vorher aufgenommen und gespeichert werden Änderungen sind aufwändig Physikalische Simulation: + Natürliches Verhalten der Objekte + Einfache Modellierung + Geringer Änderungsaufwand + Geringer Speicherbedarf + Verarbeitung von Events (z.b. Objekt A hat Objekt B berührt) Variable Simulationszeit Wiedergabe an einem beliebigen Zeitpunkt bzw. das Zurückspulen ist ineffizient Nichtdeterminismus (geringe Abweichungen bei wiederholter Wiedergabe möglich) 1.2 Arbeitsbeschreibung Im ersten Teil dieser Bachelorarbeit wird der Auswahlprozess einer Physik-Engine beschrieben. Dabei ist ein Anforderungskatalog hilfreich. Dort werden die Anforderungen aufgelistet und in Muss-, Soll- und Kann-Anforderungen unterteilt. Der zweite Schritt ist die Evaluation: Die verfügbaren Leistungen der einzelnen Physik-Engines werden bewertet. Im letzten Schritt erfolgt die Auswahl. Im zweiten Teil soll diese Physik-Engine in das Programm Viz-Artist integriert werden. Ziel ist es, ein Plug-in zu entwickeln, das die einfache Erstellung von starren Körpern und deren Simulation ermöglicht. 1.3 Verwandte Arbeit Die Verwendung einer Physik-Engine für die Simulation physikalischer Effekte in Echtzeit ist keineswegs Neuland. In modernen Computerspielen, in der Robotik und auch in der Medizin

11 1.3. VERWANDTE ARBEIT 3 werden vermehrt Physik-Engines eingesetzt. Anders als in der Broadcasting-Branche, wo hauptsächlich vorberechnete Animationen verwendet werden. Bei der Evaluation von Physik-Engines ist der Artikel, Evaluation of real-time physics simulation systems [1] zu erwähnen. Boeing entwickelte dafür das Programm Physics Abstraction Layer kurz PAL [9]. Die Schnittstelle ermöglicht es, mit nur einem Test mehrere Physik-Engines vergleichen zu können. PAL unterstützt zehn verschiedene Physik-Engines und davon wurden sieben für die Evaluation herangezogen. Die Ergebnisse sind veraltet und deshalb nicht mehr aussagekräftig. Ähnlich wie PAL ist das Physics Engine Evaluation Lab, kurz PEEL [10] von Pierre-Terdiman, welches 2015 veröffentlicht wurde. Eine einfache Plug-in Schnittstelle ermöglicht das Hinzufügen neuer Physik-Engines. PEEL enthält bereits ein Plug-in für Bullet [2], Newton [7] und PhysX [11].

12 4 KAPITEL 1. EINFÜHRUNG

13 Kapitel 2 Physik-Engine Eine Physik-Engine wird für die Simulation von physikalischen Prozessen verwendet. Sie finden hauptsächlich in Computerspielen oder in Simulationsprogrammen Gebrauch. In Computerspielen ist oft die physikalische Exaktheit irrelevant, wenn dadurch eine Simulation in Echtzeit garantiert werden kann. Bei Simulationsprogrammen ist wiederum oft die physikalische Korrektheit von Bedeutung. Dies führt dazu, dass sich die meisten Physik-Engines auf eines der beiden Einsatzgebiete spezialisieren. Unabhängig davon ist die Grundidee einer Physik-Engine, nämlich eine vereinfachte Programmierung von physikalischen Simulationen zu ermöglichen. 2.1 Simulationsarten Bei den physikalischen Prozessen wird zwischen folgenden Simulationsarten unterschieden: Physik starrer Körper Nicht elastische Physik mit Deformationen Masse-Feder Systeme Partikelsysteme Diese Arbeit befasst sich hauptsächlich mit der Physik starrer Körper, wobei die Evaluation alle Simulationsarten einbezieht. Dadurch können zukünftig weitere Simulationsarten hinzugefügt werden Physik starrer Körper Die Physik starrer Körper befasst sich mit der Simulation von frei beweglichen Körpern. Körper Körper besitzen eine oder mehrere Kollisionsgeometrien und physikalische Parameter wie Reibung und Elastizität. Generell wird zwischen drei Arten von Körpern unterschieden: Statische Körper Dynamische Körper Kinematische Körper 5

14 6 KAPITEL 2. PHYSIK-ENGINE Wie der Name schon vermuten lässt, bleiben die statischen Körper während der gesamten Simulation unverändert in Position und Orientierung. Dynamische Körper werden durch äußere Kräfte, wie z.b. Gravitation beeinflusst. Dabei wird die Position und Orientierung in jedem Simulationsschritt neu berechnet. Anders ist es bei den kinematischen Körpern: Position und Orientierung werden hier von dem Programm bestimmt. Beispielsweise würde ein Gebäude einem statischen Körper zugewiesen werden. Hätte das Gebäude einen Aufzug, so würde dies einem kinematischer Körper entsprechen. Ein Apfel, der von einem Baum fällt, könnte durch einen dynamischen Körper repräsentiert werden. Kollisionsgeometrien Die komplexen Geometrien, welche für die Visualisierung benützt werden, sind für die Echtzeitsimulation meist zu rechenintensiv. Deshalb werden effiziente Kollisionsgeometrien wie zum Beispiel Würfel, Kugeln, Kapseln und konvexe Hüllen benützt. Durch diese Vereinfachung gehen jedoch oft wichtige Informationen verloren. Problematisch sind zum Beispiel Geometrien mit Löchern. Eine Lösung für die effiziente Verwendung von konkaven Objekten wird später vorgestellt. Materialeigenschaften Je nach Physik-Engine stehen dafür mehrere Parameter zur Verfügung. Damit lassen sich materialspezifische Eigenschaften simulieren. Haft- und Gleitreibung beschreiben die Oberflächenbeschaffenheit und für dynamische Körper ist die Elastizität sowie die Masse von Bedeutung.

15 Kapitel 3 Evaluierung 3.1 Anforderungen Die Anforderungen werden ähnlich wie bei einem Lastenheft unterteilt in Muss-, Soll- und Kann- Anforderungen. Folgende Anforderungen werden an die Physik-Engine gestellt: Anforderung Muss Soll Kann Echtzeit Keine Lizenzkosten C/C++ Windows/Linux Mac OS X Hardwarebeschleunigung Physik starrer Körper Box Kugel Kapsel Dreiecksnetz Simulation von Partikeln Simulation von Seilen Simulation von Stoffen Tabelle 3.1: Anforderungen an die Physik Engine 3.2 Evaluierte Engines Folgende Kandidaten erfüllen die Muss-Anforderungen und wurden für die Evaluation ausgewählt: PhysX Anfangs wurde die PhysX Engine [11] von der Firma Novodex AG unter dem Namen Novodex entwickelt. Diese wurde später von Ageia übernommen. Dabei erhielt die Physik Engine den heutigen Namen PhysX. Ageia wurde 2008 von dem Grafikkartenhersteller Nvidia übernommen. 7

16 8 KAPITEL 3. EVALUIERUNG Bullet Bullet [2] ist eine Open-Source Physik Engine. Neben PhysX ist Bullet eine der bekanntesten Physik Engines. Neben hochrangigen kommerziellen Spielen wurde Bullet auch oft als Erweiterung in Form eines Plugins verwendet. Dabei ist wohl die Integration in Blender am bekanntesten Open Dynamics Engine Open Dynamics Engine (ODE) [8] ist ein Open-Source-Projekt von Russell Smith. ODE unterstützt nur die Physik starrer Körper. Einsatz findet diese Physik Engine in kommerziellen Computerspielen, Modellierungs- und Simulationsprogrammen. Besonders im Bereich der Robotiksimulation wird sie von vielen Programmen verwendet Newton Game Dynamics Newton Game Dynamics [7] spezialisiert sich ebenfalls auf die Physik starrer Körper. Sie ist Bestandteil von Spiele-Engines, wie die Leadwerks Engine und die HPL Engine. Auch dieses Projekt ist als Open Source verfügbar und zu den Hauptautoren gehören Julio Jerez und Alain Suero Weitere Physik Engines Neben diesen Kandidaten wurden noch weitere bekannte Physik Engines untersucht, welche sich jedoch als ungeeignet herausstellten. Unter anderem würde sich die Havok Physic-Engine [3] bestens eignen, wäre sie nicht kostenpflichtig. Die Physik-Engines True Axis [14], Tokamak [13] und die Simple-Physic-Engine [12] wurden ebenfalls oft referenziert, jedoch werden diese nicht mehr weiterentwickelt. 3.3 Bewertung Für die Evaluation wurden fünf Kategorien ausgewählt. Eine Kategorie besteht wiederum aus mehreren Kriterien. Die Engine, die ein Kriterium am besten erfüllt, erhält 100% und dient als Richtwert für die restlichen Engines. Die 5 Hauptkategorien: Allgemeines Simulationsarten Kollisionsgeometrien Gelenke und Motoren Hardwarebeschleunigung

17 3.3. BEWERTUNG Resultate Allgemeines Diese Kategorie wird hauptsächlich durch die Qualität der API bestimmt, wobei sich die Qualität aus der verfügbaren Dokumentation, Beschreibung und den Beispielen ergibt. Engine Lizenz Plattformen Qualität Physx EULA 100% Bullet Open Source, ZLib 100% ODE Open Source, BSD/LGPL 60% Newton Open Source, ZLib 100% Tabelle 3.2: Evaluation: Allgemeines Simulationsarten Engine Starre Körper Partikel Seil Stoffe Physx Bullet ODE Newton Kollisionsgeometrien Tabelle 3.3: Evaluation: Simulationsarten Engine Kugel Box Kapsel Fläche Kegel Zylinder KH 1 KD 2 HF 3 Mesh 4 PhysX Bullet ODE Newton 1 Konvexe Zerlegung 2 Konvexe Hülle 3 Höhenfeld 4 Dreiecksnetz Gelenke und Motoren Tabelle 3.4: Evaluation: Kollisionsgeometrien Engine Gelenke Motor Limitierung Brechen PhysX 6 Bullet 6 ODE 9 Newton 6 Tabelle 3.5: Evaluation: Gelenke und Motoren

18 10 KAPITEL 3. EVALUIERUNG Hardwarebeschleunigung Nur PhysX nutzt die Hardwarebeschleunigung für fast alle Berechnungen. Dabei verwendet PhysX für die Parallelisierung CUDA, welche allerdings nur mit Nvidia Grafikkarten kompatibel ist. Einen anderen Weg schlägt Bullet ein, denn für die aktuelle Version (Bullet 3) existiert bereits eine experimentelle OpenCL Implementierung. Somit wäre die plattformunabhängige Hardwarebeschleunigung möglich. Engine PhysX Bullet ODE Newton Hardwarebeschleunigung CUDA OpenCL Tabelle 3.6: Evaluation: Hardwarebeschleunigung Zusammenfassung Open Dynamics Engine Bei der Evaluierung kann die Open Dynamics Engine am wenigsten überzeugen. Sie fällt in fast jeder Kategorie auf den letzten Platz, ausgenommen der Anzahl der vordefinierten Gelenke. Durch die fehlende Hardwarebeschleunigung, die spärliche Dokumentation/Beschreibung der API und die Beschränkung auf die Physik starrer Körper, fällt die Open Dynamics Engine auch in der Gesamtbewertung auf den letzten Platz. Newton Game Dynamics Bei der Physik starrer Körper ist Newton Game Dynamics gleichauf mit Bullet und PhysX. Beispielsweise unterstützt Newton Game Dynamics im Gegensatz zu PhysX die konvexe Zerlegung, welche die Umwandlung komplexer Geometrien ermöglicht. Zusätzlich können schwimmfähige Körper modelliert werden. Da Newton jedoch die Simulation von Stoffen/Seilen nicht unterstützt und derzeit keine Hardwarebeschleunigung stattfindet, ergibt sich der dritte Platz in der Gesamtbewertung. Bullet Physics vs. PhysX In den Kategorien Allgemeines und Gelenke/Motoren sind beide Kandidaten gleichwertig. Die Qualität beider API s ist einwandfrei und der Einstieg wird mit einer großen Anzahl an Beispielen und Tutorials erleichtert. Auch in der Kategorie der Simulationsarten werden alle Anforderungen erfüllt, wobei PhysX im Gegensatz zu Bullet die Simulation von Partikeln unterstützt. Einen klaren Vorteil zieht Bullet in der Kategorie der Kollisionsgeometrie. Bullet stellt eine größere Auswahl an Kollisionsgeometrien bereit und bietet zusätzlich die konvexe Zerlegung mittels HACD an. Entscheidend war somit die letzte Sparte, nämlich die Hardwareunterstützung. Grundsätzlich macht der Einsatz von OpenCL für die Berechnung auf der GPU mehr Sinn, als die auf Nvidia Grafikkarten beschränkte Hardwarebeschleunigung mittels CUDA. Allerdings ist die OpenCL Entwicklung in Bullet erst in der Anfangsphase. Im Gegensatz dazu hat sich PhysX auf die hardwareunterstützte Simulation spezialisiert. Früher mit sogenannten Physikbeschleuniger und aktuell unter Verwendung der Grafikkarte. Dadurch, dass der Viz-Artist auf Nvidia-Grafikkarten optimiert ist und deshalb eine CUDA fähige Grafikkarte garantiert werden kann, ist PhysX besser geeignet als Bullet.

19 3.3. BEWERTUNG 11 Für die vollständige Evaluierung müssten die Physik Engines zusätzlich auf Genauigkeit, Stabilität und Performance getestet werden. Solche Eigenschaften lassen sich am besten mit einheitlichen Laufzeittests bewerten. Für solche Tests ist das PEEL [10] empfehlenswert.

20 12 KAPITEL 3. EVALUIERUNG

21 Kapitel 4 Design 4.1 Use-Cases Anforderungen an das Rigidbody Plug-in: Auswahl des Körper-Typs Statisch Dynamisch Kinematisch Auswahl der Reibung und Elastizität Haftreibung Gleitreibung Elastizität Visualisierung aktivieren/deaktivieren Dynamische Körper Auswahl der Dichte Auswahl der initialen Geschwindigkeit Auswahl der initialen Winkelgeschwindigkeit Gravitation aktivieren/deaktivieren Auswahl der Kollisionsgeometrie Box Kugel Dreiecksnetz Fläche (nur für statische/kinematische Körper) 4.2 Viz-Artist Plug-in System Abbildung 4.1: Plug-in Use- Cases Typisch für ein Plug-in System ist das dynamische Laden zur Laufzeit. Diese Methode wird auch beim Viz-Artist verwendet. Bei der Kompilierung vom Artist wird ein ausführbares Programm (.exe) erzeugt und zusätzlich eine statische Bibliothek (.lib) generiert. 13

22 14 KAPITEL 4. DESIGN Diese Bibliothek wird von den Plug-ins verwendet, um auf die Funktionalität vom Viz-Artist zugreifen zu können. Bei der Kompilierung des Plug-ins entsteht eine DLL, welche vom Artist zur Laufzeit geladen wird. Abbildung 4.2: Plug-in System 4.3 Komponenten Das Projekt setzt sich aus drei Komponenten zusammen: Viz-Artist PhysicWrapper Plug-in Der Viz-Artist bildet dabei die Basis und ermöglicht die Kommunikation zwischen Plug-in sowie PhysicWrapper. Beide werden vom Viz-Artist über eine DLL-Schnittstelle angesprochen. Abbildung 4.3: Komponenten Viz-Artist Der Viz-Artist ist für die Instanziierung und Initialisierung des Plug-ins und des PhysicWrappers zuständig. Der PhysicWrapper wird nicht beim Programmstart instanziiert, sondern bei der ersten Verwendung. Bei der Instanziierung des PhysicWrappers wird ein globaler Kontext erstellt. Dieser wird vom Viz-Artist selbst und vom Plug-in verwendet. Über diesen gemeinsamen Kontext kann das Plug-in den PhysicWrapper ansprechen.

23 4.3. KOMPONENTEN Plug-in Das Plug-in ist einerseits für die Benutzeroberfläche und deren Logik zuständig und andererseits für die Erstellung der benötigten Physikobjekte. Hierbei wird der im Viz-Artist erzeugte Kontext verwendet. Für die Benutzeroberfläche wurde der Prototyp (siehe Abb. 4.4) entworfen. Für die beiden Geometrietypen Box und Kugel soll je nach Auswahl die Dimension beziehungsweise der Radius wählbar sein. Diese Werte können jedoch auch automatisch berechnet werden. Dafür wird die Dimension des Hüllkörpers (Bounding Box) verwendet. (a) UI für statische/kinematische Körper (b) UI für dynamische Körper Abbildung 4.4: Prototyp für die Benutzeroberfläche PhysicWrapper Der PhysicWrapper ist das Kernstück dieses Projekts. Zu seinen Hauptaufgaben zählen: Initialisierung von PhysX Erstellung und Verwaltung von physikalischen Objekten Visualisierung Konvexe Zerlegung Abkapselung der verwendeten Bibliotheken

24 16 KAPITEL 4. DESIGN

25 Kapitel 5 Konvexe Zerlegung Die Kollisionserkennung zwischen zwei konkaven Geometrien ist ineffizient und deshalb nicht für die Echtzeitsimulation geeignet. Eine Möglichkeit ist die Geometrie mit einer konvexen Hülle (siehe Abb. 5.1a) oder einer vereinfachten Geometrie (Kapsel, Ellipsoid, Kugel,... ) anzunähern, jedoch ist dies in den meisten Fällen zu ungenau. Eine bessere Annäherung bietet die konvexe Zerlegung. Dabei wird die konkave Geometrie in einzelne konvexe Hüllen umgewandelt. Für eine schnelle Kollisionserkennung ist es wichtig, die Anzahl der generierten konvexen Hüllen so niedrig wie möglich zu halten (Abb. 5.1b zeigt die perfekte konvexe Zerlegung). Dies lässt sich dadurch erreichen, dass man eine bestimmte Abweichung von der ursprünglichen Geometrie zulässt (siehe Abb. 5.1). (a) Konvexe Hülle (b) Exakte konvexe Zerlegung (c) Zerlegung mit V-HCAD Abbildung 5.1: Konvexe Zerlegung [5] 17

26 18 KAPITEL 5. KONVEXE ZERLEGUNG 5.1 V-HACD V-HACD Volumetric Hierarchical Approximate Convex Decomposition [5] ist ein Open-Source Projekt von Khaled Mamou für konvexe Zerlegung. Khaled Mamou publiziert 2009 den HCAD Algorithmus. Eine überarbeitete Version davon wurde später unter dem Namen V-HCAD als Open Source Projekt veröffentlicht. Der Algorithmus überzeugt durch Stabilität, Genauigkeit und Performance. Deshalb verwenden viele Projekte diese Bibliothek (Unreal Engine 4, Blender).

27 Kapitel 6 Implementierung 6.1 Technologien Die gesamte Programmierung fand rein in C/C ++ statt. Dafür wurde Visual-Studio 2015 verwendet. Diese Version unterstützt bereits die Funktionalität des C Standards. Für die Dokumentation wurde Doxygen verwendet. 6.2 API Programmierung Binäre Kompatibilität Bei der API Programmierung ist eine binär-kompatible Schnittstelle oft vorteilhaft. Dies lässt sich dadurch erreichen, dass man für die Schnittstellen C-Funktionen verwendet und nur Basisdatentypen für die Argumente beziehungsweise den Rückgabeparameter verwendet. Ebenfalls zu beachten ist die Form der Speicherallozierung. Dadurch, dass eine DLL einen eigenen Speicherbereich für dynamisch-allozierte Objekte besitzt, ist es nicht möglich, eine Adresse außerhalb von der DLL zu nutzen und umgekehrt. Dazu kommt, dass der Speicher immer dort freigegeben werden muss, wo er alloziert wurde. Befolgt man all dies, so lässt sich die Bibliothek unabhängig von der Compiler-Version sowie von verschiedenen Programmiersprachen verwenden Laden einer DLL zur Laufzeit Beim Einbinden einer DLL gibt es zwei Methoden: Das Einbinden zur Compile-Zeit oder das Einbinden zur Laufzeit. Bei der ersten Variante wird die DLL vom Compiler eingebunden. Dabei verwendet der Linker die von der DLL exportierten Symbole in der LIB-Datei. Beim Programmstart wird dann die DLL in den Speicherbereich eingebunden. Bei der zweiten Methode ist die Vorgehensweise ähnlich. In C ++ kann eine DLL zur Laufzeit mit der Funktion LoadLibrary() in den Prozess eingebunden werden. Die exportierten Funktionen können unter Angaben des Funktionsnamens mittels GetProcAddress() geladen. Wird die DLL nicht mehr benötigt, so kann sie mittels FreeLibrary freigegeben werden. Die verwendeten Methoden sind windowsspezifisch. Unter UNIX/Linux stehen die Funktionen dlopen(), dlsym() und dlclose() zur Verfügung. Der größte Vorteil beim Laden zur Laufzeit ist, dass die DLL nur für die Zeit ihrer Verwendung geladen wird. Beim Einbinden zur Compile-Zeit ist die DLL für die gesamte Programmlaufzeit geladen. Dazu kommt, dass bei der Kompilierung die LIB-Datei benötigt wird, welche Compilerspezifisch ist. 19

28 20 KAPITEL 6. IMPLEMENTIERUNG Referenzzählung Normalerweise sollte man die Referenzzählung in C ++ nicht anwenden. Für geteilte Ressourcen existiert dafür nämlich der std::shared_ptr. Jedoch gibt es manchmal Szenarien wo man auf das Referenzzählen nicht verzichten kann. Beispielsweise mussten für die Geometrie- und Material- Objekte die Referenzzählung angewendet werden, da diese Objekte über eine C-Schnittstelle erstellt und dann an einem Wrapper übergeben werden. Sobald der Destruktor des Wrappers aufgerufen wird, so gibt der das Objekt frei. Somit wird garantiert, dass die erstellten Objekte immer freigegeben werden und keine Speicherlecks entstehen können. Da aber Material- und Geometrieobjekte auch zu einem Körperobjekt hinzugefügt werden können, wäre es möglich, dass der Wrapper das Objekt zu früh freigibt. Deshalb wird für jede Referenz der Zähler um Eins erhöht. Wird das Objekt freigegeben so, wird der Zähler um Eins verringert. Ist dieser bei Null angelangt, so wird die Ressource endgültig freigegeben. 6.3 PhysicWrapper Die PhysicWrapper API erfüllt die Voraussetzungen für die binäre Kompatibilität und unterstützt das Laden zur Laufzeit. Für die Verwendung in C ++ stehen sogenannte Wrapper und eine Hilfsklasse für das Laden zur Laufzeit zur Verfügung. Dadurch wird das ursprüngliche objektorientierte Design wiederhergestellt Kollisionsgeometrie Folgende Kollisionsgeometrien werden von dem PhysicWrapper unterstützt: Box Kugel Dreiecksnetz Konvexe Hülle Fläche Das Dreiecksnetz und die Fläche können nur für nicht-dynamische Körper verwendet werden Komplexe Geometrien für dynamische Körper Beim Einsatz von komplexen Geometrien, also nicht-konvexen Objekten, muss die Geometrie vorher vereinfacht werden. Eine Möglichkeit ist die Vereinfachung durch eine konvexe Hülle. Ist dies zu ungenau so kann die Geometrie in mehrere konvexe Hüllen zerlegt werden. Beide Methoden werden vom PhysicWrapper zur Verfügung gestellt. Für die konvexe Zerlegung wird die Bibliothek V-HACD [5] von Khaled Mamou eingesetzt und für die Berechnung der konvexen Hülle wird der QuickHull Algorithmus angewandt. Dadurch, dass PhysX die maximale Anzahl an konvexen Polygonen auf 255 beschränkt, müssen die konvexen Hüllen zusätzlich reduziert werden. Für die Reduzierung wurde die 3D Mesh Decimation [4] Klasse ebenfalls von Khaled Mamou verwendet. Abb. 7.1 zeigt die nötigen Schritte für die Umwandlung komplexer Geometrien.

29 6.4. OBJEKTORIENTIERTE PLUGIN BENUTZEROBERFLÄCHE 21 Abbildung 6.1: Umwanldungsprozess für komplexe Geometrien 6.4 Objektorientierte Plugin Benutzeroberfläche Die Plug-in Programmierung für den Viz-Artist lässt sich in Registratur und Instanziierung einteilen. Die Registrierung erfolgt einmalig beim Start vom Viz-Artist. Im Registrierungsvorgang wird der Name des Plug-ins, die Version und zusätzliche Information an dem Viz-Artist übergeben. Im selben Schritt wird die Benutzeroberfläche erstellt. Die Plug-in Instanziierung erfolgt, sobald ein Plug-in in der Szene verwendet wird. Von Viz-Artist wird dafür ein vordefinierter Speicherbereich übergeben, welcher die Daten der UI-Elemente beinhaltet. Abb. 7.4 zeigt die Verbindung zwischen Registrierung sowie Instanziierung und wie die Daten der UI-Elmente auf den Speicherbereich abgebildet werden. Um beide Vorgänge zu vereinfachen, wurde ein objektorientiertes Template-Design entwickelt. Dafür wurde für jedes UI-Element ein eigener Wrapper entwickelt. Die UI-Elemente können durch Container zusammengefasst werden. Dies erleichtert das Ein- bzw. Ausblenden der Elemente bei Statusänderungen. Eine weitere Klasse fasst alle UI- Elemente zusammen und führt den Registrierungsvorgang durch. Bei der Instanziierung wird dieses Objekt an das jeweilige Plug-in übergeben. Abbildung 6.2: Plug-in Datenlayout Visualisierung Motivation Die Visualisierung von physikalischen Effekten in Echtzeit benötigten viel Optimierung. Einfache Simulationen können vom Programm selbst dargestellt werden. Allerdings wäre eine Darstellung in Echtzeit bei Simulationen mit hunderten Objekten ohne Optimierung unmöglich. Da dies nur für Physiksimulationen benötigt wird, wäre es nicht sinnvoll dies in die Grafik-Architektur vom Viz-Artist zu integrieren. Deshalb wurde die Visualisierung in den PhysicWrapper implementiert.

30 22 KAPITEL 6. IMPLEMENTIERUNG Dadurch ist der physikalische Teil komplett abgekoppelt. Verwendung In jedem Zeichenaufruf des Programms wird auch die Zeichenfunktion des PhysicWrappers aufgerufen. Dafür wird nur der aktive OpenGL Kontext und die Kameraeinstellung benötigt. Aussicht Zurzeit besteht die Visualisierung nur aus der Darstellung der Kollisionsgeometrie. Eine Möglichkeit für die Optimierung wäre die Verwendung von Instancing, womit mehrere Objekte mit derselben Geometrie unter einem Aufruf gezeichnet werden können.

31 Kapitel 7 Resultate 7.1 Umwandlung komplexer Geometrie Abb. 7.1 zeigt die unterschiedlichen Methoden für die Umwandlung von komplexen Objekten. Die Kollisionsgeometrien in Abb. 7.1a und Abb 7.1b können für alle Körper verwendet werden. Das Dreiecksnetz in Abb. 7.1c ist nur für statische/kinematische Körper nutzbar. (a) Konvexe Zerlegung (b) Konvexe Hülle (c) Dreiecksnetz (d) Original Abbildung 7.1: Umwandlung von komplexen Objekten 23

32 24 KAPITEL 7. RESULTATE 7.2 Plug-ins Rigidbody Plug-in Das Rigidbody Plug-in war das eigentliche Hauptziel dieser Bachelorarbeit. Mit diesem Plugin können verschiedene Kollisionsgeometrien, materialspezifische Parameter und die Art der Simulation gewählt werden. (a) Statischer Körper (b) Dynamischer Körper Abbildung 7.2: Benutzeroberfläche Abbildung 7.3: Demo Benutzeroberfläche und Verwendung Abb. 7.2 zeigt die Benutzeroberfläche, die für das Rigidbody Plug-in entwickelt wurde. Für die Reibung, Elastizität und die Dichte stehen vordefinierte Werte zur Verfügung, welche die Bedienung erleichtern. Falls diese nicht ausreichen, können auch benutzerdefinierte Werte gesetzt werden. Wählt man eine Box beziehungsweise eine Kugel als Kollisionsgeometrie aus, so hat man die Möglichkeit die Dimension/den Radius manuell oder automatisch zu wählen. Im automatischen Modus wird der dreidimensionale Rahmen (Bounding-Box) der Geometrie verwendet. Bei der Auswahl eines dynamischen Körpers erscheinen zusätzliche Optionen: Dichte, initiale Geschwindigkeit, initiale Winkelgeschwindigkeit und die Option zum Abschalten der Gravitation. Zusätzlich verschwindet die Option zur Auswahl der Fläche als Kollisionskörper.

33 7.2. PLUG-INS 25 Der Kollisionskörper Mesh verwendet für statische/kinematische Körper ein Dreiecksnetz und für dynamische Körper wird die Geometrie in konvexe Hüllen zerlegt. Da die Zerlegung eine gewisse Zeit in Anspruch nimmt und die Benutzeroberfläche dadurch nicht ansprechbar wäre, erfolgt dieser Vorgang im Hintergrund Kinematic Platform Plug-in Dieses Plug-in soll die Funktionalität der kinematischen Körper demonstrieren. Das Plug-in erzeugt einen kinematischen Körper und verwendet als Kollisionsgeometrie eine konvexe Hülle. Dieser Körper wird dann eine gewisse Zeit in eine vorgegebene Richtung und wieder zurück bewegt, ähnlich wie bei einem Aufzug. Dabei sind Richtung, Geschwindigkeit und Länge frei wählbar Canon Plug-in Das dritte und zurzeit letzte Plug-in ist das Canon Plug-in. Es soll die Visualisierung mittels PhysicWrapper demonstrieren. Dabei wird in einem vorgegebenen Zeitintervall ein dynamischer Körper mit einer Kugel als Kollisionsgeometrie erzeugt. Dieser Körper erhält zusätzlich eine initiale Geschwindigkeit. Nach einer gewissen Zeit wird der Körper dann aus der Szene genommen. Im Benutzerinterface kann Intervall, Lebenszeit, Geschwindigkeit sowie der Radius frei gewählt werden. Abbildung 7.4: Canon Plug-in Demo

34 26 KAPITEL 7. RESULTATE

35 Kapitel 8 Schlussfolgerung 8.1 Zusammenfassung Die Evaluation zeigte, dass die einzelnen Physik-Engines bei der Simulation von starren Körpern in Puncto Funktionalität und Qualität nahezu ident sind. Wird nur diese Simulationsart benötigt, so bietet sich die Newton Dynamics Engine an. Benötigt man jedoch mehr Funktionalität so steht die Bullet und PhysX zur Auswahl. Für diese Bachelorarbeit stellte sich heraus, dass sich die PhysX Engine am besten eignet. Der Grund dafür ist, dass der Viz-Artist für die Grafikkarten von Nvidia ausgelegt ist. Deshalb ist die Hardwarebeschleunigung mittels CUDA vom Vorteil. Wäre dies nicht der Fall, so würde die Wahl auf Bullet fallen: Die Berechnungen werden mit OpenCL durchgeführt und dadurch können auch andere Grafikkarten genutzt werden. Mit dem neuen objektorientierten Plug-in System erleichtert sich die Plug-in Entwicklung um einiges. Beispielsweise wurden die Plug-ins Kinematic Platform sowie Conon in nur wenigen Stunden erstellt. 8.2 Aussicht Bewegungsunschärfe Auch die sogenannte Bewegungsunschärfe wäre eine mögliche Erweiterung. Dabei werden schnelle Objekte unscharf dargestellt. In der Abb.8.1 wird dieser Effekt graphisch dargestellt. (a) Ohne Bewegungsunschärfe (b) Mit Bewegungsunschärfe Abbildung 8.1: Bewegungsunschärfe [6] Erweiterungen Dieses Projekt befasste sich nur mit der Physik von starren Körpern. Gelenke und Motoren wurden noch nicht implementiert. Die Erweiterung auf Partikelsysteme wäre ebenfalls interessant. Damit ließen sich Effekte wie Rauch, Feuer und sogar Flüssigkeiten erzeugen. Für die 27

36 28 KAPITEL 8. SCHLUSSFOLGERUNG Berechnung der Partikel kann in PhysX die GPU verwendet werden. Mit der sogenannten Graphics Interoperability von CUDA kann die Partikel-Struktur nach der Berechnung direkt für die Visualisierung hergenommen werden Geometrieumwandlung auf der GPU Die Umwandlung der komplexen Geometrien findet zurzeit nur auf der CPU statt. Würde man die Berechnung auf die GPU verlagern, so ließe sich die Umwandlungszeit drastisch verkürzen. Für V-HACD gibt es bereits eine Implementierung in OpenCL. Dabei wurde bereits eine Beschleunigung von 30-50% gemessen.

37 Literaturverzeichnis [1] Adrian Boeing and Thomas Bräunl. Evaluation of real-time physics simulation systems. In Proceedings of the 5th International Conference on Computer Graphics and Interactive Techniques in Australia and Southeast Asia, GRAPHITE 07, pages , New York, NY, USA, ACM. [2] Bullet Aufgerufen am Juni 18, [3] Havok Aufgerufen am Juni 18, [4] Khaled Mamou. Mesh-decimation Aufgerufen am Juni 18, [5] Khaled Mamou. Volumetric-hierarchical approximate convex decomposition. github.com/kmammou/v-hacd, Aufgerufen am Juni 18, [6] Bewegungsunschärfe. shaderendering/cameraitem.html, Aufgerufen am Juni 18, [7] Newton Aufgerufen am Juni 18, [8] Open dynamics engine Aufgerufen am Juni 18, [9] Physics abstraction layer Aufgerufen am Juni 18, [10] Physics engine evaluation lab Aufgerufen am Juni 18, [11] Physx Aufgerufen am Juni 18, [12] Simple physics engine Aufgerufen am Juni 18, [13] Tokamak physics engine Aufgerufen am Juni 18, [14] True axis Aufgerufen am Juni 18, [15] Viz-artist Aufgerufen am Juni 18, [16] Vizrt Aufgerufen am Juni 18,

38 30 LITERATURVERZEICHNIS

39 Abbildungsverzeichnis 4.1 Plug-in Use-Cases Plug-in System Komponenten Prototyp für die Benutzeroberfläche Konvexe Zerlegung [5] Umwanldungsprozess für komplexe Geometrien Plug-in Datenlayout Umwandlung von komplexen Objekten Benutzeroberfläche Demo Canon Plug-in Demo Bewegungsunschärfe [6]

40 32 ABBILDUNGSVERZEICHNIS

41 Tabellenverzeichnis 3.1 Anforderungen an die Physik Engine Evaluation: Allgemeines Evaluation: Simulationsarten Evaluation: Kollisionsgeometrien Evaluation: Gelenke und Motoren Evaluation: Hardwarebeschleunigung

PhysX Evaluation. Softwarepraktikum Computergraphik. Daniel Brock, Robert Kreuzer, Simon Kufner. 5. Juli 2010

PhysX Evaluation. Softwarepraktikum Computergraphik. Daniel Brock, Robert Kreuzer, Simon Kufner. 5. Juli 2010 PhysX Evaluation Softwarepraktikum Computergraphik Daniel Brock, Robert Kreuzer, Simon Kufner 5. Juli 2010 Daniel Brock, Robert Kreuzer, Simon Kufner () PhysX Evaluation 5. Juli 2010 1 / 17 1 Aufgabenstellung

Mehr

Game Engine Architecture and Development. Effekte (Sound, Partikel, Physik)

Game Engine Architecture and Development. Effekte (Sound, Partikel, Physik) Game Engine Architecture and Development Effekte (Sound, Partikel, Physik) Wer hat schon was? Sound s Soundsysteme Einfach zu benutzen Leveldesigner müssen sehr einfach Sounds hinzufügen können (Gamplay

Mehr

Rheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit

Rheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit Rheinisch-Westfälische Technische Hochschule Aachen Seminararbeit Analyse von General Purpose Computation on Graphics Processing Units Bibliotheken in Bezug auf GPU-Hersteller. Gregori Kerber Matrikelnummer

Mehr

Beleg: API für Plugin und Treiberbasierte Softwareentwicklung

Beleg: API für Plugin und Treiberbasierte Softwareentwicklung Fakultät Informatik Institut für Software- und Multimediatechnik, Professur Computergraphik Beleg: API für Plugin und Treiberbasierte Dresden, 23. Mai 2007 Übersicht Grundlagen zum Plugin-Konzept Dynamische

Mehr

Kollisionserkennung

Kollisionserkennung 1 Kollisionserkennung von Jens Schedel, Christoph Forman und Philipp Baumgärtel 2 1. Einleitung Wozu wird Kollisionserkennung benötigt? 3 - für Computergraphik 4 - für Simulationen 5 - für Wegeplanung

Mehr

Kollisionserkennung Kapitel 12 Collision and Rigid Body Dynamics aus Jason Gregory: Game Engine Architecture. (Seite )

Kollisionserkennung Kapitel 12 Collision and Rigid Body Dynamics aus Jason Gregory: Game Engine Architecture. (Seite ) Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil 2): Simulation und 3D-Programmierung Sommersemester 2013 Dozent: Prof. Dr. Manfred Thaller Kollisionserkennung

Mehr

Im Original veränderbare Word-Dateien

Im Original veränderbare Word-Dateien 3D-Animation Als 3D-Animation bezeichnet man die Animation von dreidimensionalen Objekten. Diese können wie echte Objekte gedreht und bewegt werden. Die 3D-Animationen erinnern an die sogenannten Puppentrickfilme.

Mehr

Abschlussvortrag Diplomarbeit Point-Based Animation

Abschlussvortrag Diplomarbeit Point-Based Animation Abschlussvortrag Diplomarbeit Goethe-Universität Frankfurt Übersicht 1 Motivation 2 Grundlagen 3 State of the Art 4 Eigene Verfahren 5 Ausblick 6 Quellen 2/ 27 Motivation Objekte sollen sich physikalisch

Mehr

Crashkurs C++ - Teil 1

Crashkurs C++ - Teil 1 Crashkurs C++ - Teil 1 Intro Speicherverwaltung Variablen, Pointer, Referenzen Felder statische & dynamische Allozierung Birgit Möller & Denis Williams AG Bioinformatik & Mustererkennung Institut für Informatik

Mehr

Parallele Algorithmen in der Bildverarbeitung

Parallele Algorithmen in der Bildverarbeitung Seminar über Algorithmen - SoSe 2009 Parallele Algorithmen in der Bildverarbeitung von Christopher Keiner 1 Allgemeines 1.1 Einleitung Parallele Algorithmen gewinnen immer stärker an Bedeutung. Es existieren

Mehr

Die untere Abbildung zeigt eine Szene aus einer 3D-Computeranimation.

Die untere Abbildung zeigt eine Szene aus einer 3D-Computeranimation. 3D-Animation Als 3D-Animation bezeichnet man die Animation von dreidimensionalen Objekten. Diese können wie echte Objekte gedreht und bewegt werden. Die 3D-Animationen erinnern an die sogenannten Puppentrickfilme.

Mehr

- dynamisches Laden -

- dynamisches Laden - - - Fachbereich Technik Department Elektrotechnik und Informatik 21. Juni 2012 1/23 2/23 s dynamisch Code kann von mehreren Programmen genutzt werden => kleinere Programme einzelne Teile eines Programms

Mehr

1 EINLEITUNG PROJEKTABLAUF Allgemeine Zielsetzung Projektstruktur und Zeitplan ANFORDERUNGSANALYSE...

1 EINLEITUNG PROJEKTABLAUF Allgemeine Zielsetzung Projektstruktur und Zeitplan ANFORDERUNGSANALYSE... Inhaltsverzeichnis Inhaltsverzeichnis 1 EINLEITUNG... 1 2 PROJEKTABLAUF... 4 2.1 Allgemeine Zielsetzung... 4 2.2 Projektstruktur und Zeitplan... 4 3 ANFORDERUNGSANALYSE... 8 3.1 Der Prototyp des Anlagenmodells...

Mehr

CUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg

CUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg CUDA Seminar Multi-Core Architectures and Programming 1 Übersicht Einleitung Architektur Programmierung 2 Einleitung Computations on GPU 2003 Probleme Hohe Kenntnisse der Grafikprogrammierung nötig Unterschiedliche

Mehr

LabVIEW. 1.Einleitung

LabVIEW. 1.Einleitung LabVIEW Visuelle Programmierung vorgestellt am Beispiel der Programmierumgebung LabVIEW Referat: gehalten am 12.11.2001 Von: Roman Ulm und Günter Helbing 1. Einleitung 2. Sprachelemente von LabVIEW 3.

Mehr

Medienproduktion Sommersemester Dipl.-Inform. Alexander Schulze Prof. Dr. Ing. Klaus Rebensburg

Medienproduktion Sommersemester Dipl.-Inform. Alexander Schulze Prof. Dr. Ing. Klaus Rebensburg Medienproduktion Sommersemester 2010 Dipl.-Inform. Alexander Schulze Prof. Dr. Ing. Klaus Rebensburg Ablauf Heute Fortsetzung Programmierung mit Flash objektorientierte Programmierung - Dokumentklassen

Mehr

Physik und Praxis. Selling Physics. Gestern. Heute

Physik und Praxis. Selling Physics. Gestern. Heute Selling Physics Die Physik und Praxis Physikalische Simulationen werden heute kommerziell eingesetzt Als Beispiel dient die Havok-Engine für Computerspiele -Engine Gestern Heute 1 Aber... Schlussfolgerung

Mehr

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

Reporting Lösungen für APEX wähle Deine Waffen weise Reporting Lösungen für APEX wähle Deine Waffen weise Dietmar Aust Opal-Consulting Köln Schlüsselworte: Oracle APEX, Reporting, JasperReports, PL/PDF, BI Publisher, OPAL:XP, Doxxy, Oracle Rest Data Services

Mehr

Duplizieren von Report-Vorlagen für die Erstellung umfangreicher Reports (ab ArtemiS SUITE 7.2)

Duplizieren von Report-Vorlagen für die Erstellung umfangreicher Reports (ab ArtemiS SUITE 7.2) 02/16 für die Erstellung umfangreicher Reports (ab ArtemiS SUITE 7.2) In der ArtemiS SUITE steht eine sehr flexible Report-Funktion zur Verfügung, die Ihnen die übersichtliche Darstellung Ihrer Analyse-Ergebnisse

Mehr

Pflichtenheft Inhaltsverzeichnis. 1 Zielbestimmung Musskriterien Wunschkriterien Abgrenzungskriterien...

Pflichtenheft Inhaltsverzeichnis. 1 Zielbestimmung Musskriterien Wunschkriterien Abgrenzungskriterien... Pflichtenheft 17.05.2010 Inhaltsverzeichnis 1 Zielbestimmung 2 1.1 Musskriterien.................................. 2 1.2 Wunschkriterien................................ 3 1.3 Abgrenzungskriterien..............................

Mehr

Gliederung. Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo

Gliederung. Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo Gliederung Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo Was ist CUDA? Nvidia CUDA ist eine von NvidiaGPGPU-Technologie, die es Programmierern erlaubt, Programmteile

Mehr

Partikelsysteme. Lehrstuhl Computergrafik und Visualisierung Fakultät Informatik TU Dresden. Proseminar Computergrafik.

Partikelsysteme. Lehrstuhl Computergrafik und Visualisierung Fakultät Informatik TU Dresden. Proseminar Computergrafik. 58 Partikelsysteme Lehrstuhl Computergrafik und Visualisierung Fakultät Informatik TU Dresden Proseminar Computergrafik Robert Stelzmann Gliederung 1. Einleitung und Motivation 2. Begriffsklärung 3. Einfache

Mehr

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife 303 Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife durchgeführt wird. 304 305 for-schleifen sind in Aktivitätsdiagrammen

Mehr

MARKERLESS AUGMENTED REALITY. Henrik Brauer

MARKERLESS AUGMENTED REALITY. Henrik Brauer MARKERLESS AUGMENTED REALITY Henrik Brauer Inhalt Was ist Augmented Reality Meine Motivation Grundlagen Positionsbestimmung mit Marker Positionsbestimmung ohne Marker Idee Risiken INHALT Augmented Reality

Mehr

Carlos Santos. Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften. Universität Hamburg

Carlos Santos. Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften. Universität Hamburg Universität Hamburg Proseminar: Werkzeuge für das wissenschaftliche Schreiben Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Überblick Einführung - Geschichte Einstellungen

Mehr

Grundlagen der OO- Programmierung in C#

Grundlagen der OO- Programmierung in C# Grundlagen der OO- Programmierung in C# Technische Grundlagen 1 Dr. Beatrice Amrhein Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung 2 Visual Studio 3

Mehr

Freispeicherverwaltung

Freispeicherverwaltung Freispeicherverwaltung Allgemeine Techniken und Anwendung unter Linux Martin Wahl, 17.11.03 Freispeicherverwaltung 1 Überblick Allgemeines Suchstrategien Verwaltungsstrategien externer / interner Verschnitt

Mehr

Inhaltsverzeichnis 1 Einleitung 1 2 Elastische Mehrkörpersysteme Modellierung Kinematik elastischer Mehrkör

Inhaltsverzeichnis 1 Einleitung 1 2 Elastische Mehrkörpersysteme Modellierung Kinematik elastischer Mehrkör Studienarbeit STUD 185 Transiente Spannungssimulationen mit modalen Spannungsmatrizen von Michael Peić Betreuer: Prof. Dr. Ing. W. Schiehlen Dipl. Ing. H. Claus Universität Stuttgart Institut B für Mechanik

Mehr

OOP. Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten.

OOP. Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten. Polymorphismus OOP Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten. Vererbung: Erlaubt Code zwischen verwandten Typen wiederverwendet sein.

Mehr

Freispeicherverwaltung Martin Wahl,

Freispeicherverwaltung Martin Wahl, Freispeicherverwaltung Martin Wahl, 17.11.03 Allgemeines zur Speicherverwaltung Der physikalische Speicher wird in zwei Teile unterteilt: -Teil für den Kernel -Dynamischer Speicher Die Verwaltung des dynamischen

Mehr

Große Simulink-Modelle mit Bus Objects effizienter gestalten

Große Simulink-Modelle mit Bus Objects effizienter gestalten Große Simulink-Modelle mit Bus Objects effizienter gestalten Sebastian Bewersdorff Product Manager, TESIS DYNAware GmbH, München Matlab Expo 2015, 12.05.2015 TESIS DYNAware GmbH, www.tesis-dynaware.com

Mehr

Wertebereich und Genauigkeit der Zahlendarstellung

Wertebereich und Genauigkeit der Zahlendarstellung Wertebereich und Genauigkeit der Zahlendarstellung Sowohl F als auch C kennen bei ganzen und Floating Point-Zahlen Datentypen verschiedener Genauigkeit. Bei ganzen Zahlen, die stets exakt dargestellt werden

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

Technische Richtlinie XML-Datenaustauschformat für hoheitliche Dokumente (TR XhD) 1 Rahmenwerk

Technische Richtlinie XML-Datenaustauschformat für hoheitliche Dokumente (TR XhD) 1 Rahmenwerk Technische Richtlinie XML-Datenaustauschformat für hoheitliche Dokumente (TR XhD) 1 Rahmenwerk Version 1.4 18.11.2013 BSI TR-03123-1 Bundesamt für Sicherheit in der Informationstechnik Postfach 20 03 63

Mehr

Einführung in C# Teil 1. Matthias Nübling

Einführung in C# Teil 1. Matthias Nübling Einführung in C# Teil 1 Matthias Nübling Vorausgesetzte Grundkenntnisse Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,

Mehr

Geometrische Modellierung mittels Oktalbäumen und Visualisierung von Simulationsdaten aus der Strömungsmechanik. Klaus Daubner

Geometrische Modellierung mittels Oktalbäumen und Visualisierung von Simulationsdaten aus der Strömungsmechanik. Klaus Daubner Geometrische Modellierung mittels Oktalbäumen und Visualisierung von Simulationsdaten aus der Strömungsmechanik Klaus Daubner 1 / 22 Übersicht Motivation Geometriemodelle Oberflächenmodelle Volumenmodelle

Mehr

Constraint-basierte Planung und Optimierung von Prüfungsterminen mithilfe einer graphischen Benutzeroberfläche

Constraint-basierte Planung und Optimierung von Prüfungsterminen mithilfe einer graphischen Benutzeroberfläche Douglas Cunningham,Petra Hofstedt, Klaus Meer, IngoSchmitt (Hrsg.): INFORMATIK 2015 LectureNotes in Informatics (LNI), Gesellschaft für Informatik, Bonn 2015 Constraint-basierte Planung und Optimierung

Mehr

5 Mapping-Techniken. 5.1 Motivation

5 Mapping-Techniken. 5.1 Motivation 5.1 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte Freiformflächen) glatt im Gegensatz zu wirklich existierenden natürlichen Oberflächen. Die explizite Wiedergabe

Mehr

Integration des Graphischen Editors CISGraph für Lokale Grammatiken in die Suchmaschine WiTTFind

Integration des Graphischen Editors CISGraph für Lokale Grammatiken in die Suchmaschine WiTTFind Integration des Graphischen Editors CISGraph für Lokale Grammatiken in die Suchmaschine WiTTFind Centrum für Informations- und Sprachverarbeitung LMU München Yuliya Kalasouskaya Betreuer: Dr. Maximilian

Mehr

Echtzeitfähige hige Verfahren in der Computergrafik. Lehrstuhl für f r Informatik Computer Grafik und Visualisierung TUM

Echtzeitfähige hige Verfahren in der Computergrafik. Lehrstuhl für f r Informatik Computer Grafik und Visualisierung TUM Echtzeitfähige hige Verfahren in der Computergrafik Prof. Dr. Rüdiger R Westermann Lehrstuhl für f r Informatik Computer Grafik und Visualisierung TUM Lehr- und Forschungsinhalte Visualisierung Darstellung

Mehr

Seminar: Grafikprogrammierung

Seminar: Grafikprogrammierung Game Developer Converence 08 Seminar: Grafikprogrammierung Alexander Weggerle 17.04.08 Seite 2 Einführung Themenüberblick Organisatorisches Seminarablauf liches Seite 3 Einführung Seminar Motivation Vorbereitung

Mehr

Bewegungssimulation mit CATIA V5

Bewegungssimulation mit CATIA V5 Bewegungssimulation mit CATIA V5 Grundlagen und praktische Anwendung der kinematischen Simulation von Jan Meeth, Michael Schuth 1. Auflage Bewegungssimulation mit CATIA V5 Meeth / Schuth schnell und portofrei

Mehr

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2 HSR Rapperswil 2001 Markus Rigling Programmieren: Vererbung 1 Variante 2 Inhaltsverzeichnis: 1. Was ist Vererbung...3 2. Anwendung...3 3. Realisierung...3 4. Vorgehensweise zur Erstellung einer Kind-Klasse...3

Mehr

Electronic Design Automation (EDA) Technology Mapping

Electronic Design Automation (EDA) Technology Mapping Electronic Design Automation (EDA) Technology Mapping Überblick digitale Synthese Technology Mapping Abbildung durch die Abdeckung eines Baumes Partitionierung des DAG Dekomposition und Abdeckung Beispiel

Mehr

Einführung in die Systemprogrammierung

Einführung in die Systemprogrammierung Einführung in die Systemprogrammierung Dynamische Programmbibliotheken Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 28. Mai 2015 Dynamische Programmbibliotheken Idee: Programm

Mehr

Szenengraphen. Codruţa Cosma. Universität Ulm Sommersemester 2005

Szenengraphen. Codruţa Cosma. Universität Ulm Sommersemester 2005 Szenengraphen Codruţa Cosma Universität Ulm Sommersemester 2005 Übersicht Einführung VRML OpenSceneGraph Java3D vs. VRML OpenGL vs. Java3D und VRML Zusammenfassung 2/26 Was sind Szenengraphen? Datenstruktur

Mehr

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck RST-Labor WS06/07 GPGPU General Purpose Computation On Graphics Processing Units (Grafikkarten-Programmierung) Von: Marc Blunck Ablauf Einführung GPGPU Die GPU GPU Architektur Die Programmierung Programme

Mehr

Master-Arbeit. Titel der Arbeit. Betreuer: Matthias Splieth, M.Sc. Themensteller: Prof. Dr. Klaus Turowski

Master-Arbeit. Titel der Arbeit. Betreuer: Matthias Splieth, M.Sc. Themensteller: Prof. Dr. Klaus Turowski Master-Arbeit Titel der Arbeit Max Mustermann Magdeburg, 5. November 2012 Betreuer: Matthias Splieth, M.Sc. Themensteller: Prof. Dr. Klaus Turowski Otto-von-Guericke-Universität Magdeburg Magdeburg Research

Mehr

Algorithmische Geometrie: Einstimmung

Algorithmische Geometrie: Einstimmung Algorithmische Geometrie: Einstimmung Nico Düvelmeyer WS 2009/2010, 20.10.2009 Überblick 1 Organisatorisches 2 Fachgebiet Typische Untersuchungsgegenstände Typische Anwendungsgebiete 3 Inhalte der Vorlesung

Mehr

«Titel der Arbeit» SEMINARARBEIT. an der. Universität Regensburg. Eingereicht bei der Honorarprofessur für Wirtschaftsinformatik,

«Titel der Arbeit» SEMINARARBEIT. an der. Universität Regensburg. Eingereicht bei der Honorarprofessur für Wirtschaftsinformatik, «Titel der Arbeit» SEMINARARBEIT an der Universität Regensburg Eingereicht bei der Honorarprofessur für Wirtschaftsinformatik, -Prof. Dr. Hans-Gert Penzel- von: Name, Vorname Matrikel-Nr.: 123 456 Adresse:

Mehr

Modellierung. Oliver Hartmann

Modellierung. Oliver Hartmann Modellierung Oliver Hartmann oliver.hartmann@uni-ulm.de Inhalt Boolesche Operationen Splines B-Splines Bezier-Kurven NURBS Anwendung Sculpting Volumengrafik Marching Cubes Ray Casting Texture Mapping Boolesche

Mehr

Criteria API: Komplexe SQL Queries mit Eclipslink bauen

Criteria API: Komplexe SQL Queries mit Eclipslink bauen Schlüsselworte Criteria API: Komplexe SQL Queries mit Eclipslink bauen Thomas Haskes Triestram & Partner GmbH Bochum rapid.java, EclipseLink, Oracle, Criteria API, JPA, Datenbank, SQL Einleitung In der

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Objektorientierung in C++ (3) Aspekte der Vererbung (1) Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 546 Zuweisung bei Vererbung Dr. Frank Seifert Vorlesung

Mehr

Konzepte von Betriebssystem-Komponenten. Programmstart & dynamische Bibliotheken SS 05. Wladislaw Eckhardt.

Konzepte von Betriebssystem-Komponenten. Programmstart & dynamische Bibliotheken SS 05. Wladislaw Eckhardt. Proseminar KVBK Programmstart dynamische Bibliotheken Konzepte von Betriebssystem-Komponenten Programmstart & dynamische Bibliotheken SS 05 Wladislaw Eckhardt Wladi23@gmx.net 1 1 Einleitung 1.1 Problematik

Mehr

Skriptum Bauinformatik SS 2013 (Vorlesung IV)

Skriptum Bauinformatik SS 2013 (Vorlesung IV) Skriptum Bauinformatik SS 2013 (Vorlesung IV) Stand: 23.04.2013 Dr. Johannes Lange 2 Inhalt Objektorientierte Programmierung Großes Beispiel... 2 Klasse erstellen... 2 Erzeugen eines Objekts der Klasse...

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Java: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder

Java: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder Java: Kapitel 1 Überblick Programmentwicklung WS 2008/2009 Holger Röder holger.roeder@informatik.uni-stuttgart.de Was ist Java? Die Java-Technologie umfasst die Programmiersprache Java sowie die Java-Plattform

Mehr

Ghostscript Installation unter Windows 8 und Windows 2012

Ghostscript Installation unter Windows 8 und Windows 2012 Ghostscript Installation unter Windows 8 und Windows 2012 Inhalt Wozu benötigt man den Ghostscript Drucker in Sign Live! CC?... 1 Voraussetzung... 1 Hinweis... 1 Installation Ghostscript... 2 Schritt 1:

Mehr

Verteidigung der Diplomarbeit 3D-Netzwerk-Visualisierung

Verteidigung der Diplomarbeit 3D-Netzwerk-Visualisierung 1 Verteidigung der Diplomarbeit 3D-Netzwerk-Visualisierung Stefan Ziegler 11. März 2005 INHALTSVERZEICHNIS 2 Inhaltsverzeichnis 1 Aufgabe 3 2 Umsetzung 4 3 Struktur 5 4 Paketverarbeitung 8 5 Grafische

Mehr

Uni-IT Projekte aus den Bereichen Mensch-Maschine-Systeme, Augmented Reality und Simulation

Uni-IT Projekte aus den Bereichen Mensch-Maschine-Systeme, Augmented Reality und Simulation Uni-IT Projekte aus den Bereichen Mensch-Maschine-Systeme, Augmented Reality und Simulation Thomas D. Lepich Lepich@Uni-Wuppertal.de 1 Überblick Arbeitsgruppe GDS am LFA Projekte Reactor Viewer & Reactor

Mehr

Informatische Modellbildung

Informatische Modellbildung Informatische Modellbildung Informatik als Wissenschaft von der Herstellung ausführbarer Modelle bzw. der Simulation künstlicher Welten hier: formale Methoden zur Präzisierung des Modellbegriffs Begriffsdefinition

Mehr

Ein Secondo-basierter Routenplaner mit Berücksichtigung von Steigungen

Ein Secondo-basierter Routenplaner mit Berücksichtigung von Steigungen Ein Secondo-basierter Routenplaner mit Berücksichtigung von Steigungen Holger Hennings, Fabio Valdés Fachpraktikum Erweiterbare Datenbanksysteme (WS 2017/18) Lehrgebiet Datenbanksysteme für neue Anwendungen

Mehr

> Implementierung paralleler Programmiermuster auf

> Implementierung paralleler Programmiermuster auf > Implementierung paralleler Programmiermuster auf modernen many-core Systemen in OpenCL Projektseminar im WiSe 2014 / 2015 Prof. Sergei Gorlatch, Ari Rasch, Michael Haidl AG Parallele und Verteilte Systeme,

Mehr

Didaktische Stulle: Immersive Lehre

Didaktische Stulle: Immersive Lehre Didaktische Stulle: e Lehre G. Göbel 28.06.2017 1. Chart 1 e Hochschule Themen 1. Wozu VR (in der Lehre)? 2. Was kann VR aktuell? 3. Was passiert in der HTW? 4. Was brauche ich dafür? 1. Chart 2 Wozu VR?

Mehr

IBM Software Demos Rational Systems Developer Introduction

IBM Software Demos Rational Systems Developer Introduction Heute sehen wir uns den IBM Rational Systems Developer näher an, der Teil der IBM Rational Software Delivery Platform ist. IBM Rational Systems Developer richtet

Mehr

Ein Design Tool für objektorientierte portable Programmierschnittstellen

Ein Design Tool für objektorientierte portable Programmierschnittstellen Diplomarbeit Ein Design Tool für objektorientierte portable Programmierschnittstellen Vortragender: Elias Volanakis Inhalt 1. Entwurfsmuster 2. Wrapper Facade (WF) Aufgaben & Struktur Implementierung Nutzen

Mehr

Darstellungsarten für 3D-Körper. Boundary Representation (BRep):

Darstellungsarten für 3D-Körper. Boundary Representation (BRep): Darstellungsarten für 3D-Körper Boundary Representation (BRep): Darstellung eines (verallgemeinerten) Polyeders durch das System seiner Ecken, Kanten und Facetten Abspeichern durch (Teilgraphen des) vef-graphen

Mehr

Objektorientierte Programmierung (OOP)

Objektorientierte Programmierung (OOP) orientierte Programmierung (OOP) 1. Motivation Die objektorientierte Sichtweise der Welt Als Motivation für die OOP sieht man sich am besten die reale Welt an: Die reale Welt besteht aus "en", z. B.: Gegenstände,

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen

Mehr

Programmierung und Angewandte Mathematik

Programmierung und Angewandte Mathematik Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ziele Sie verstehen wie Polymorphismus

Mehr

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

Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit Direct 3D-Output für ein Rendering Framework von Benjamin Betting unter der Betreuung von Daniel Schiffner 1 Gliederung Kapitel I und II: Motivation,Einführung,Grundlagen

Mehr

Performance Verbesserung BIRT-BERICHTE

Performance Verbesserung BIRT-BERICHTE ClassiX Software GmbH Performance Verbesserung der BIRT-BERICHTE Tipps zur Performance Verbesserung der Berichte unabhängig von der Engine Jana Fischereit 21.01.2013 1 Inhalt 2 Allgemeine Aussagen... 2

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

DAP2-Programmierpraktikum Einführung in C++ (Teil 2) DAP2-Programmierpraktikum Einführung in C++ (Teil 2) Carsten Gutwenger 18. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Dynamischer Speicher Klassen und

Mehr

Automatische Verteilung in Pangaea. André Spiegel Freie Universität Berlin

Automatische Verteilung in Pangaea. André Spiegel Freie Universität Berlin Automatische Verteilung in Pangaea André Spiegel Freie Universität Berlin Einführung Pangaea ist ein System, das zentralisierte Java-Programme automatisch verteilen kann basierend auf statischer Quelltextanalyse

Mehr

Einleitung 19. Teil I Einführung in die Technische Mechanik 23. Kapitel 1 Einführung 25

Einleitung 19. Teil I Einführung in die Technische Mechanik 23. Kapitel 1 Einführung 25 Inhaltsverzeichnis Einleitung 19 Über dieses Buch 19 Vereinbarungen in diesem Buch 19 Was Sie nicht lesen müssen 19 Törichte Annahmen über den Leser 19 Wie dieses Buch aufgebaut ist 20 Teil II: Statik

Mehr

Modellierung und Simulation optischer Strahlführungen. Diplomarbeit Timon Bätz

Modellierung und Simulation optischer Strahlführungen. Diplomarbeit Timon Bätz Modellierung und Simulation optischer Strahlführungen Diplomarbeit Timon Bätz Übersicht Ziele Physikalische Hintergründe Architektur und Implementierung Ergebnisse Ausblick Demo 2 Ziele Entwicklung eines

Mehr

Spaichinger Entwicklungsumgebung 1.1 Zur C-Programmierung und Simulation von ct-bots (Fahrrobotern)

Spaichinger Entwicklungsumgebung 1.1 Zur C-Programmierung und Simulation von ct-bots (Fahrrobotern) Bedienungsanleitung Spaichinger Entwicklungsumgebung 1.1 Zur C-Programmierung und Simulation von ct-bots (Fahrrobotern) Freeware für Microsoft Windows Dr. Markus Ziegler www.spaichinger-schallpegelmesser.de

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.

Mehr

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein Überblick Konzepte der Objektorientierten Programmierung Klassen und Objekte o Implementierung von Klassen o Verwendung von Objekten 2 Konzepte

Mehr

Echtzeit-Multitasking

Echtzeit-Multitasking Technische Informatik Klaus-Dieter Thies Echtzeit-Multitasking Memory Management und System Design im Protected Mode der x86/pentium-architektur. Shaker Verlag Aachen 2002 Die Deutsche Bibliothek - CIP-Einheitsaufnahme

Mehr

Wie teuer ist dynamischer Polymorphismus? 194

Wie teuer ist dynamischer Polymorphismus? 194 Wie teuer ist dynamischer Polymorphismus? 194 Function f vtable data RTTI ~Function get_name type name type info "Sinus\0" execute Nicht-polymorphe Methoden und reguläre Funktionen können in C++ direkt

Mehr

Verhaltensmuster. Entwurfsmuster - Design Patterns. HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik

Verhaltensmuster. Entwurfsmuster - Design Patterns. HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik Entwurfsmuster - Design Patterns HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik 27. November 2009 Gliederung 1 Einführung 2 Strategie-Muster 3 Beobachter-Muster

Mehr

Beeinflussung der Tageszeiten in der Landschaftsbildbewertung

Beeinflussung der Tageszeiten in der Landschaftsbildbewertung Beeinflussung der Tageszeiten in der Landschaftsbildbewertung Verfasser: Joe Theis Leitung: Prof. Dr. Adrienne Grêt-Regamey Betreuung: Bachelorarbeit, Juni 2012 Dr. Ulrike Wissen Hayek Institut für Raum-

Mehr

Was ist ein Profiler?

Was ist ein Profiler? Profiling Was ist ein Profiler? (Theorie) Invasives Profiling Nichtinvasives Profiling Profiling in der Praxis gprof, gcov OProfile valgrind/callgrind Intel VTune Was ist ein Profiler? Analyse des Laufzeitverhaltens

Mehr

Objektorientierte Modellierung (1)

Objektorientierte Modellierung (1) Objektorientierte Modellierung (1) Die objektorientierte Modellierung verwendet: Klassen und deren Objekte Beziehungen zwischen Objekten bzw. Klassen Klassen und Objekte Definition Klasse Eine Klasse ist

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

Mehr

Echtzeit-Multitasking

Echtzeit-Multitasking Technische Informatik Klaus-Dieter Thies Echtzeit-Multitasking Memory Management und System Design im Protected Mode der x86/pentium-architektur. Shaker Verlag Aachen 2002 Die Deutsche Bibliothek - CIP-Einheitsaufnahme

Mehr

10 Inhaltsverzeichnis

10 Inhaltsverzeichnis Georg Stark Robotik mit MATLAB Mit 101 Bildern, 33 Tabellen, 40 Beispielen, 55 Aufgaben und 37 Listings Fachbuchverlag Leipzig im Carl Hanser Verlag Inhaltsverzeichnis 1 Einführung in die Robotik 13 1.1

Mehr

C++ OpenCppCoverage. Detlef Wilkening

C++ OpenCppCoverage. Detlef Wilkening http://www.wilkening-online.de Seite 1 / 52 C++ OpenCppCoverage Detlef Wilkening 10.11.2016 http://www.wilkening-online.de Seite 2 / 52 Warum überhaupt dieser Vortrag? Wir waren mal wieder in einer Gruppe

Mehr

OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer

OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer OpenCL Programmiersprachen im Multicore-Zeitalter Tim Wiersdörfer Inhaltsverzeichnis 1. Was ist OpenCL 2. Entwicklung von OpenCL 3. OpenCL Modelle 1. Plattform-Modell 2. Ausführungs-Modell 3. Speicher-Modell

Mehr

Maschinencode Dateiformat und Stackframes

Maschinencode Dateiformat und Stackframes Maschinencode Dateiformat und Stackframes Proseminar C-Programmierung - Grundlagen und Konzepte Julian M. Kunkel julian.martin.kunkel@informatik.uni-hamburg.de Wissenschaftliches Rechnen Fachbereich Informatik

Mehr

Diplomarbeit LEGO Mindstorms Simulator - JORGE Installationshandbuch.

Diplomarbeit LEGO Mindstorms Simulator - JORGE Installationshandbuch. Diplomarbeit LEGO Mindstorms Simulator - JORGE Installationshandbuch christof.seiler@datacomm.ch nik@netstyle.ch stefan.feissli@hispeed.ch 16. Dezember 2005 Seite 2 Inhaltsverzeichnis 1 Einfache Installation

Mehr

Direct3D. (Scherfgen S )

Direct3D. (Scherfgen S ) Direct3D (Scherfgen S. 98-131) Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung WS 14/15 AM3 Hauptseminar Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

Nutzerhinweis Verwendung nutzerdefinierter Modellelemente ExternalTypes in SimulationX 3.7

Nutzerhinweis Verwendung nutzerdefinierter Modellelemente ExternalTypes in SimulationX 3.7 Nutzerhinweis Verwendung nutzerdefinierter Modellelemente ExternalTypes in SimulationX 3.7 Wann sind folgende Informationen zu beachten? Wurden in SimulationX 3.5 oder früheren Versionen nutzerdefinierte

Mehr

View-Dependent Simplification. Computer Graphics

View-Dependent Simplification. Computer Graphics View-Dependent Simplification in Computer Graphics Metovic Sasa - Mustafa Fettahoglu Salzburg, am 30.01.2003 INHALTSVERZEICHNIS EINFÜHRUNG ANSICHT ABHÄNGIGE VEREINFACHUNG AUFBAU EINES MESHES EDGE COLLAPSE

Mehr

Sommersemester Implementierung I: Struktur

Sommersemester Implementierung I: Struktur Sommersemester 2003 Implementierung I: Struktur 2 Aufgabe 3 Implementierung I: Struktur Umfang: 1 Woche Punkte: 50 P. In den ersten beiden Aufgaben wurden die Struktur und das Verhalten des Systems modelliert.

Mehr

Automation-Letter Nr Hannes Homburger und Daniel Wolf

Automation-Letter Nr Hannes Homburger und Daniel Wolf Automation-Letter Nr. 22 06.10.2016 Hannes Homburger und Daniel Wolf Seminararbeit zum Fach Grundlagen Automation an der DHBW Stuttgart, Betreuer Prof. Dr. S. Zacher Die dynamische Darstellung von physikalischen

Mehr