Transformationen: translate, rotate, scale, mirror, color

LektionOpenSCAD: 3D-Körperca. 3 Min. Lesezeit

Begriffe vorab

  • Transformation: Operation, die ihre Kind-Objekte verschiebt, dreht, skaliert oder färbt.
  • Kind-Objekt: Objekt, das direkt nach der Transformation folgt.
  • Rechte-Hand-Regel: Daumen entlang der positiven Achse, die Finger zeigen die Drehrichtung.
  • Affine Matrix: Matrix, die Verschiebung, Skalierung und Scherung vereint.
  • Alpha: Deckkraft einer Farbe von 0 bis 1.

Wirkung und Reihenfolge

Eine Transformation steht vor den Objekten, auf die sie wirkt. Mehrere Transformationen werden laut Doku von rechts nach links angewendet: Die der Geometrie nächste wirkt zuerst. Deshalb liefert translate(...) rotate(...) cube(...) etwas anderes als rotate(...) translate(...) cube(...).

translate und rotate

translate(v = [x, y, z]) verschiebt entlang eines Vektors. rotate([ax, ay, az]) dreht um die Achsen in Grad. Die Doku legt fest: Werden mehrere Achsen angegeben, dreht OpenSCAD erst um x, dann um y, dann um z. Zusätzlich gibt es rotate(a = Winkel, v = [x, y, z]) für eine beliebige Achse, und in 2D genügt rotate(45) – das dreht um die Z-Achse. Es gilt die Rechte-Hand-Regel.

scale, resize, mirror

  • scale([sx, sy, sz]) multipliziert die vorhandenen Maße mit Faktoren.
  • resize(newsize = [x, y, z]) setzt die Zielmaße. Eine 0 lässt die Dimension unverändert, auto = true skaliert Nullmaße proportional mit. Achtung: resize ist eine CGAL-Operation und rechnet auch in der Vorschau mit voller Geometrie.
  • mirror(v) spiegelt an einer Ebene durch den Ursprung mit Normalenvektor v. Es verdoppelt nichts, sondern spiegelt das Objekt.

multmatrix

multmatrix(m) wendet eine 4×3- oder 4×4-Matrix an (Skalierung, Scherung, Verschiebung in einer Matrix). Die vierte Zeile wird auf [0,0,0,1] gesetzt und darf fehlen.

color

Formen: color([r, g, b, a]) mit Werten von 0.0 bis 1.0, color([r, g, b], alpha = 1.0), color("#hexwert") (Formate #rgb, #rgba, #rrggbb, #rrggbbaa) und color("name", alpha) mit SVG-Farbnamen (Groß-/Kleinschreibung egal), dazu "transparent". Die Doku rät, transparente Formen nach den undurchsichtigen zu zeichnen, damit diese hindurch sichtbar bleiben.

// Reihenfolge zählt: rechts nach links
color("tomato")    cube(10);
color("steelblue") translate([20, 0, 0]) rotate([0, 0, 45]) cube(10);
color("seagreen")  rotate([0, 0, 45]) translate([20, 0, 0]) cube(10);

// Spiegeln und Skalieren
color("gold") translate([0, 40, 0]) {
    cube([10, 5, 5]);
    mirror([1, 0, 0]) cube([10, 5, 5]);
}
color("#8a2be2", 0.5) translate([30, 40, 0]) scale([1, 2, 0.5]) sphere(r = 8);

Das blaue Quadrat wird erst gedreht und dann verschoben (die Drehung wirkt zuerst um den Ursprung und dann um die Würfelecke), das grüne umgekehrt: erst verschieben, dann um den Ursprung drehen – es landet an einer ganz anderen Stelle.

Wenn ein Objekt „an der falschen Stelle“ landet, ist meist die Reihenfolge von translate und rotate vertauscht.

Zum Selbermachen

  1. Vertausche translate und rotate im Beispiel und beschreibe, was sich ändert.
  2. Färbe ein Objekt halbtransparent und lege ein undurchsichtiges dahinter.

Verwandte Themen

OpenSCAD → Die übrigen Lektionen dieser Themenwelt; Informatik: Grundlagen → „Algorithmen und Berechenbarkeit“ für das Denken in Schritten.

Prüfstatus: Belegt (Stand 1. Oktober 2026): Wirkungsreihenfolge von rechts nach links, die Drehreihenfolge x, y, z, die Formen von rotate, scale, resize (inkl. CGAL-Hinweis), mirror, multmatrix (vierte Zeile) und color (Formate, Hex, SVG-Namen, transparent, Zeichenreihenfolge) wurden gegen die Seite „Transformations“ geprüft. Alle Codebeispiele dieser Lektion wurden mit OpenSCAD 2026.09.18 (lokale Installation) ausgeführt und liefen ohne Fehler und Warnungen. Nicht einzeln belegt: die Erklärungen in eigenen Worten, die Beispiele als solche (konstruiert) und die Wertungen.

Quellen

  • OpenSCAD User Manual – Transformations (en.wikibooks.org/wiki/OpenSCAD_User_Manual/Transformations)
  • OpenSCAD Cheat Sheet (openscad.org/cheatsheet, bezieht sich auf Version 2021.01)

Alles zu „OpenSCAD: 3D-Körper“