|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Eine Lasershow - schneller Lichteffekt mit QuellcodesBeschreibung des EffektesSehr schnell auf dem Bildschirm rotierende Farbbalken erzeugen den Eindruck wild tanzender Sterne. Erinnert an eine Lasershow. Durch Variation der Balkendicke und der Rotationsgeschwindigkeit erhält der Effekt eine hohe Dynamik. In welchen Demos zu sehen?Diesen Effekt habe ich bisher nur in einem einzigen Demo gesehen, und zwar in der Juice-Demo von Psychic Link. Dies ist eines der besten Demos aller Zeiten, und wurde im Jahre ???? auf der XXXX in XXXX präsentiert, wo es den xxx. Preis holte. Wie wirds gemacht?Der Effekt besteht aus einem Farbverlauf mit 256 Farbabstufungen. Die Farben sind wie folgt zyklisch angeordnet:
Die Farben sind zyklisch angeordnet, so daß die Farben als (Farbwert mod 256) betrachtet werden können. Dieser Farbverlauf wird nun mit Hilfe eines abgespeckten Textur-Mappers auf den Bildschirm gezeichnet. Man bestimmt einfach, wie stark der Farbwert für jeden Pixel in einer Bildschirmzeile erhöht werden soll, und schon hat man ein Muster mit senkrechten Balken. Wenn man dann noch zusätzlich pro Zeile den Startfarbwert für den ersten Pixel der Zeile um ein anderes Inkrement erhöt, sind auch vertikale Ferbverläufe möglich. Aber erst durch die Kombination beider Inkremente werden Farbspielereien wie die sich drehenden Balken möglich.
In Zukunft werde ich die beiden genannten Inkremente
Farbsteigungen nennen, und zwar dx für die
Farbänderung innerhalb einer Zeile und dy für die
Farbänderung zwischen unterschiedlichen Zeilen.
Um die Bewegung zu erzeugen, muß man also pro Bild nur die beiden Farbsteigungen und den Versatz berechnen, den Rest erledigt der Mapper. Beispiele mit verschiedenen FarbsteigungenDie Prozedur Textur erwartet also beim Aufruf als Parameter die zwei Farbsteigungen dx und dy sowie einen Verschiebewert Versatz. Leider ist die oben angebenene Definition sehr abstrakt, so daß ich hier nun noch ein paar einfache Beispiele angeben möchte. Die Beispiele dienen dazu, die Auswirkung unterschiedlicher Farbsteigungen besser zu verstehen.
Um nun die Rotation zu erreichen, läßt man dx und
dy einfach auf einem Kreis rotieren (Interpretation der
Koordinaten). Dazu reichen für dx die Sinus-Funktion und
für dy die Kosinusfunktion aus. Man braucht nur noch pro
Frame den Winkel zu erhöhen und schon rotieren die Balken auf dem
Bildschirm.
Anmerkung zu den Zahlenbeispielen:
Programmablauf pro Frame
Programminfo
Turbo Pascal (kompiliert mit TP 7.0)
Geschwindigkeit:
Download
Download als ZIP-File:
Screenshots
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Seitenanfang |
Inhalt und Design von Florian Evers, florian-evers@gmx.de |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||