GMU:Immersive Strategien/Inhalte/Bälle

From Medien Wiki

Bälle

Dieses Programm ist in Processing entstanden. Die Farbe, Position und Richtung der Bälle ist zufällig.


Entwicklung

Ich habe ein Objekt Ball erstellt, in dem eine kreisförmige Ellipse mit zufälliger Farbe gezeichnet wird (zusätzlich könnte noch ein Glanzpunkt und eine Art Schatten kommen). Mit diesem Objekt habe ich dann 15 Bälle in einem Array erstellt.

Im Programm selbst werden dann die Werte von den einzelnen Objekten mit der Random-Funktion in 3 For-Schleifen gesetzt, entsprechend der 3 Teilbereiche (also 5 Bälle auf jeder Ebene).

Die Bälle werden im draw gezeichnet und entsprechend ihrer Position wieder in 3 For-Schleifen geteilt, die dann abfragen, wann der Ball an den Rand stößt, dann wird bei oben und unten die Richtung gewechselt und bei links und rechts die neue Position auf der jeweils anderen Seite gesetzt.

Es fehlt noch, dass die Bälle sich gegenseitig abstoßen. Das wird ganz schön viel Schreibarbeit, wenn ich keine einfache Lösung finde...

Code


Weiterentwicklung

Jetzt sehen die Bälle schon etwas besser aus (sind etwas kleiner geworden), doch in der Bewegung scheinen sie eher oval. Liegt wohl daran, dass ich für die Schattierung mehrere Ellipsen übereinander zeichne und die Framerate vielleicht nicht passt. Zusätzlich haben sie verschiedene Farbbereiche in den Ebenen.

Wenn sie an den Rand stoßen, werden sie kurz verformt und dann wieder normal. So sehen sie wirklich aus als würden sie springen. Zusätzlich haben sie noch eine runde Flugbahn mit sinus und cosinus bekommen. (So richtig hab ich selbst nichtmal die Auswirkung der Werte verstanden, hauptsache es funktioniert^^)

Obwohl ich die Position jedes einzelnen Balls in einem Array abspeichere und bei jeden Ball abfrage, ob er mit der Position des anderen übereinstimmt, stoßen sich die Bälle nicht ab...

CodeA


Finale

Ich habs geschafft! Die Bälle stoßen sich voneinander ab! Dadurch werden die physikalischen Gesetze manchmal aufgehoben, denn der in die entgegengesetzte Richtung abgestoßene Ball fliegt auf seiner Kreisbahn zur Decke. Manchmal wird ein Ball sogar aus dem Bereich heraus gekickt.

Das gute dabei ist, dass sich die Bälle manchmal irgendwann einpendeln. Sie stoßen dann nicht mehr gegeneinander. Zusätzlich habe ich sie ein bisschen größer gemacht und eine größere Knautschung eingestellt.

CodeB


Letzte Feinarbeiten

Bälle

Die letzten Fehler habe ich behoben. Die Bälle fliegen nicht mehr unnatürlich nach oben. Das Wegdrängen habe ich etwas gedämpft dadurch, dass beide Bälle sich von einander abstoßen (und nicht nur einer abgestoßen wird). Die Farbe ist wieder völlig zufällig.

Nun sind sie fast so groß wie am Anfang. Ich kann nur die 100 nicht nehmen, weil sonst die gemalten Kreise innen zu klein werden und der schöne, abgerundete Effekt nicht ganz stimmig ist. Außerdem werden sie dann zu dunkel.

Fehlt nur noch der schweifende Ball. Da habe ich eventuell vor, den Anwender diesen schweifenden Ball per Maus durch die Ebenen ziehen zu lassen und so auch die Flugbahnen der anderen Bälle zu verändern. Alles andere wäre wahrscheinlich sehr aufwendig...

CodeC


Interaktiver Ball

Es ist kein schweifender Ball (das sah ziemlich unpassend aus), aber mit der Maus kann nun ein Ball gelenkt werden, der ebenfalls die anderen abstößt. Diesmal habe ich die Bälle auch entgegen die Laufrichtung abstoßen lassen, hier ist der unnatürliche Effekt wieder da. Außerdem können die Bälle aus ihrer Ebene heraus gekickt werden.

Per Mausklick lässt sich zusätzlich die Farbe des Balls ändern.

CodeD


Hier noch andere Projekte in Processing für Digital Bauhaus Vorkurs.