claim.gif
Linux Magazin Linux User Easy Linux International Linux Community
Erschienen in EasyLinux 02/2006

Künstliche 3D-Szenen mit KPovModeler

Virtuelles Stilleben

von Peter Kreußel


Räumliche Modelle zu erstellen ist die hohe Schule der Computer-Grafik: In drei Dimensionen zu denken, ist schwieriger als in zweien. Doch mit etwas Geschick ist es möglich, Bilder zu erstellen, die von einem Foto kaum zu unterscheiden sind.

Das englische Wort Raytracing bedeutet so viel wie "Zurückverfolgen des Lichtstrahlengangs". Raytracer arbeiten mit virtuellen Lichtquellen. Künstliche Oberflächen reflektieren und streuen dieses Licht. Mit diesem Verfahren lassen sich realistische Schattierungen und Spiegelungen errechnen. Eine virtuelle Kamera sorgt für eine naturgetreue Perspektive.

Dieser Artikel führt Sie in das Programm KPovModeler ein. Das ist ein KDE-Programm, das eine gute Balance zwischen Leistung und einfacher Bedienbarkeit bietet. KPovModeler arbeitet mit Povray zusammen, einem der ältesten und besten Raytracer für Linux: Das Konsolenprogramm Povray verarbeitet Dateien, die versierte Anwender in einer leistungsfähigen aber auch komplizierten Script-Sprache per Hand schreiben. KPovModeler übernimmt dies für Sie. Im Grunde merken Sie nichts davon, dass hinter den Kulissen ein weiteres Programm seine Arbeit verrichtet: KpovModeler ruft Povray auf Knopfdruck auf. Sie sehen die fertige Grafik in einem Vorschaufenster und können sie als Bitmap speichern.


Bitmap: Eine Grafikdatei, die die Farbinformation im Bild "Punkt für Punkt" abspeichert. Im Gegensatz dazu speichern Vektorgrafikdateien die Form der einzelnen Bildelemente. Sie eignen sich für Diagramme oder Cartoons. Bitmap-Dateien eigen sich dagegen für Fotos. Sie lassen sich unter anderem mit Gimp bearbeiten.

KPovModeler

Starten Sie KPovModeler nach der Installation von der Heft-CD durch Druck auf [Alt-F2] und Eingabe von kpovmodeler. Der Arbeitsbereich gliedert sich in sechs Unterfenster.

Möchten Sie mehr Details sehen, sollten Sie die Zoomfunktion benutzen: Klicken Sie auf eines der kleinen Vorschaufenster. Wenn Sie das Mausrad nach oben drehen, vergrößern Sie die Anzeige, Drehen nach unten verkleinert sie. Den Anzeigeausschnitt verschieben Sie mit gedrückter mittlerer Maustaste. Alternativ lässt sich die Anzeige auch mit den Pfeiltasten verschieben und mit [Strg-Pfeil-rechts] vergrößern, mit [Strg-Pfeil-links] verkleinern.

Abb. 1: KPovModeler bietet einen übersichtlichen Arbeitsbereich und ist trotz seiner vielen Funktionen einfach zu bedienen ist. Die Anordnung der Buttons im oberen Bereich des Fensters kann je nach Fenstergröße etwas anders ausfallen.

Räumliche Körper

Nach dem Start erstellt KPovModeler automatisch eine Kamera, eine Lichtquelle und einen Würfel im Zentrum der Szene. Bevor Sie Ihr erstes Objekt in KPovModeler erstellen, sollten Sie den Würfel aus der Standardszene löschen. Da bei umfangreichen 3D-Grafiken häufig viele Objekte übereinander liegen, wäre es schwer, diese direkt in der Vorschau zu aktivieren. Deswegen wählen Sie die einzelnen Objekte in KPovModeler stets in der Objektübersicht im linken Fensterbereich aus. Klicken Sie dort auf den Quader. Ein Rechtsklick gibt Ihnen die Möglichkeit, ihn zu löschen. Der Quader ist nun sowohl aus der Objektübersicht als auch aus der Vorschau verschwunden.

Aktivieren Sie den obersten Eintrag im Objektbaum, die Szene. Klicken Sie auf das Symbol Rotationsfläche am oberen Fensterrand. Abbildung 1 hilft Ihnen dabei, sämtliche Buttons zu finden, die Sie für diesen Artikel benötigen. KPovModeler fragt Sie, an welcher Stelle im Objektbaum Sie die neue Rotationsfläche einfügen möchten. Wählen Sie in dem sich nun öffnenden Popupmenü Objekte einfügen als die Option Erstes Unterobjekt. KPovModeler fügt dann eine Rotationsfläche als ersten Untereintrag der Szene ein. In den Vorschaufenstern sehen Sie einen kegelförmigen Körper mit zwei Spitzen.

Unter der Objektübersicht zeigt KPovModeler die Einstellungen zur Rotationsfläche. Wählen Sie hier für den Spline-Typ statt Lineares Spline die Option Kubisches Spline. In das Feld Name sollten Sie Flasche eingeben, damit Sie diese später, wenn die Szene mehr Objekte enthält, leicht wiederfinden können. Klicken Sie dann auf Anwenden ganz unten im Fenster. So gehen Sie vor, um aus der Rotationsfläche eine Flasche zu formen:

  1. Bei den kleinen gelben Quadraten am Rand und in der Mitte der Rotationsfläche handelt es sich um "Griffe". Wenn Sie diese mit der Maus verschieben, verändern Sie die Form des Körpers.
  1. Fügen Sie der Rotationsfläche weitere Griffe hinzu. Klicken Sie dazu der Reihe nach mit der rechten Maustaste auf die in Abbildung 2, Schritt 2 mit 1-5 bezeichneten Stellen und wählen Sie Punkt hinzufügen.
  1. Strecken Sie schließlich den flachen Reif zu einem Zylinder (Abbildung 2, Schritt 3). Anders als bei den meisten Programmen wählen Sie hierzu nicht ein Werkzeug aus, sondern die Eigenschaft skalieren für das entsprechende Objekt im Baum der Objektübersicht. Klicken Sie auf das +-Zeichen vor Flasche und aktivieren Sie den Eintrag skalieren. Verschieben Sie den Mauszeiger zur rechten, unteren Ecke der Rotationsfläche und drücken Sie die linke Maustaste. Bewegen Sie die Maus mit gedrückter Taste langsam nach oben, bis die Rotationsfläche die in Abbildung 2, Schritt 3 gezeigte Form annimmt. Falls Sie die Maus nicht genau senkrecht nach oben bewegen, verändert sich neben der Höhe auch die Breite. Korrigieren Sie dies, indem Sie die Maus leicht nach rechts oder links bewegen. Lassen Sie die Maustaste erst los, wenn der Körper die gewünschte Form angenommen hat.
  1. Die Flasche erhält ihre endgültige Form, indem Sie die gekennzeichneten Griffe nach innen schieben, um den Durchmesser am verschobenen Punkt zu verringern. Orientieren Sie sich an Abbildung 2, Schritt 4: Verschieben Sie Griffe so, dass sich die Form der dort abgebildeten Flasche ergibt.
  1. Wählen Sie in der Objektübersicht Flasche / verschieben. Schieben Sie dann die Flasche in der Vorschau etwas zur Seite, damit sie nicht beim Erstellen weiterer Objekte stört.

Abb. 2: Ein Zylinder dient als Grundform für die Weinflasche. Sie erzeugen ihn, indem Sie einem Rotationskörper zusätzliche Punkte hinzufügen und ihn in der Höhe strecken.

Das Weinglas wird Ihnen nun nicht mehr schwer fallen. Sie erstellen es nach dem gleichen Prinzip wie die Flasche:

  1. Fügen Sie eine Rotationsfläche ein. Geben Sie als Namen für die Rotationsfläche Glas ein.
  1. Erstellen Sie auf der Rotationsfläche durch Rechtklick und Wahl von Punkt hinzufügen vier weitere Punkte (Abbildung 3, Schritt 2).
  1. Dehnen Sie die Rotationsfläche in der Höhe.
  1. Verschieben Sie die Griffe entsprechend dem Profil des Weinglases (Abbildung 3, Schritt 4).
  1. Schieben Sie das Glas in der Vorschau zur Seite.

Abb. 3: Ein Weinglas erstellen Sie nach demselben Verfahren wie die Flasche: Dehnen Sie einen Rotationskörper und verschieben Sie die Griffe, bis sich das Profil des Glases ergibt.

Glänzende Oberfläche

Oberflächen bestehen in KPovModeler aus einer Reihe von Unterobjekten, die das übergeordnete Objekt jeweils genauer definieren. Eine Oberfläche (Textur genannt) besitzt ein Unterobjekt Pigment. Dieses stellt eine "Farbschicht" dar. Ein weiteres Unterobjekt legt die Farbe der Textur fest (Abbildung 4). Obwohl dies auf den ersten Blick etwas umständlich wirken mag, hat es einen wesentlichen Vorteil: Jede einzelne Einstellung eines Objekts lässt sich leicht auf andere Objekte übertragen. Möchten Sie, dass sich zwei Gegenstände in der Farbe gleichen, kopieren Sie den Eintrag Einfarbig des ersten Objekts (Abbildung 4) in die Zwischenablage und fügen ihn dem zweiten Objekt hinzu. Nur die Farbe des zweiten Objekts verändert sich. Die sonstige Oberflächenbeschaffenheit (Rauheit, Glanz etc.) bleibt erhalten.

Abb. 4: KPovModeler stellt Objekte und ihre Eigenschaften in einer Baumansicht dar. So bleibt die Übersicht auch bei größeren Szenen gewahrt.

Markieren Sie nun das Glas. Klicken Sie auf den Button Textur in der Buttonleiste. Die Textur benötigt zwei Unterelemente, ein so genanntes Finish (eine "Oberflächenbeschaffenheit", die Eigenschaften wie Glanz, Rauheit und Stärke der Spiegelungen beinhaltet), sowie ein Pigment, das die Farbe festlegt. Aktivieren Sie die Textur und klicken Sie dann auf den Finish-Button. Da KPovModeler Unterobjekte stets an das aktive Objekt anhängt, aktivieren Sie die Textur erneut. Fügen Sie dann ein Pigment ein. Das Pigment ergänzen Sie noch durch einen Untereintrag Einfarbig. Markieren Sie Finish in der Objektübersicht und stellen Sie im Einstellungsbereich direkt darunter die Werte ein, die Sie in Abbildung 5 finden. In den Feldern Phong und Phong-Größe passen Sie Intensität und Größe der Glanzlichter an, die die Beleuchtung auf die Objekte wirft.


Phong-Schattierung: Je nach Winkel des einfallenden Lichts wird die Oberfläche bei diesem Verfahren heller oder dunkler dargestellt.

Abb. 5: Das "Finish"-Objekt ist in KPovModeler für Oberflächeneigenschaften wie Glanz und Rauheit verantwortlich. Die Abbildung zeigt die Einstellungen für eine spiegelnde Glasoberfläche.

Auch der Flasche fügen Sie ein Finish und ein Pigment hinzu. Ebenso ergänzen Sie das Pigment um den Untereintrag Einfarbig. Stellen Sie nach Klick auf den Balken hinter Farbe im Einstellungsbereich ein dunkles Grün ein. Die Einstellungen für das Finish entnehmen Sie wieder Abbildung 5.

Schnappschuss

Wenn Sie nun auf den Button Szene rendern (englisch: render = darstellen) klicken, sind Sie sicherlich vom Ergebnis enttäuscht: Das Weinglas ist im Dunkel gerade noch zu erkennen, die Flasche verschwindet praktisch vollständig im Schwarz der Umgebung. Die eine Lichtquelle in der Szene reicht offensichtlich nicht aus, um diese auszuleuchten. Das liegt allerdings nicht daran, dass die virtuelle Lampe zu schwach wäre. Der Grund ist vielmehr, dass es keine Zimmerwände gibt, die die Lichtstrahlen reflektieren, ebensowenig eine Atmosphäre, die durch Streuung für eine gleichmäßige Hintergrundbeleuchtung sorgen würde. Die Umweltbedingungen in unserer Szene gleichen bisher den Verhältnissen im Weltraum.

Glücklicherweise macht KPovModeler es Ihnen leicht, "irdische" Bedingungen herzustellen: Markieren Sie Szene in der Objektübersicht. Ein Klick auf Himmelskugel fügt dem Projekt eine große Kugel hinzu, die die ganze Szene umgibt. Diese können Sie zwar in der Vorschau nicht sehen, Sie können ihr jedoch wie jedem anderen KPovModeler-Objekt eine Oberfläche zuweisen. In unserem Beispiel kommt eine einfache Graufärbung zum Einsatz: Fügen Sie der Himmelskugel ein Pigment hinzu (Himmelskugel markieren und auf Pigment klicken). An das Pigment hängen Sie die Eigenschaft Einfarbig an (nach Markieren von Pigment auf den Button Einfarbig klicken. Nach Auswahl von Einfarbig in der Objektübersicht geben Sie den Wert 0,93 für Rot, Grün und Blau im Einstellungsbereich in.

Nun sehen Sie nach dem Rendern Flasche und Glas deutlich vor einem hellgrauen Hintergrund. Allerdings schweben die beiden Gegenstände unwirklich im Raum. Abhilfe schafft ein Bistrotisch, der das virtuelle Stillleben schließlich vervollständigt.

Beginnen Sie mit dem Modellieren der Tischplatte, indem Sie Szene in der Objektübersicht markieren und auf den Button Zylinder am oberen Fensterrand klicken. Markieren Sie den Zylinder in der Objektübersicht und geben Sie als Name Tischplatte ein. Sie verwandeln den Zylinder in eine runde Scheibe, indem Sie den Untereintrag skalieren aktivieren und im Einstellungsbereich die Werte 6 für x und y, sowie 0,15 für z einstellen. Für das Tischbein fügen Sie erneut einen Zylinder ein. Skalieren Sie diesmal auf die x, y und z-Werte von 0,4, 10 und 0,4. Dass die obere Hälfte des Tischbeins nun durch die Tischplatte stößt, wird erst später korrigiert.

Den beiden neuen Objekten fehlt noch eine Oberfläche. Für das Tischbein genügt eine einfache Graufärbung: Fügen Sie ein Pigment ein und ergänzen Sie dieses durch einen Untereintrag Einfarbig. Setzen Sie die Rot, Grün und Blau-Werte auf 0,3. Der Tisch hingegen soll in edlem Marmorfinish erstrahlen. Eine der Stärken von KPovModeler und des im Hintergrund arbeitenden Renderers Povray ist die Fähigkeit, realistisch wirkende Oberflächen zu erzeugen. So erstellen Sie die Marmoroberfläche;

  1. Fügen Sie der Tischplatte ein Pigment als Unterobjekt hinzu.
  1. Ergänzen Sie das Pigment durch ein Muster und, unterhalb des Muster-Eintrags, durch eine Farben Map.
  1. Die Farben-Map erweitern Sie um vier weitere Untereinträge vom Typ Einfarbig.
  1. Markieren Sie dann den Eintrag Farben Map in der Objektübersicht. Sie finden im Einstellungsbereich eine Liste Map Werte mit vier Einträgen. Verändern Sie die Werte zu 0; 0,25; 0,5 und 1,0.
  1. Markieren Sie dann nacheinander die Einfarbig-Einträge. Stellen Sie durch Klick auf den Farbbalken ganz oben im Einstellungsbereich jeweils die Farbschattierungen ein, die Sie in Abbildung 6 oben aufgelistet finden.
  1. Nun sollten Sie der Tischplatte noch ein Finish hinzufügen. Die Einstellungen für den Finish-Eintrag finden Sie in derselben Abbildung.

Abb. 6: So ergibt sich das Marmor-Finish der Tischplatte: Der obere Teil der Abbildung zeigt die Farbschattierungen in der Farb-Map, der untere die Einstellungen des Finish.

Inszenierung

Um den Tisch fertigzustellen, schieben Sie das Tischbein nach unten, bis das Ende sich innerhalb der Tischplatte befindet: Klicken Sie auf das Plussymbol vor dem Tischbein und wählen Sie den Untereintrag verschieben. Nach dem gleichen Verfahren platzieren Sie das Glas und die Flasche so, dass ihre Unterkanten bündig mit der Oberfläche des Tischs abschließen. Hierfür ist es sinnvoll, die Anzeige mit dem Mausrad zu vergrößern. Falls erforderlich, verschieben Sie den Bildausschnitt mit der linken Maustaste. Das rechte, untere Unterfenster zeigt die Vorschau aus der Kameraperspektive, wie sie im Rendering erscheinen wird.

Wenn Sie ein Objekt in einem der Vorschaufenster verschieben, sehen Sie in der perspektivischen Kameravorschau, dass Ihre Bewegungen immer auf zwei Dimensionen beschränkt bleiben: Im linken oberen Vorschaufenster können Sie das Glas nur nach oben, unten und quer über den Tisch verschieben. Hier schafft der Blick von oben Abhilfe (linkes unteres Vorschaufenster, Abbildung 7): Dort ist es möglich, Flasche und Glas frei über den ganzen Tisch zu bewegen. Dafür ist die Höhe der Gegenstände nicht zu erkennen. Deswegen ist es beim Positionieren im 3D-Raum unbedingt erforderlich, mindestens zwei unterschiedliche Perspektiven zu verwenden.

Verschieben Sie die Flasche und das Glas nun so, dass sich eine angenehme Stillleben-Szene ergibt. Wenn Sie in der Draufsicht arbeiten, müssen Sie noch berücksichtigen, dass "vorne" in der perspektivischen Darstellung "Richtung Kamera" bedeutet: Die Kamera sehen Sie rechts unten in der Szene. Entsprechend müssen Sie die Objekte platzieren (Abbildung 7); die Vorschau aus der Kameraperspektive hilft Ihnen dabei. Allerdings können Sie in dieser Vorschau die Objekte nicht bewegen.

Abb. 7: Mit den vier Vorschaufenstern haben Sie die Anordnung der Objekte im 3D-Raum stets im Blick. Anders als andere 3D-Grafikprogramme erspart Ihnen KPovModeler des Umschalten zwischen den Perspektiven.

Nun sieht das Rendering dem endgültigen Ergebnis schon ähnlicher. Doch eine leere Weinflasche ist kein schöner Anblick. Zudem stört, dass die Flasche keinen Boden hat. Indem Sie die Flasche mit Wein füllen, machen Sie diesen Makel unsichtbar. Außerdem lernen Sie ein weiteres wichtiges Verfahren des 3D-Modellings kennen: Die Weinfüllung entsteht aus einem Duplikat der Flasche durch Subtraktion des oberen Teils. Dieses Verfahren heißt Constructive Solid Geometry.


Constructive Solid Geometry: (Konstruktive Festkörpergeometrie) Ein Verfahren beim Erstellen räumlicher Objekte auf dem Computer, bei dem komplexe Objekte aus der Addition, Subtraktion oder Schnittmenge einfacher Körper entstehen.

So erstellen Sie die Füllung der Weinflasche mit Hilfe einer Subtraktion:

  1. Fügen Sie nach Markieren von Szene eine Differenzmenge hinzu, indem Sie den entsprechenden Button am oberen Bildschirmrand drücken.
  1. Markieren Sie die Differenzmenge und fügen Sie einen Zylinder ein. Platzieren und skalieren Sie ihn mit Hilfe der entsprechenden Untereinträge so, dass er gerade den Raum einnimmt, der dem leeren Teil der Weinflasche entspricht (Abbildung 8). Dabei ist nicht entscheidend, wie weit der Zylinder seitlich übersteht.
  1. Markieren Sie dann in der Objektübersicht die Flasche und kopieren Sie sie mit [Strg-C] in die Zwischenablage. Aktivieren Sie die Differenzmenge und fügen Sie mit [Strg-V] die Flasche ein. Im Popupmenü, das sich öffnet, wählen Sie Erstes Unterobjekt.

Die Flasche steht nun vor dem Zylinder in der Differenzmenge. Wie bei einer Differenz aus zwei Zahlen ist die Reihenfolge wichtig: Wenn Sie umgekehrt die Flasche von dem Zylinder abziehen würden, wäre das Ergebnis ein Zylinder mit einer Öffnung an der Unterseite und nicht die gewünschte Form.

Abb. 8: Komplexe räumliche Körper lassen sich häufig am leichtesten durch Addition oder Subtraktion aus einfachen Formen erstellen. Die Form des Weins entsteht durch Subtraktion eines Zylinder vom Modell der Flasche.

Weiterhin ist noch zu bedenken, dass das Objekt "Wein", das Sie sich hier als festen Körper und nicht als Flüssigkeit denken sollten, etwas kleiner sein muss als die ihn umgebende Flasche: Das Glas der Weinflasche hat eine gewisse Dicke. Markieren Sie also die Flasche innerhalb der Differenzmenge und wählen Sie den Untereintrag skalieren. Geben Sie für x, y und z den Wert 0,99 ein. Nun muss der Wein noch seine dunkelrote Farbe erhalten. Markieren Sie die Differenzmenge und fügen Sie ihr ein Pigment hinzu. Ergänzen Sie das Pigment noch durch einen Untereintrag Einfarbig. Nach markieren von diesem stellen Sie eine dunkelrote Farbe ein, indem Sie auf den Balken hinter Farbe klicken. Dann ist es wieder an der Zeit, das Ergebnis durch ein neues Rendering zu überprüfen.

Der letzte Schliff

Um eine bessere Ausleuchtung zu erzielen, sollten Sie noch eine weitere Lichtquelle hinzufügen: Markieren Sie Szene, klicken Sie auf Lichtquelle und wählen Sie daraufhin Letztes Unterobjekt. Stellen Sie für das Licht unter Position folgenden Werte ein: für x 8, für y 5,5 und für y 3. Die Abbildungsqualität lässt sich noch stark verbessern, indem Sie andere Werte für den Raytracer einstellen: Klicken Sie auf den Button Render Modi und wählen Sie Bearbeiten. Unter Größe lässt sich eine höhere Auflösung für das Rendering wählen. Im Reiter Qualität sollten Sie im Feld Qualität die Stufe 11 wählen und das Kontrollkästchen Kantenglättung ankreuzen. (pkr)

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2010 Linux New Media AG | Last modified: 2007-04-05 11:24

[Linux-Magazin] [LinuxUser] [Linux-Community] [Linux Events] [Linux Magazine] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]