Material: auf Flächen (faces)

Lernziel

Material kann nicht nur einem kompletten Objekt (Mesh) zugeordnet werden, sondern auch der kleinsten Flächeneinheit, den Faces. Wie das funktioniert, wird in dieser Lerneinheit gezeigt.

Handlungsanweisungen/Aufgaben

  1. Erzeuge den farbigen Würfel mit normalne Maus- und Tastatureingaben. Zähle die Anzahl der Maus- und Tastatur-Aktionen!

  2. Erzeuge einen Zylinder und ändere die Farbe der Zylinderwand; Deckel und Boden sollen eine andere Farbe erhalten. Hinweis: Sieh dir die Funktion getIndexOfFaces aus der Befehlsübersicht im Anhang an.

  3. Erstell das folgende Grundmuster für ein Schachbrett/Damespiel.

    ../../../_images/chessboard.png
  4. Stell einen Spielstein für Dame oder Schach auf ein Feld.

    ../../../_images/Boilly-Checkers-1803.jpg
    Louis-Léopold Boilly (1761–1845)
    Gemälde mit Dame spielender Familie
    (»jeu des dames«) 1

Ein Würfel mit drei Farben

Willst Du die Farbe (das Material) nicht einem ganzen Objekt zuweisen, sondern nur Teile des Meshes einfärben, so sind die passenden Flächen (faces) auszuwählen. Hier das Skript für diese Aufgabe.

Namen für Farben

Alle Farben sollten einen Namen erhalten, das ist der erste Schritt.


red = bpy.data.materials.new('Red')
blue = bpy.data.materials.new('Blue')
yellow = bpy.data.materials.new('Yellow')

Faces mit Material versehen

Das ist ein kleiner Trick, mit dem jede Fläche garantiert eine Farbe bekommt. Der Reihe nach:

  • Alle Flächen eines Mesh (im Würfel sind es genau sechs) werden in einer Liste (polygones) verwaltet. Jedes hat eine Nummer, den Listen-Index.

  • In einer for-Schleife werden alle Einträge verarbeitet.

  • Die Indexnummer wird mit dem Modulo-Operator durch drei geteilt und erhält damit entweder eine 0, eine 1 oder eine 2 als Rest der Division.

  • Dieser Wert wird dem Material-Index zugewiesen und damit erhält die Fläche (face) eine rote, gelbe oder blaue Farbe, denn auch die Materialien werden über einen Index verwaltet.

    setColor(ob, blue, (0, 0, 1))

    # apply the colors
    for face in ob.data.polygons:
Hinweis

In alten Tutorials, die sich auf Blenderversionen vor 2.68 beziehen, erfolgt die Zuweisung an eine Liste mit dem Namen faces. Das funktioniert nun nicht mehr und deshalb müssen diese Zeilen, wie hier gezeigt, auf polygones umgeschrieben werden.

Ergebnis

../../../_images/faces-colored-200.png