WikiDer > Prozedurale Generierung

Procedurele generatie
Eine prozedural generierte Textur.
Landschaft generiert mit Terragen.
Prozedurale Generierung einer Landschaft.
Eine Anlage erzeugt mit a L-System.

In dem Informatik verweist Verfahrensgenerierung zu Techniken zu Inhalt vor Ort generieren mit Algorithmen anstatt es manuell zu erstellen. Die Inhalte werden bereitgestellt von der Computer Programm generiert, wenn das Programm ausgeführt wird; dies steht im Gegensatz zu Inhalten, die für die Verbreitung des Programms zur Nutzung durch das Programm entwickelt und bereitgestellt werden. Die prozedurale Generierung wird hauptsächlich in Filmen verwendet, GrafikSoftware und bei der Entwicklungsstufen im Computerspiele. Beispiele für Dinge, die prozedural generiert werden können, sind Landschaften, Texturen und 3D-Objekte. Klang wird selten prozedural generiert, mit Ausnahme von Sprachsynthese.

Geschichte

Computerspiele

Die ersten Computerspiele hatten wenig Erinnerung Also mussten sie Inhalte vor Ort generieren: Es gab einfach nicht genug Speicher, um Niveau und andere Dinge, die Sie in Erinnerung behalten sollten. Verwenden von Zufallsgeneratoren Es wurden Ebenen erzeugt, die wie handgemacht aussahen. Der Wächter (1986) zum Beispiel hatte 10.000 einzigartige Level in nur 48 oder 64 Kilobyte. Im Elite (1984) wurden ganze Galaxien aus dem Fibonaccia-Folge.[1] Andere Beispiele sind Rettung auf Fractalus! (1985), in dem die Hügel eines Planeten erzeugt wurden und Flussüberfall (1982), in dem ein Labyrinth mit Hindernissen erzeugt wurde.

In 2004, .kkrieger freigegeben, a Ego-Shooter für den Computer; das Spiel war kurz und einfach, aber alle grafischen Effekte wurden auf nur 96 . reduziert Kilobyte. Dies ist ein großer Unterschied zu kommerziellen Spielen, die über mehrere CDs und oft mehr als 2 . verkauft werden Gigabyte In Gewahrsam nehmen. Das Spiel RoboBlitz (2006) nutzte die prozedurale Generierung und konnte dadurch Xbox Live-Arcade verteilt werden.

Das Spiel Spore (2008), gestaltet von Will Wright, nutzt ausgiebig die prozedurale Generierung. Die Kreaturen in Spore sind vollständig prozedural animiert und gestylt. Auch die Umgebung wird prozedural generiert. Im Ego-Shooter Grenzland (2009) von Getriebesoftware Hunderttausende von Waffen werden prozedural erzeugt.

Demoszene

Ein Screenshot von a Demo, ein visuelles Programm, in dem der Inhalt prozedural generiert wird.

Das Demoszene ist eine Subkultur, die sich mit der Erstellung von Computerprogrammen beschäftigt, die Demos genannt werden und die visuelle Kunst prozedural generieren. In diesen Demos versucht man Hardware- (insbesondere die Prozessor und der Grafikkarte) so effizient wie möglich, um alle Arten von Effekten zu erzeugen. Viele zeitgenössische Techniken wurden zuerst in Demos gesehen.

Filme

In Filmen wird die prozedurale Generierung verwendet, um beispielsweise Landschaften, Planeten oder andere Umgebungen zu generieren. Die Umgebungen in Star Trek: Nemesis (2002) und heimlich (2005) wurden generiert mit deGen (Umgebungsgenerator) von Digitale Domäne, eine modifizierte Version von Terragen 2.[2] Prozedurale Animationen werden verwendet, um große Personengruppen oder andere Charaktere zu animieren, wie beispielsweise eine Herde von Tieren oder Armeen. Beispiele sind die Gnus in Der König der Löwen[3] (1994) und ein Heer von Hunnen in Mulan[4] (1998).

Die prozedurale Generierung bietet auch die Möglichkeit, alle Arten von Objekten zu generieren, die sich geringfügig voneinander unterscheiden oder Unvollkommenheiten hinzuzufügen. Dies ergibt einen realistischen Effekt, da in der Realität keine zwei Objekte genau gleich sind. So können beispielsweise die Regale in einem Supermarkt mit Produkten aller Art gefüllt werden, ohne dass jedes Produkt manuell gestaltet werden muss.

Technik

Die bei der prozeduralen Generierung verwendeten Funktionen dienen referenziell transparent sein. Dadurch können sie in beliebiger Reihenfolge nacheinander aufgetragen werden und die Zwischenergebnisse können Zwischenspeicher aus Effizienzgründen aufbewahrt werden. Das ist ähnlich wie faule Bewertung im funktionale Programmiersprachen.

Die Erzeugung von Texturen erfolgt oft mit mathematischen Techniken, wie z Fourier-Transformation und Wavelets.[5]

Anwendungen

Terrain

Eine visuelle Darstellung von a Höhenkarte: Je heller ein Pixel, desto höher das Gelände.
Gleiche Höhenkarte gerendert mit Anim8or.
Ragdoll-Physik sind ein Beispiel für prozedurale Animation.

Die prozedurale Generierung kann verwendet werden, um ein Gelände basierend auf verschiedenen Merkmalen wie Hügeligkeit und Gewässern, aber auch dem Vegetationsgrad zu generieren.

Die meisten Computeranwendungen für das Gelände verwenden a Höhenkarte (Höhenkarte): ein zweidimensionales Bild, das die Höhe des Geländes speichert. Es gibt viele Algorithmen, mit denen eine realistische Höhenkarte erstellt werden kann.[6][7] Diese Algorithmen berücksichtigen beispielsweise den Unterschied zwischen zwei Punkten in der Höhenkarte: Je gradueller der Unterschied, desto gradueller die Hügel in der Landschaft. Diese Algorithmen bestimmen lediglich den Verlauf des Geländes; andere Algorithmen können angewendet werden Texturen und die Vegetation und/oder Gebäude.

Beispiele für Geländegenerierungsalgorithmen sind die Diamant-Quadrat-Algorithmus, Perlin-Rauschen (für eine Vielzahl von Zwecken verwendet) oder Algorithmen basierend auf Fraktale. Auch mathematische Funktionen und Techniken können verwendet werden, wie z Splines. Ein anderer Ansatz besteht darin, physikalische Prozesse zu simulieren, wie z Erosion aus Wasser, Plattentektonik oder Einwirkungen von Meteoriten.

Animation

Prozedurale Animationen werden verwendet, um Partikel (wie Rauch, Feuer oder Wasser) und die Bewegung von Kleidung, Haaren oder Fell zu simulieren. Darüber hinaus wird es zum Bewegen von Charakteren und Objekten verwendet. Prozedurale Animation ist eine Form von digitale Animation.

Für die Charakterbewegung, inverse Kinematik verwendet werden. Die Bewegung der Gliedmaßen (wie die Winkel und die Geschwindigkeit, mit der sie sich bewegen) wird basierend auf den Positionen der Gliedmaßen zu bestimmten Zeiten berechnet.

Eine andere Technik ist die verhaltensbasierte Animation (Verhaltensanimation): Bei diesem Ansatz wird die Animation berechnet, indem angezeigt wird, wie ein Charakter auf seine Umgebung reagiert. Die Animation wird nicht erfasst, sondern je nach Umständen dynamisch ausgeführt. Ein Charakter kann auf Dinge in seiner Umgebung, aber auch auf das Verhalten anderer Charaktere reagieren. Mit dieser Technik können große Tier- oder Menschengruppen animiert werden, indem Verhaltensregeln für die einzelnen Gruppenmitglieder vorgegeben werden. Dies kann zu einem Verhalten führen, das nicht direkt auf bestimmte Verhaltensregeln zurückzuführen ist, sondern durch das Zusammenwirken der Verhaltensregeln verursacht wird (dies ist auftauchend Verhalten genannt).

In Computerspielen manchmal Ragdoll-Physik Wird verwendet, um Charaktere zu animieren, wenn sie fallen oder von etwas getroffen werden. In der Ragdoll-Physik wird die Bewegung eines Skeletts simuliert: Ein Charakter besteht aus Gliedmaßen, die an bestimmten Punkten aneinander befestigt sind. Um die Rechenzeit zu verkürzen, war die Simulation oft einfach und berücksichtigte nicht die Unmöglichkeit bestimmter Drehbewegungen von Gelenken. Der Körper könnte in alle möglichen unnatürlichen Positionen geraten.

Texturen

Prozedurale Texturen generiert mit Kunst der Illusion.

Texturen können auf unterschiedliche Weise erzeugt werden: Man kann eine Textur mit mathematischen Techniken erzeugen oder man kann eine Textur aus vorhandenen Bildern erzeugen.

Auch in Computerspielen bietet die dynamische Erzeugung von Texturen neue Möglichkeiten. Die Texturen können während des Spiels geändert werden. Somit kann man einen Alterungsprozess mit fortschreitender Zeit im Spiel ablaufen lassen.[5]

Prozedurale Texturen sollten nicht verwechselt werden mit Textursynthese versucht, eine Textur mit den gleichen Eigenschaften wie das Original zu erzeugen. Bei prozeduralen Texturen wird eine neue Textur basierend auf Algorithmen mit Parameter während sich die Textursynthese auf eine vorhandene Textur konzentriert. Hilfsbilder können bei der prozeduralen Erzeugung von Texturen verwendet werden, aber die endgültige Textur kann sich vollständig von den verwendeten Hilfsbildern unterscheiden. Dies ist bei der Textursynthese nicht der Fall, bei der die erzeugte Textur dem verwendeten Original so ähnlich wie möglich ist.

Objekte

Prozedurale Generierung kann auch für andere Zwecke verwendet werden, z. B. für Gebäude[8] und Städte[9]. Ein dreidimensionales Objekt besteht aus verschiedenen Polygone und es kann ein Algorithmus entwickelt werden, der ein solches dreidimensionales Objekt basierend auf Parametern erzeugt. Auch andere Strukturen, wie beispielsweise Straßennetze, können generiert werden.

Software

Nachfolgend finden Sie eine Übersicht über Software, die prozedurale Generierung verwendet:

Anwendungen

Computerspiele

Middleware

Externe Links