41

CGV2 (Fach) / Alles (Lektion)

alles

Diese Lektion wurde von fuchsik erstellt.

Lektion lernen

Anzeige
  • Singleton-Pattern Entwurfsmuster, das verhindert, dass von einer Klasse mehr als ein Objekt erstellt werden kann sorgt dafür, dass es von einer Klasse nur eine einzige Instanz gibt und diese global zugänglich ist. Objektbildung erfolgt in Klasse selbst Objekt kann als statische Instanz abgerufen werden  privater Konstruktor Objekt wird als statisches, finales nach außen unsichtbares Feld erstellt
  • Uniforms in Echtzeit in Shaderprogrammierung eingreifen Variablendefinition im Shadercode, die man im Javacode direkt ansprechen und verändern kann (Schnittstelle Programm&Shader) Uniformwert wird in der Hauptanwendung an den entsprechenden Shader übergeben > kann dort genutzt werden
  • Strategy Patter kann während der Laufzeit & Designzeit geändert werden definiert eine Familie austauschbarer Algorithmen Verwendung:- wenn viele verwandte Klassen sich nur in ihrem Verhalten unterscheiden- wenn unterschiedliche Varianten eines Algorithmus benötigt werden- Daten innerhalb eines Algorithmus sollen vor Client verborgen werden- wenn verschiedene Verhaltensweisen innerhalb einer Klasse fest integriert sind
  • Partikelsystem Funktion, mit der sich große Anzahl von Objekten animieren lässt  Partikel hat:- Position- Geschwindigkeit- Masse- Beschleunigung/Dämpfung- Lebensdauer Partikelsystem- Partikel erstellen- Partikel initialisieren - Partikel beeinflussen bewegen Physik, Verhalten und Visualisierung trennen! Emitter Partikel Attribut 
  • Interface vs. abstrakte Klasse Interface:- alle Methoden sind abstrakt und publlic abstrakte Klasse:- wenn Klasse mind.eine abstrakte Methode hat, nennt man Klasse ebenfalls abstrakt- Subklasse kann abstrakte Methoden überschreiben
  • Interface besitzt nur Funktionsköpfe & Konstanten alle Klassen, die das Interface implementieren, müssen alle Methoden des Interface enthalten dient dazu eigenen Quellcode vor fremden Entwicklern zu schützen> können nur auf Methoden des Interface zugreifen
  • abstrakte Klasse besitzt mindestens eine abstrakte Methode können nicht instanziert werden  Subklasse muss abstrakte Funktion implementieren!!!
  • privater Konstruktor verhindert, dass ein Objekt der Klasse erzeugt wird kann nur innerhalb einer Klasse aufgerufen werden leerer Konstruktor: private MeinMathe{}> Default-Konstruktoraufruf unterbunden
  • finale Klassen dürfen nicht weiter vererbt werden Speicher ist fest vorgeschrieben um Klassen zu schützen public final class FinaleKlasse {}
  • flache Kopie nur Listen mit Adressen werden kopiert es werden keine neuen Objekte erzeugt, nur Referenzen wenn ein Indize geändert wird, ändert sich das selbe Indize im geclonten Objekt auch Nachteil: selber Speicherblock, wie Original
  • Anzeige
  • tiefe Kopie Copy-Konstruktor Inhalte werden kopiert Person herbert = new Person("Herbert", 30);Person herbertclone = new Person(herbert);
  • Vertex Shader - Aufgaben parallele Berechnung neuer Positionen für alle vorhandenen Vertices (Transformierung) gleichzeitig> kennen die neuen Positionen von Nachbarknoten zu diesem Zeitpunkt noch nicht> es können auch mehrere auf die selbe Position fallen erechnet Position durch Koordinatentransformation mit z.B. einer Matrix erzeugen, skalieren, positionieren
  • Refraktion = Brechung des Lichts beim Eintritt in ein neues Medium (Übergang von Luft zu Wasser) > durch unterschiedliche Lichtgeschwindigkeiten v-(n*v)n Schwächung der Strahlungsintensität proportional zur Weglänge
  • Wasserdynamik durch partielle Differentialgleichung 2. Ordnung Schwingungsdynamik:(a+b+c+d)*0,5-mt-2*Dämpfung Fragment-Shader für Berechnung Wasserdynamik
  • Varying Schnittstelle zwischen Vertex- & Fragment-Shader werden im Vertex-Shader geschrieben und können dann im Fragment-Shader ausgelesen werden Informationen aus dem Vetex Shader werden an den Fragment Shader weitergegeben Beispiel: Tiefe der Pixel soll den Farbwert bestimmen
  • Normale zur Wasseroberfläche kann durch Kreuzprodukt der Differenzvektoren in x- & y-Richtung bestimmt werden aktuelles Pixel: schaue auf Nachbarn > wähle Pixel rechts+links+oben+unten > bilde Vektor > so ergibt sich x und y Gradient > davon Normale=Normale des aktuellen Pixels
  • Schwarmverhalten 3 Regeln: Seperation Angleichung Zusammenhalt
  • Regel 1: Seperation wenn innerhalb einer Distanz andere Objekte in die Nähe kommen, bewegt sich das Individuum in die Richtung mit dem größten Freiheitsgrad wirkt der Häufung an einer Stelle entgegen
  • Regel 2: Angleichung Bewegungsrichtung eines Individuums entspricht mittlerer Richtung aller umliegenden Objekte
  • Regel 3: Zusammenhalt Bewegungsrichtung enrspricht der mittleren Position der anderen Gruppenmitglieder
  • Euler Integrationsmethode Kräfte auf Beschleunigung addieren Beschleunigung auf Geschwindikeit addieren Geschwindigkeit auf Position addieren
  • Steuerkräfte Ziel folgen Ziel erreichen fliehen
  • Steuerungskraft: Ziel folgen ist ein Zielpunkt gegeben, dann gibt es eine Steuerungskraft, die direkt in die Richtung des Ziels zeigen Zielkraft = Zielrichtung - Geschwindigkeit
  • Steuerungskraft: Ziel erreichen Geschwindigkeit muss gedrosselt werden > Agent muss in Abhängigkeit zum Objektabstand abgebremst werden je näher man dem Ziel kommt, desto langsamer muss man werden
  • Steuerungskraft: Fliehen entgegengesetzte Richtung zu "Ziel folgen"
  • Fragment-Shader (Pixel shader) Aufgaben dienen dazu, die zu rendernden Fragmente zu verändern parallele Bestimmung der Farbe für jedes Fragment aus den interpolierten Werten (Entscheidung welche Farbe für das aktuelle Pixel (Fragment) gesetzt werden soll alle Pixel werden gleichzeitig verarbeitet)interpolie Werte: Zwischenwerte
  • statische Attribute gehören zu keinem Objekt werden als Konstanten verwendet liegen nur einmal pro Klasse vor!
  • statische Methoden Zum Beispiel Sinus der math class Immer das gleiche machen. Vorgegebene Methode einer class deterministische Funktionen die immer das gleiche zurück liefern Methode ist unabhängig von der Klasse, in der sie steht, da sie nicht auf Attribute in der Klasse zugreift es muss kein Objekt der Klasse erzeugt werden> ohne static müsste ein Objekt erzeugt werden nur statische Methoden >> privater Konstruktor ist ein Muss!! Zugriff: anstatt Objektname > Klassenname kann keine Objektattribute nutzen, da es kein implizietes Objekt gibt auf dessen Eigenschaft zugegriffen werden kann
  • Kosinusformel Winkel zwischen 2 Vektoren Bogenmaß in Gradmaß = (360°/2*pi) * alpha cos alpha = (vektorA * vektorB) / ( |vektorA| * |vektorB| ) > Skalarprodukt
  • Autonomer Agent bestimmt seine Bewegung innerhalb einer gegebenen Welt durch welche Faktoren? Auswahl eines abstrakten Ziels/Plans (ActionSelection) Steuerung durch Einfluss unterschiedlicher Kräfte, die physikalischer oder spieltechnischer Natur sind (Steering) Physikalisches Verhalten & Fähigkeiten der Fortbewegung (Locomotion)
  • Anzeige
  • Steuerungsverhalten Wegfindung Breitensuche Tiefensuche A*/Bestensuche
  • Wegfindung: Breitensuche Warteschlange Open-List und eine Close-List werden benötigt Startknoten ist aktueller Knoten wenn Start=Zielknoten >> Ende wenn Knoten nicht in Open- oder Close-List vorhanden sind > alle Nachbarn des aktuellen Knoten in Open-List einfügen, Vorgänger merken aktuellen Knoten aus Open-List löschen und in Close-List einfügen nächster Knoten aus Warteschlange ist aktueller Knoten
  • Wegfindung: Tiefensuche Stack Open-List und eine Close-List wird benötigt Startknoten ist aktueller Knoten wenn Start=Zielknoten > Ende Nachbarn des aktuellen Knoten werden in Open-List eingefügt, wenn sie weder in Close- noch in Open-List stehen, Vorgänger merken falls keine Nachfolger > aktuellen Knoten in Close-List einfügen erster Knoten im Stack ist aktueller Knoten
  • Wegfindung: A*/Bestensuche Prioritätswarteschlange Open-List und Close-List Startknoten ist aktueller Knoten wenn Strart = Ziel > Ende - wenn Nachbarn des aktuellen Knotens nicht in Close-List stehen, in Open-List einfügen;- ist Knoten bereits in Open-List, muss Priorität geprüft werden und aktualisiert aktuellen Knoten aus Open-List entfernen und und in Close-List einfügen Knoten mit kleinster Priorität ist aktueller Knoten
  • reguläre Grids Einteilung der Welt in regelmäßig große Stücke Zentren der jeweiligen Stücke werden dabei als Knoten für Graphen-Präsentation verwendet
  • String-Pulling weitere Verkürzung des Weges, indem jeder Knoten entfernt wird, wenn es einen direkten Weg zwischen zwei Punkten gibt!
  • Catmull-Rom-Spline Spline, bei der alle Punkte durchlaufen werden und Änderungen die Kurve nur lokal beeinfllussen
  • Volumenbasierte reguläre Graphen automatische Flutung der Welt mit unterschiedlich großen Vierecken, wobei die Rechtecke mit den vier Nachbarn verbunden werden und die Wegpunkte in das jeweilige Zentrum gesetzt wird
  • Pipeline-Stufen Data Daten kommen rein Vertex-Shader Anpassen auf die Projektion Ansicht ändern Transformieren der Punkte der Objekte Rasterisierung Raster wird festgelegt und Anteile der Ecken?! Fragment-Shader Anpassen auf Ausgabe Beschreibung der Werte durch Rasterung jedes Pixel wird beschrieben welchen Wert es haben soll Framebuffer Zeichnen
  • statische/nichtstatische Funktionen statisch sind Funktionen:- die keine eigene Instanz brauchen- die unabhängig vom Objekt sind> Funktion macht immer das selbe, muss keine Instanz angelegt werden > deterministisch nicht statisch:- wenn direkt Werte am Objekt geändert werden
  • Design pattern Entwurfsmuster Lösungsschablone für wiederkehrende Entwurfsprobleme Wiederverwendbare Vorlage zur Problemlösung