Schlüsseltechnologie

STP010: 3D-Grafik


Listen Later

Heute geht es viel um Spiele. Denn anscheinend sind diese fast das Einzige, das Xyrill und ttimeless einfällt, wenn es um 3D-Grafik geht.

Allgemeiner dreht sich diese Folge darum, was es alles braucht, um Körper in virtuellen Welten darzustellen.
Der Abschluss der vierteiligen Reihe über Grafik, und was dazu notwendig ist.

Shownotes
  • Vergleich zu 2D-Desktop-Grafik (STP008)

    • Zeichenreihenfolge ist nicht so offensichtlich (Was ist vorne? Was ist hinten?)
    • höherer Anspruch an Realismus: dynamische Beleuchtung, Texturierung, etc.
    • Randbemerkung: auch 2D-Spiele werden heute meist in einer 3D-Szene aufgebaut
    • Grundeinheit für 3D-Modelle: nicht der Pixel, sondern das Polygon (deswegen kommen wir um Fließkommazahlen nicht herum)
    • Vorbemerkungen zu den folgenden Schritten:

      • all dies passiert für jedes Einzelbild von vorne (also bei 60Hz 60-mal pro Sekunde)
      • zur Illustration verlinken wir auf Beispielbilder aus den Übungsunterlagen für einen Kurs in 3D-Rendering-Grundlagen
      • Schritt 1: 3D-Modell mit Polygonen

        • Polygon heißt wörtlich "Vieleck", aber 3D-Modelle bestehen meist nur aus Dreiecken
        • Polygone mit vier und mehr Ecken können mittels Triangulation in Dreiecke zerlegt werden
        • Darstellung eines 3D-Modells als Gitternetz
        • Schritt 2: Kamera

          • grundsätzlich ein Paar aus Blickpunkt und Blickrichtung, aber mit einigen weiteren Parametern
          • mathematische Grundlage: Quaternionen
          • Sichtfeld (Field of View): beim Menschen 130°; bei Videospielen meist weniger, je nachdem, wieviel Platz der Bildschirm im Sichtfeld einnimmt (z.B. 90° am PC, 60° an Konsolen)
          • Schritt 3: Ausmalen der Polygone (Rasterisierung)

            • Backface Culling (Rückseiten-Auslese): wir werfen alle Polygone weg, die von uns wegzeigen
            • Beispiel mit ausgemalten Polygonen nach Backface Culling
            • Z-Buffer: wenn wir Polygone ausmalen, dann malen wir nur die Pixel aus, bei denen wir nicht schon Polygone gemalt haben, die näher an der Kamera dran sind
            • Beispiel mit ausgemalten Polygonen unter Verwendung des Z-Buffers
            • Schritt 4: Texturen

              • bis jetzt war jedes Polygon einfarbig, jetzt kleben wir Bilder auf (analog zu Modellbausätzen)
              • in der Praxis ein großes Bild für das ganze Modell
              • jede Ecke jedes Polygons wird zu einem Punkt in der Textur zugeordnet
              • Beispiel mit Polygonen, die mit ihrer Textur ausgemalt sind
              • Einwurf: Was unterscheidet einen Grafikprozessor (GPU) von einem Hauptprozessor (CPU)?

                • CPU-Kerne führen einzelne Befehle auf einzelnen Daten aus
                • GPU führt einzelne Befehle auf vielen Daten gleichzeitig aus, z.B. Rasterisierung von 10000 Polygonen gleichzeitig oder Z-Buffer-Prüfung für 10000 Pixel gleichzeitig
                • dadurch auch für andere massiv parallelisierbare Operationen interessant ("GPGPU", General Purpose GPU), z.B. wissenschaftliche Simulationen, maschinelles Lernen, Passwortknacken
                • Schritt 5: Shader

                  • bis jetzt haben wir die Fixed Function Pipeline beschrieben, eine im GPU-Treiber fest vorgegebene Kette von Rendering-Schritten
                  • neuere GPU (seit den frühen 2000ern) erlauben das Einbetten von eigenen Programmen (Shadern) in die Pipeline
                  • Vertex Shader: wird einmal pro Vertex (Ecke eines Polygons) aufgerufen, um die 2D-Position auf dem Bildschirm zu berechnen (ansonsten normale Berechnung anhand der konfigurierten Kameraposition)
                  • Fragment Shader: wird einmal pro Pixel aufgerufen, um gegebenenfalls die Farbe des Pixels zu modifizieren
                  • Beispiel eines Fragment-Shaders, der eine Farbtextur auf 6 feste Farbstufen reduziert
                  • Schritt 6: Beleuchtung

                    • bei traditionallen 2D-Spielen mit Sprites war Beleuchtung meist global (z.B. jedes Objekt hat 2 Sprites, einmal für dunkle und einmal für helle Szenen)
                    • dynamische Beleuchtung: heute meist als Teil des Fragment Shaders
                    • Beispiel: Phong's Approximation einer natürlichen Beleuchtung
                        1. Anteil: ambiente Beleuchtung (überall gleich stark, Grundausleuchtung wie in einem Fernsehstudio)
                          1. Anteil: diffuse Beleuchtung (abhängig davon, wie sehr die beleuchtete Fläche zur Lichtquelle hingewendet ist)
                            1. Anteil: spekulare Beleuchtung (Glänzen; stark überbetont auf Flächen, die fast exakt zur Lichtquelle hingewendet sind)
                            2. es gibt noch so viel mehr: Kantenglättung (Antialiasing), lineares und anisotropisches Filtern, Normal Mapping, Raytracing

                              ...more
                              View all episodesView all episodes
                              Download on the App Store

                              SchlüsseltechnologieBy Xyrillian Noises


                              More shows like Schlüsseltechnologie

                              View all
                              Chaosradio by Chaos Computer Club Berlin

                              Chaosradio

                              7 Listeners

                              Freak Show by Metaebene Personal Media - Tim Pritlove

                              Freak Show

                              10 Listeners

                              Logbuch:Netzpolitik by Metaebene Personal Media - Tim Pritlove

                              Logbuch:Netzpolitik

                              7 Listeners

                              Methodisch inkorrekt! by Methodisch inkorrekt!

                              Methodisch inkorrekt!

                              14 Listeners

                              c’t uplink - der IT-Podcast aus Nerdistan by c’t Magazin

                              c’t uplink - der IT-Podcast aus Nerdistan

                              7 Listeners

                              Jung & Naiv by Tilo Jung

                              Jung & Naiv

                              40 Listeners

                              heiseshow by heise online

                              heiseshow

                              2 Listeners

                              Übermedien by Übermedien

                              Übermedien

                              3 Listeners

                              Lage der Nation - der Politik-Podcast aus Berlin by Philip Banse & Ulf Buermeyer

                              Lage der Nation - der Politik-Podcast aus Berlin

                              221 Listeners

                              Die Wochendämmerung - Der stabile Wochenrückblick by Katrin Rönicke und Holger Klein (hauseins)

                              Die Wochendämmerung - Der stabile Wochenrückblick

                              15 Listeners

                              Sicherheitshalber by Der Podcast zur sicherheitspolitischen Lage in Deutschland, Europa und der Welt.

                              Sicherheitshalber

                              45 Listeners

                              Bit-Rauschen: Der Prozessor-Podcast von c’t by c't Magazin

                              Bit-Rauschen: Der Prozessor-Podcast von c’t

                              1 Listeners

                              Legion by rbb | NDR | Undone

                              Legion

                              5 Listeners

                              Haken dran – das Social-Media-Update der c't by Gavin Karlmeier

                              Haken dran – das Social-Media-Update der c't

                              2 Listeners

                              Passwort - der Podcast von heise security by Dr. Christopher Kunz, Sylvester Tremmel

                              Passwort - der Podcast von heise security

                              3 Listeners