« 2016-02-29 | Basteleien | 2015-01-20 » |
Basteleien: 2015-02-14: Kabelmathematik
In meinem Maschinenmodell wollte ich unbedingt auch Kabel sehen. Nur ein paar, damit es schön aussieht. Das Rendern von Kabeln im 3D-Modell ist aber gar nicht so einfach, wenn man es schön haben will. Kabel sind irgendwie nicht einfach Kugeln, Zylinder, Kegel, Quader, die man irgendwie schneidet oder vereint. Kabel sind rund und krumm.
Im 2D-Raum habe ich schon oft Bézier-Kurven benutzt, um runde und krumme Dinge zu malen. Das Prinzip ist sehr weit verbreitet, zum Beispiel zum Anzeigen von Schrift: z.B. die Schrift, die gerade in Ihrem Browser angezeigt wird, ist bestimmt so hinterlegt, daß die einzelnen Buchstaben definiert sind, indem sie von Bézier-Kurven umrandet werden. Das sieht schön aus, weil man damit natürlich runde Strukturen malen kann.
Bézier-Kurven gehen auch in 3D. Hier das Ergebnis von ein paar Stunden Programmierung, bei der ich in drei Schritten zu immer besseren Ergebnissen gekommen bin. Inzwischen sieht es nach Kabel aus.
Die Kabel sind wie folgt aufgebaut: mithilfe einer Folge von kubischen 3D-Bézier-Kurven wird der Verlauf des Kabels bestimmt. Dann wird dieser Verlauf gerastert, indem Scheiben aus dem Kabel geschnitten werden. Der Abstand der Scheiben wird dynamisch so gewählt, daß der Winkel, in dem zwei benachbarte Scheiben stehen, nicht zu groß wird. Dadurch werden enge Kurven in mehr Scheiben zerschnitten als gerade Strecken.
Paare dieser Kabelscheiben werden dann zu zylinderähnlichen Rohrstückchen verbunden. Es sind keine echten Zylinder, da die Endscheiben nicht unbedingt parallel sein müssen, sondern sich entlang des Kabels entsprechend der Richtung des Kabels ändern. Nimmt man diese Kabelstückchen zusammen, fehlt nur noch an jedem Ende eine Kappe, die genau wie bei einem normalen Zylinder aufgebaut wird.
Fertig ist das Kabel. Jetzt kann es in die Maschine.