SS Great Eastern

MAKING OF

Modelling - Texturing - Animation - Compositing - Sound - Links

Animation

 Bugwellen mittels Xpresso in C4D

Bow Wave Eine vernüftige Bugwelle zu animieren sollte eine kniffelige Aufgabe werden. Ziel war es eine Wasser-Ebene mittels Deformern wellenförmig zu animieren.
Die Wellen sollen natürlich am Bug beginnen und längsseits Richtung Heck V-förmig abebben. Nach mehreren Versuchen stellte sich heraus, dass Spline-Deformer und eine gedämpfte Schwingung ein sinnvoller Weg sein würde.

Im folgenden wird erklärt wie sich so etwas in Cinema 4D mit Bordmitteln, Xpresso und etwas C.O.F.F.E.E. umsetzen lässt.

 

Bestens geeignet für die Aufgabe ist der Formel-Spline, dem man eine zeitabhängige gedämpfte Schwingung beibringt.

Gedämpfte Schwingung:
X(t) = t
Y(t) = Amplitude * exp(-Dampening * t) * sin(Frequency * t * pi + Speed * pi)
Z(t) = 0

Nachzulesen bei Jürgen Meier www.3d-meier.de.

Objekte

  • 1 Nullobjekt
  • 2 Formel-Splines
  • 2 lineare Splines mit jeweils 2 Punkten
  • 2 Spline-Deformer
  • 1 Ebene (entsprechend hoch unterteilt, evt. im Hypernurbs)
Im Objekt-Manager sieht das wie folgt aus:
Objekt-Manager

Benutzerdaten
Um die Parameter interaktiv ändern zu können, legt man Benutzerdaten für das Nullobjekt bowWave an:
Benutzerdaten
Die Checkbox Waveform legt fest ob die Amplitude auch negative Werte annehmen darf, welche Option man nutzt hängt vom gewünschten Ergebnis ab. Einfach ausprobieren.

Dem Nullobjekt bowWave vergibt man einen Xpresso-Tag.

Xpresso
Die Parameter aus den Benutzerdaten bowWave sollen nun mittels Xpresso auf die Formel-Splines übertragen werden.
xpresso 1
Da die Formel-Splines mit einem String gefüttert werden wollen, braucht man noch einen C.O.F.F.E.E.-Node.
Im C.O.F.F.E.E.-Node setzt man aus den Benutzerdaten und Formelabschnitten den benötigten String zusammen.
Desweiteren fragt man die Checkbox Waveform ab.

C.O.F.F.E.E.-Node:

var str1;
var str3 = "* exp(-";
var str5 = " * t) * sin(";
var str7 = " * t * PI - ";
var str9 = "))";

main()
{
if (Waveform == 1) 
str1 = "("; 
else
str1 = "abs(";
Output1 = (stradd(str1,Amplitude,str3,Dampening,str5,Frequency,str7,Speed,str9));
}
Für die Animation werden die Benutzerdaten Speed mit dem Zeit-Node multipliziert.
Die Benutzerdaten Frequency und Dampening werden mit 1000 dividiert.
Das Ergebnis wird den Formel-Splines übergeben.

Attribute Formel-Spline
Bei den Formel-Splines müssen nun noch die Werte t-Min, t-Max und Schritte entsprechend der Szene eingestellt werden.
Im Beispiel sieht dies so aus:
attribute
Damit hat man die animierten Ziel-Splines für die Spline-Deformer. Man braucht nur noch die entsprechenden Orginal-Splines und kann somit die gewünschte Ebene wellenförmig deformieren.
Sinnvollerweise orientieren sich die Anfangs- und Endpunkte des Orginal-Splines am Offset 0% und 100% des Zielsplines. Dies lässt sich einfach mit Xpresso realisieren, indem die X/Z-Koordinaten der jeweiligen Punkte aneinander geheftet werden. Die Y-Koordinaten bleiben frei editierbar, somit lassen sich die Wellen weiterhin anpassen.
xpresso 2

Animation
Nun noch die Zielsplines V-förmig anordnen und entsprechend dem Schiffs-Objekt positionieren und mit den Benutzerdaten die Bugwellen nach Wunsch anpassen. Alles in ein animiertes Nullobjekt und auf große Fahrt gehen.

Tip
Mit an den Zielsplines gehefteten Partikel-Emittern und einer dem Schiff mitgeführten Schaumkronentextur (mit Alpha auf die Wasserebene gemapt) lässt sich die Bugwelle optimieren.

Projektdatei
codeworkers_bowWave.c4d (8.5)

www.codeworkers.de