Objekte nutzbar machen
Mittwoch, 24. Oktober 2007 | Autor: Nikita
Als ob es nicht schon ärgerlich genug wäre, dass es recht wenige kostenlose Objekte im Netz gibt, sind die vorhandenen oft auch noch inkompatibel zu TG2. Oft werden beispielsweise Texturen nicht geladen. Dabei lässt sich gerade dieses Problem mit wenigen Handgriffen beheben! Wie das geht, wird hier am Beispiel des Französischen Ahorns (Montpelier Maple, Acer monspessulanum) von der Website der TU Dresden beschrieben.
Fehlende Texturen sind sehr leicht zu erkennen – das gesamte Objekt, oder Teile davon sind schlichtweg schwarz. Hier reicht es, die Texturen wieder zuzuordnen. Das passiert im Internen Netzwerk des Objektes (Rechtsklick auf den Node – Internal Network).
Im schlechteren der beiden Fälle sieht dieses so aus:
Wir haben nur einen Multi-Shader, sonst nichts. Hier zum Vergleich ein „gesundes“ Netzwerk:
Den 5 linken Ports des Multi-Shaders ist jeweils ein Default-Shader zugeordnet. Die ersten 4 texturieren den Stamm und die Äste, der letzte die Blätter. Dabei ist es wichtig, zu wissen, welcher Port am Multishader welchem Teil des Objekts entspricht.
Um das herauszufinden, erstellen wir zunächst einige Default-Shader, geben diesen knallbunte, leicht unterscheidbare Farben und verbinden sie mit den ersten Ports des Multi-Shaders.
Ein Proberender gibt uns nun Aufschluss über die einzelnen Ports. In unserem Beispiel (s. rechts) ist klar zu sehen, dass der blau gefärbte Shader für den Stann verantwortlich zu sein scheint, der grüne für die Blätter und bei näherer Betrachtung sieht man dort auch einen Ast durchschimmern, der offensichtlich den roten Shader abbekommen hat.
Nun können wir den Shadern Texturen zuordnen. Zunächst bearbeiten wir den blauen Shader indem wir diesem ein Color Image (dt. Farb-Bild) zuweisen und seine Farbe auf ein neutrales Grau (d.h. Sättigung auf Null) mit einer Helligkeit von 0.5 stellen. Diese Helligkeit kann man nacher natürlich noch ändern, wenn man möchte. Das ist wichtig, da die Diffuse Color das Aussehen der Textur durchaus mitbestimmt.
Texturen liegen in der Regel im selben Verzeichnis, wie das Objekt. Bei der Auswahl der richtigen Grafik für den Stamm sind rudimentäre Englischkenntnisse und gesunder Menschenverstand gefragt – oder man lässt sich einfach die Thumbnails der Bilder anzeigen. Der vordere Teil des Dateinamens ist einfach der lateinische Name der Pflanze, der hintere Teil, „bark“, heißt Rinde. Schon haben wir die passende Textur gefunden! In diesem Fall liegt die Textur als PNG-Grafik vor, aber auch andere Formate, beispielsweise TIFF, sind durchaus gebräuchlich.
Bei dieser Gelegenheit stellen wir gleich noch fest, dass es insgesamt nur zwei Texturen gibt. Die eine ist unsere Rinde, die andere enthält das Blattwerk (leaf=Blatt). Da keine gesonderte Textur für die Äste vorhanden ist, bekommen diese einfach dieselbe Rinden-Textur wie der Stamm. Das heißt, wir können für unsere Äste den gleichen Shader wie für unseren Stamm nehmen. Dazu verbinden wir den Shader zusätzlich noch mit dem Port für die Äste (an dem momentan noch der rote Shader hängt). Den roten Shader brauchen wir nun auch nicht mehr – er kann gelöscht werden. Den Namen des Shaders sollte man jetzt ebenfalls ändern, um später sofort sehen zu können, was dieser bewirkt.
Das Netzwerk sollte sich nun etwa so darstellen:
Auf die selbe Art und Weise wie bei der Rinde geben wir nun auch unserem grünen Shader seine Textur (acer_monspessulanum_leaf.png). Außerdem stellen wir im Tab Opacity die selbe Textur auch als Opacity Image ein und aktivieren Use Alpha Channel. So nutzt TG2 den Alpha-Kanal unserer Textur. Der Alpha-Kanal eines Bildes enthält Transparenz-Informationen. Ein maximaler Alpha-Wert bedeutet totale Transparenz/keine Opacity (dt. Opazität). Ein Alpha-Wert von Null hingegen keine Transparenz/totale Opazität.
Ein Testrender zeigt uns jedoch, dass zum einen unsere Rinde äußerst dunkel geworden ist, zum anderen die Blätter aus irgend einem Grund teilweise weiß sind.
Eine dunkle Rinde ist kein Grund zur Besorgnis. Ein Blick auf die Grafik, die als Textur dient, zeigt, dass diese schlicht und ergreifend dunkel ist.
Anders sieht es bei unserem Blatt aus. TG2 beherrscht Alpha-Werte momentan nicht wirklich. Es gibt verschiedene Ansichten, was das Problem verursacht. Meiner Meinung nach liegt das Problem darin, dass derzeit nur zwischen transparent und opak unterschieden wird, die halbtransparenten Stufen dazwischen werden opak, sofern sie weniger als 50% transparent sind, ansonsten transparent.
Das führt dazu, dass sich der nicht-transparente Bereich ungewollt auf Areale außerhalb des Blattes ausdehnt. Dort findet TG2 allerdings keine Farbinformationen und stellt diese Stellen dann weiß dar.
Eine mögliche Lösung setzt genau dort an. Wir füllen den transparenten Hintergrund unseres Bildes mit einer passenden Farbe und verhindern somit, dass TG2 auf „leere“ Pixel stößt. Ein Beispiel: links das Original mit Transparenz, rechts die mit Grün aufgefüllte Variante.
Das so erhaltene Bild speichern wir unter einem anderen Namen ab, beispielsweise acer_monspessulanum_leaf_nurfarbe.png und benutzen nun diese Datei als Color Image.
Ein weiterer Testrender zeigt uns, dass die weißen Punkte tatsächlich verschwunden sind! Aber noch sind wir nicht ganz fertig. Zum einen müsste man sich noch anschauen, ob jetzt wirklich alle Bereiche unseres Objekts eine Textur besitzen, was aber hier der Fall ist, und zum anderen wollen wir unser Objekt speichern. Dazu bringt TG2 ein eigenes Format mit. Um ein Objekt in diesem TGO-Format abzuspeichern muss man nichts weiter tun, als rechts auf den Node des Objekts zu klicken und dort Save Object File… zu wählen. Beachte: Die Datei muss im gleichen Ordner wie die Texturen liegen, damit diese gefunden werden.
Zu guter Letzt kann man, sofern man möchte, das fertige Objekt mitsamt den Texturen und einem kleinen Testrender (und ohne die restlichen, nun unnötigen, Dateien) in einen neuen Ordner packen und in sein Objekt-Archiv schieben.
Die restlichen Objekte von der TU Dresden kann man gleichermaßen konvertieren und sich so eine kleine Sammlung aufbauen. 🙂
Viel Spaß dabei!