4. März 2021 Tutorial, Blender, PCB, 3D

PCBs rendern (Teil 1) - Vorbereitung, Texturen und UV Unwrapping

Florian Winkler

In dieser Tutorial-Reihe möchten wir das Vorgehen erklären, wie man aus 3D Modellen von PCBs realistische Render erzeugen kann. Der erste Teil befasst sich mit der Vorbereitung der 3D Objekte, den benötigten Texturen und dem sogenannten UV Unwrapping.

Auf GitHub stellen wir ein Beispielprojekt zur Verfügung. Dort könnt ihr die Blender Dateien herunterladen, welche ein fertiges Setup mit Modell, dazugehörigen Texturen und Shader Einstellungen beinhalten.

Vorbereitung

Die Grundlage ist natürlich das 3D Modell der Platine. Zusätzlich können auch die darauf platzierten Bauteile importiert werden. Diese werden allerdings erst in Teil 3 berücksichtigt. Um die Modelle in Blender zu importieren, muss die Platine zuerst aus dem CAD Programm, in der sie designt wurde, exportiert werden. Dies kann je nach Programm unterschiedlich ablaufen. In unserem Fall haben wir aus Altium .step Dateien exportiert und die mithilfe des kostenlosen Tools DesignSpark Mechanical in eine .obj Datei und zugehörige .mtl Datei umgewandelt.

Nachdem man die 3D Objekte in Blender importiert hat, lohnt es sich erstmal aufzuräumen. Damit ist gemeint, dass man die Geometrie der Objekte vereinfacht, zusammengehörige Objekte miteinander verschmilzt und mithilfe von Collections Bauteile gruppiert. Dies erleichtert die Arbeit mit den Objekten und verbessert die Performance von Blender. Im nachfolgenden werden diese Schritte näher erläutert.

Objekte verschmelzen (Join)

Manchmal kommt es vor das einzelne Bauteile aus vielen kleinen Einzelobjekten bestehen. Ein Beispiel ist der im Screenshot abgebildete USB-C Konnektor, welcher sich aus circa 1000 Objekten zusammensetzt.

Um diese komplexe Geometrie vereinfachen zu können, müssen alle Einzelobjekte zu einem Mesh bzw. Körper verschmolzen werden. Damit man nicht alle Einzelteile mühselig auswählen muss, lohnt es sich die Suchfunktion im Outliner zu nutzen. Im Screenshot kann man sehen, dass nach dem Bezeichner J1 gesucht wurde und deshalb im Outliner alle Objekte aufgelistet werden, die zum Bauteil J1 gehören. Anschließend kann man mit A alle gefilterten Objekte auswählen und im Viewport über Strg + J verschmelzen. Dabei ist es wichtig, dass ein Objekt gelb umrandet ist.

Geometrie vereinfachen (Limited Dissolve)

In Blender gibt es eine einfache Methode Meshes über das sogenannten Limited Dissolve zu vereinfach. Der detailreiche USB-C Konnektor soll nochmal als Beispiel dienen. Dieser besitzt nach dem Verschmelzen 31824 Flächen und ist somit recht komplex!

Im Viewport erreicht man die Limited Dissolve Funktion über das Menü Mesh > Clean Up > Limited Dissolve. Nach der Vereinfachung besitzt der USB-C Konnektor nur noch 6639 Flächen. Die geometrische Komplexität konnte somit deutlich reduziert werden (um 79%)!

Das Limited Dissolve lohnt sich auch für die Platine, die aufgrund von Löchern oder Vias ziemlich viele Kanten und Flächen aufweisen kann. Für kleine Bauteile oder ICs bringt diese Methode in der Regel keine nennenswerte Vorteile.

Objekte in Collections gruppieren (Move to Collection)

Dieser Schritt ist optional und dient lediglich der besseren Strukturierung und Organisation der Objekte im Outliner. Ähnlich wie beim Verschmelzen von Objekten ist es empfehlenswert Bauteile über deren Bezeichner zu suchen. Im Screenshot wurde bspw. nach Kondensatoren gefilter mithilfe des Suchmusters \\C[0-9] (das heißt, dass der Objektname nach dem Backslash ein "C" gefolgt von einer Zahl zwischen 0 bis 9 aufweisen soll).

Nachdem ein passendes Suchmuster eingegeben wurde, kann man alle gefilterten Objekte mit A auswählen und mit M das Move to Collection Menü aufrufen. Dort kann man dann entscheiden, ob die ausgewählten Objekte in eine bestehende oder neue Collection verschoben werden sollen. Im hier dargestellten Beispiel wird eine neue Collection mit dem Namen "Capacitors" erstellt.

Texturen

Für das Darstellen von Leiterbahnen oder Lötstopplack auf dem 3D Modell der Platine werden verschiedene Texturen benötigt. Diese Texturen sind Schwarz-Weiß Bilder, die vom CAD Programm generiert werden. Folgende Bilder werden benötigt:

  • Copper Layer
  • Silkscreen Layer
  • Soldermask Layer

Falls Oberseite und Unterseite sichtbar sein sollen, muss zwischen Top und Bottom unterschieden werden. Man benötigt in diesem Fall also sechs Texturen für die Platine.

In unserem Beispielprojekt haben wir eine Auflösung von circa 4600 x 3300 Pixeln (hier sollte nicht gespart werden) für die PCB Texturen gewählt. Je nach CAD Programm gestaltet sich der Export der Bilder unterschiedlich. Wenn das CAD Programm keinen direkten Export als PNG Bild zulässt, ist eine Möglichkeit die Layer als Vektorgrafik oder PDF zu exportieren und anschließend in GIMP zu öffnen. Dort kann das Bild zurecht geschnitten und als PNG Bild gespeichert werden.

Im UV Editor können die Bild-Dateien in Blender geöffnet werden. Es sollten nun drei bzw. sechs Texturen zur Verfügung stehen (siehe Screenshot).

UV Unwrapping

Beim UV Unwrapping werden zwei-dimensionale Texturen auf die Flächen eines drei-dimensionalen Objekts zugewiesen. Um die Texturen auf die Oberseite bzw. die Unterseite zu projizieren, kann man die Project from View Methode nutzen. Dabei ist es wichtig, dass der Viewport die Top-Perspektive einnimmt, bevor das Unwrapping durchgeführt wird. Man kann über Numpad 7 in die Draufsicht wechseln. Im Edit-Mode kann man über U das UV Mapping Menü öffnen und Project from View ausführen.

Nach dem Unwrapping sieht man im UV Editor die projizierte Geometrie der Platine (links im oberen Screenshot). Diese muss jetzt auf die Texturen ausgerichtet werden. Beim Ausrichten sollte darauf geachtet werden, dass alle Flächen sowohl im Viewport als auch im UV Editor ausgewählt (orange) sind, damit alles gleichmäßig skaliert und verschoben wird. Zur Ausrichtung eignen sich die Löcher und der Umriss der Platine.

Es kann vorkommen, dass Bottom und Top Layer verschoben sind. Wenn dies der Fall ist, benötigt man zwei unterschiedliche UV Maps für das Platinen Objekt. UV Maps können im Properties Fenster unter Object Data > UV Maps verwaltet werden und im UV Editor zwischen den UV Maps gewechselt werden (siehe rote Umrahmungen im Screenshot).

Fazit

Die 3D Modelle und die Texturen sind nun für die nachfolgenden Schritte vorbereitet. Im nächsten Teil wird die Konfiguration des Shader der Platine betrachtet. Der Shader entscheidet anhand der eingerichteten Texturen, an welchen Stellen Kupfer, Lötstopplack oder Beschriftungsdruck sichtbar ist und wie diese verschiedenen Materialien dargestellt werden sollen.

Nächster Teil: PCBs rendern (Teil 2) - Shader Setup