Simulation eines Kabelbaumes:
Hier eine Lösung für einen verdrillten Kabelbaum
basierend auf einer Idee von Jim Dunlop.
Schritt 1: Eine Spline-Kurve
für den Kabelbaum.
Wir erstellen eine Kurve unter Verwendung von "spline" längs des Kabelbaumes.
Zu Testzwecken lassen wir diese mit einer relativ geringen Anzahl von Kugeln zeichnen.
Wichtig:
Punkte annähernd äquidistant platzieren!
Senkrechte Stellen vermeiden!
Loopings + zu scharfe Knicke vermieden!.
#declare Wire_R = 0.4;// radius
// spline:
#declare Test_Spline =
spline { natural_spline
-0.25, <-1.0, 0.0, 0>,
0.00, <-0.0, 0.0, 0>, //start
0.25, < 1.7, 0.05, 0.05>,
0.35, < 2.0, 0.15, 0.25>,
0.60, < 2.0, 0.65, 1.2>,
0.80, < 0.5, 0.90, 2.0>,
1.00, < 0.2, 1.50, 2>, // end
1.25, < 0.2, 2.00, 2>
} //-------------------------------
Schritt 2: Deklarierung des Querschnitts
des Kabelbaumes.
Die Drahtlitzen werden um den zentralen Draht in der Silhouette des Kabelbaumes arrangiert
wie im nebenstehenden Bild gezeigt.
Der trickreiche Algorithmus, den Jim hierzu enwickelte, funktioniert gut bis zu 61 Drahtlitzen.
Er ist zu umfangreich um hier im Detail dargestellt zu werden. Für näheres siehe die entsprechenden Szenendateien.
Schritt 3: Verwendung des Spline_Trans-Makros
Makro vom Rune S. Johansen
(Dieses Makro wird normalerweise dazu benutzt um Flugzeuge auf ihrem Kurs zu lenken.
Ein Beispiel kann man hier sehen: Animation mit Spline-Kurven.)
Anstelle einer einzelnen Kugel, wie in Schritt 1,
verwenden wir nun ein Objekt namens "object{ HarnessSilhouette ..}"
und setzen es auf die Spline-Kurve mittels dem Makro Spline_Trans.
Zudem vergrößern wir die Dichte der einzelnen Elemente
um durchgehende Kabelstränge zu erhalten:
Mit dem ersten Macro kann man ein reine Kabelbaumsegment erzeugen, verdreht oder nicht, längs einer Splinekurve (oder Teilen davon):
object{ HarnessSegment(
19,// # of wires in bundle, max.61
0.020,// >0. Radius of wire
800, // # of samples in spline
0, // # of 360 degress turns
Test_Spline, // spline name,
<0.7,0,0>,// base color
0.25, // color variation,
0, // Start point on spline
1, // End point on spline
) //----------
} //-----------------------------
Mit dem zweiten Makro kann man zusätzlichg am Anfang und Ende Objekte an den Kabelbaum anfügen:
object{ CableHarness(
12,// # of wires in bundle, max.61
0.020,// >0. Radius of wire
800, // # of samples in spline
3.5, // # of 360 degress turns
Test_Spline, // spline name,
<0.7,0,0>,// base color
0.25, // color variation,
0, // Start point on spline
1, // End point on spline
BeginObject,// to put on beginning
EndObject, // to put on end
) //----------
} //-----------------------------
|
Eine Splinekurve für den Kabelbaum.
rot = Splinestützpunkte, violett = Steuerpunkte
|