Computer Graphics and Animation in Games culling bloom advanced shading Some material based on Michael Wimmer, Michael Kalkusch, Peter Wonka, Francois Faure shadows 1
artificial intelligence? bump maps levels of detail texturing 2
But, most importantly all of this at 60 frames per second! 3
Aktuelles Beispiel: XBox One 4
Graphics Processing Unit GPU power increases much faster compared to CPU 5
6
Modern Graphics Pipeline Application Command Geometry Geometry A trip down the graphics pipeline Nowadays, everything is hardware accelerated Rasterization Texture Fragment Display Rasterization Fragment: pixel, but with additional info (alpha, depth, stencil ) 7
Vertex Programs 8
Vertex Programs Replace fixed function pipeline, therefore Need to supply input arguments Normally untransformed, unlit vertex Arbitrary arguments (lights, matrices, ) Specify output arguments At least transformed vertex Possibly color, texture coordinates, Exploit independence of vertices 1 vertex in, 1 vertex out Parallel vertex pipelines Dieter Schmalstieg 9 Programmable Shading 9
Vertex Program Examples Matrix skinning Cartoon-style rendering Dieter Schmalstieg 10 Programmable Shading 10
Vertex Program Examples Shadow projection Bump map setup Dieter Schmalstieg 11 Programmable Shading 11
Vertex Program Examples Dynamic vertex displacements Dieter Schmalstieg 12 Programmable Shading 12
Fragment Programs Dieter Schmalstieg 13 Programmable Shading 13
Shading Language Main dialects Microsoft High Level Shading Language (HLSL) OpenGL Shading Language (GLSL) Familiar C-like syntax Differences in program invocation Conventional: explicit Shader: for each element (vertex, primitive, fragment) Differences in program execution Conventional programs: single execution Shader programs: SIMD = single instruction multiple data (Parallel execution with multiple data) For each element in data stream (vertex, primitive, fragment) Dieter Schmalstieg 14 Programmable Shading 14
Display Buffers Application Command Geometry Rasterization Texture Fragment Display Geometry Rasterization What is stored in the display stage? 15
Depth-Buffer Methode (1) = Z-Buffer Methode Arbeitet im Image-Space Hardware-Implementierung auf GPU! Kein sortieren! 3-fache Flächenüberlappung an (x,y). Sichtbare Fläche S1 hat den kleinsten Tiefenwert. 16
Zwei Buffer Depth-Buffer Methode (2) Depth Buffer (Distanzinformation) Color Buffer (Intensitätsinformation) Größe = Bildschirmauflösung (für jedes Pixel: r, g, b, z) Zeichen-Prozedur = vergleiche z mit z in Buffer; wenn z näher zum Betrachter dann zeichne+aktualisiere z in Buffer sonst nichts! 17
Depth-Buffer Methode (3) Depth-Buffer beschreibt View Volume Von z near z far oder von -1 1 18
RGB & Depth buffer 19
Problem bei Animation: Screen Tearing 20
Double Buffering Bei Darstellung via Graphikkarte Front-Buffer: Bild n ist sichtbar Back-Buffer wird zum Zeichnen von Bildes n+1 verwendet Wenn Bild n+1 fertig: Buffer tauschen Vollständige Unterdrückung von Tearing benötigt zusätzlich Vertical Synchronization (VSync) Front Buffer 21
Game engines Examples Unreal Engine (Epic Games) Source Engine (Valve Corporation) Gamebryo Engine (Emergent Game Technologies) id Tech 5 (id Software) CryEngine (Crytek) 22
Game Engine Components Runtime library and tool set for computer game development Core functionality typically provided by a game engine includes: rendering engine (2D/ 3D) scene graph collision detection physics engine scripting animation artificial intelligence sound networking streaming memory management threading 23
Renderer Renderer Encapsulate all low level rendering (OpenGL, DirectX) Fast rendering of a collection of geometric primitives Primitives: triangle meshes, line lists, point lists, particles, etc. Management of materials and dynamic lighting Often based on scene graph 24
Scene Graph Hierarchical representation of objects in a scene 25
Transformation Accumulation 26
Display with Scene Graph std::tree<treenode*> SGRoot; To display all the objects in a scene: void displayscene() { displaynode(sgroot); } void displaynode( TreeNode *node ) { node->display(); // polymorphic method, different for each node! if(!node->isleaf()) { currentmatrix::multiply(node->getmatrix()); for( int nchild = 0; nchild < node->children.size(); ++nchild ) { displaynode( children[ nchild ] ); } } } 27
Typical Nodes Transformation Geometry Attributes (texture, texture parameter) Light parameters Simple animations Picking behavior 28 28
Scene Graph Event Handlers Event callback mechanism to intercept scene graph traversal cull called when the culling traversal visits the node draw called when the node is ready to be displayed Accumulate transformations in the draw handler Additional handlers pre-draw called BEFORE the draw traversal for the node is initiated Useful for setting OpenGL states (lighting, textures, render targets) post-draw called AFTER the node (and its children) have been rendered Reset current transformation matrix to the parent node transform update called when the state of the current node is changed in the tree 29
Computer Animation 30
Interpolation zwischen Ausgangslage (Keyframe k) Neuer Lage (Keyframe k+1) Key-Frame Animation Berechnen von Inbetweens Einfügen eines Hilfspunktes (3) Interpolation der Punkte 1, 2, 3 1, 2, 3 [Hearn,Baker] Fig 13-8 9, p740 31
Nichtlineare Key-Frame Animation Vorher: Interpolation entlang von Geraden Nachher: Interpolation mittels nichtlinearer Splines [Hearn,Baker] Fig 13-8 9, p740 [Hearn,Baker] Fig 13-13, p742 32
Zeitliche Parametrisierung Parametrisierung zwischen 2 Key-Frames: Linear, konstante Zwischenschritte x(t) = (1-t)*x(t 1 ) + t * x(t 2 ) t= i* (t 2 t 1 ) N t1 t2 33
Beschleunigung Parametrisierung zwischen 2 Key-Frames: Linear Nicht-Linear t1 t2 t1 t2 t1 t2 34
Vergleich Ease Out Ease In Ease In-Out 35
Kinematik Auch Dynamik genannt Beschreibung einer Animation durch Bewegungsparameter Position, Geschwindigkeit, Beschleunigung Ohne Angabe der Ursache der Bewegung Beispiel Position + Geschwindigkeit eines Festkörpers ergibt geradlinige Bewegung 36
Arten der Kinematik Benutzer erzeugt Koordinaten direkt Keyframe Animation Motion Capture Benutzer erzeugt Koordinaten indirekt Vorwärtskinematik Positionen beschrieben als Funktion der Zeit Inverse Kinematik Direkte Kinematik Vorwärtstransformation Gelenkwinkel Kartesische Koordinaten Inverse Kinematik Rückwärtstransformation 37
Kinematik Animation von beweglichen Körpern Zusammengesetzt aus Glieder Gelenke (joints) 38
Gelenke Gelenke beschränken die Bewegung der Glieder Verwendet zur Erzeugung von Hierarchien von Gliedern 39
Probleme der Vorwärtskinematik Externe Constraints werden nicht automatisch berücksichtigt inverse Kinematik 40
Inverse Kinematik Angabe von Anfangs- und Endpunkten (Constraints) System berechnet p, v, a für Inbetweens Arbeitsweise in Praxis Plazieren der Endglieder (Fuß, Hand, Kopf) für Keyframes Rest wird berechnet: Optimierung, Interpolation 41
Motion Capture (1/2) Menschliche Bewegung per Vorwärtkinematik Prinzip Reale Bewegungen aufzeichnen Schauspieler oder Puppe Monkey Tom Hanks in Polar Express http://wardomatic.blogspot.com/2004/12/polar-express-virtual-train-wreck_18.html 42
Hardware Motion Capture (2/2) Magnetische Sensoren Optische Aufzeichnung Elektro-mechanische Sensoren Electro-mechanical http://www.metamotion.com/gypsy/gypsy-motion-capture-system-mocap.htm Optical http://www.naturalpoint.com/optitrack/products/motion-capture/ 43
Skalierung Verformbare Modelle Nur lokale affine Transformation Spline-Oberflächen Animation der Kontrollpunkte Space-Warping Globale Verformung Free Form Deformation Artikulierte Objekte (Bones + Skin) Gesichter 44
Original Analytische Deformierungen Tapering (X,Y,Z) = (r(z)x, r(z)y, z) Twisting (x cosθ -y sinθ, x sinθ +y cosθ, z) Bending 45
Free Form Deformation (FFD) Tricubic Bezier-Patches Controlpunkte p ijk definieren eine Raumdeformation 2D-Analogie 46
FFD-Beispiel: Nase 47
Character Skinning Haut (BRep) angebracht an kinematischem Skelett Bones = Festkörper mit Koordinatensystem Kontinuierliche Mesh-Deformation 48
49
50
51
52
Probleme von trivialen Methoden Verbinde jeden Vertex zum nächsten Bone Selbstdurchdringung Aufreisen der Oberfläche 53
Skinning-Idea Vertex wird mit n nächsten Bones verknüpft Gewichtete Summe Fragen Welche Bones? Welche Gewichte? 54
Probleme 1. Extreme Deformationen 2. Zuwenig gestalterische Kontrolle 55
Ansatz von Mohr und Gleicher Einfügen zusätzlicher Knochen Optimieren der Gewichte über ganze Bewegung, basierend auf Benutzervorgaben Itererative Optimierung zu langsam für Spiele 56
Problem von linearer Interpolation Lineare interpolation Sphärische interpolation candy wrapper 57
Dual Quaternion Blending fdfsd Lösungsidee: Renormalisierung Mathematisch durch 8D-Parametrisierung der 6D Rigid Transform (dual quaternions) 58
Physikalisch-basierte Animation Allgemeine Kräfte Gravitation Spring-based models Constraints Physik-Engines wie Bullet, PhysX Partikelsysteme Rauch, Feuer, Regen, Nebel, etc. Snow Particle System Martin Schröttner @ EZG2006 Kollisions-Erkennung Fire Particle System Christian Kurz @ EZG2007 59
Kollisions-Erkennung & Reaktion [imdb.com] Spider Man 3 (2007) 60
Kollisions-Erkennung und Reaktion 1) Beispiel: Ball + Boden 2) Physikalische Simulation Elastizität des Balls Dämpfung durch den Boden Gravitation, vielleicht Wind? 3) Kollisions-Erkennung 4) Veränderung des Systems Neue Richtung der Kugel Veränderung des Bodens? [Hearn,Baker] Fig 13-18, p745 61
Beispiel Game Developer 62
63
64
Fragen? 65