Benannte Struktur-Werkzeuge

Falls Sie die Kapitel zu Zweig Öffnen/Schließen-Tools und Sichtbarkeits-Tools noch nicht gelesen haben, sollten Sie sie zumindest überfliegen. Benannte Strukturen arbeiten am effektivsten, wenn man sie im Konzert mit den einfachen "Zweig"-Kommandos anwendet. Benannte Strukturen sind zur Zeit das komplexeste Konzept innerhalb der Collie Tools - es zahlt sich aus, die folgenden Kapitel gründlich zu lesen.

Inhalt

Welches Problem lösen sie?

Wie arbeiten sie?

Wie benutzt man eine Benannte Struktur?

Beispiel

Sichtbarkeitskontrolle

Selektionskontrolle

Kindelemente ausschließen

Benannte Struktur-Ausdrücke

Wildcards benutzen

BS-Tags per Dialog setzen und entfernen

Welches Problem lösen sie?

Cinema 4D unterstützt zur Zeit keine Layer im Objekt-Manager. Layer sind eine Methode, die Sichtbarkeit logischer Objektgruppen zu kontrollieren, selbst wenn die Elemente dieser Gruppen nicht durch Abhängigkeiten im Objekt-Manager verbunden sind.

C4D gestattet es, die Sichtbarkeit jeden Objektes auf sichtbar, unsichtbar oder unverändert (vom Elternobjekt im Baum geerbt) zu setzen. Wie bereits im Kapitel über Sichtbarkeitswerkzeuge festgestellt, genügen die eingebauten Funktionen zur Kontrolle von Zweigen des Objektbaums vollauf, und die Sichtbarkeitstools fügen nochmals ein kleines Extra hinzu. Was bleibt da noch an Problemen zu lösen?

Das Problem beginnt dort, wo Objekte nicht in einem gemeinsamen Zweig stehen, jedoch logisch zusammengehören.

Der Objektbaum bestimmt die kinematische Verknüpfung von Objekten. Diese Verknüpfung ist zentral in der 3D-Mechanik. Sie kann durch die Kinematik-Werkzeuge oder andere Expressions modifiziert oder ausgeschaltet werden, doch dies sind Ausnahmen, die man sorgfältig erwägen sollte. In den meisten Modellen bestimmt eine Hierarchie wie Torso - Brust - Schulter - Oberarm - Unterarm - Hand - Finger, wie sich die Teile der Gesamtfigur bewegen.

Aber die kinematische Verknüpfung ist nicht der einzige gruppierende Aspekt beim Modellieren. Nehmen wir als Beispiel einmal an, unser Modell sei ein menschenähnlicher Roboter, der aus einem Skelett besteht, das von Drähten umgeben und schließlich von Abdeckplatten bedeckt ist. Damit das Ganze recht eindrucksvoll wirkt, sollen die Drahteingeweide durch Lücken der Abdeckplatten hindurch sichtbar sein, und das Skelett soll durch die Drähte hindurchschimmern. Das bedeutet, daß all diese Elemente auch etwas zum Gesamteindruck des Renderings beitragen; keines davon ist rein "virtuell".

Damit der Roboter sich ordnungsgemäß bewegt, benötigen wir einen Objektbaum, der die kinematische Struktur der Bewegungen reflektiert. Mit anderen Worten, wir konstruieren einen Baum wie oben: Torso - Brust - Schulter - ...

Da die Drähte und die Abdeckplatten sich zusammen mit den Armen und Beinen bewegen sollen, sind auch sie Teil derselben Hierarchie. Die Oberarm-Abdeckplatte ist Teil der Oberarm-Baugruppe, die Hand-Abdeckplatte ist Teil der Hand-Baugruppe, und so weiter.

So weit, so gut... Bei der Arbeit an unserem Roboter stellen wir nun fest, daß die bereits modellierten Abdeckplatten im Weg sind, wenn wir an Details des Skeletts arbeiten möchten. Wie schalten wir alle Abdeckplatten in einem Arbeitsschritt unsichtbar? Wenn wir einen ganzen Zweig des Objektbaums unsichtbar machen, werden auch das Skelett und die Drähte unsichtbar, was wir nicht beabsichtigt hatten. Wenn wir die Sichtbarkeits-Tags bei jeder vorhandenen Abdeckplatte einzeln umschalten, werden wir spätestens nach dem dritten Umschalten aller Elemente verrückt.

Hier kommen die Layer ins Spiel (wenn wir denn so etwas wie Layer hätten). Wir weisen einfach alle Abdeckplatten dem Abdeckplattenlayer zu, die gesamte Verdrahtung dem Drahtlayer, und das Skelett dem Skelettlayer. Die tatsächlichen Positionen der Elemente im Objektbaum spielt für diese Zuweisung keine Rolle, die Layer verhalten sich "orthogonal" zum Objektbaum. Jeder Layer kann jetzt separat ein- oder ausgeschaltet werden und macht dabei die gesamte logische Struktur sichtbar oder unsichtbar.

Das ist es, was Layer für uns tun könnten. Benannte Strukturen sind ähnlich, wenngleich nicht hundertprozentig dasselbe. Warum? Weil Layer auch eine Reihe von Problemen bergen (was der Grund sein dürfte, weshalb sie bislang noch nicht implementiert wurden, nehme ich an!). Was sollte das Programm tun, wenn Konflikte zwischen Layer-Sichtbarkeit und Objekt-Sichtbarkeit auftreten? Nur einmal angenommen, wir schalten den Abdeckplattenlayer auf "sichtbar", aber die Hand-Abdeckung hat ihre Sichtbarkeit auf "unsichtbar" gesetzt. Anzunehmen, daß die Layer-Einstellung hier vorrangig behandelt wird. Natürlich heißt das, daß auch die Layer-Sichtbarkeit einen Zustand "unverändert" benötigt, damit die Objekt-Sichtbarkeit überhaupt jemals zum Tragen kommt. Aber was geschieht, wenn die Layer-Sichtbarkeit von bestimmten Objekt-Sichtbarkeiten außer Kraft gesetzt werden soll? (Es könnte ja Objekte im Layer geben, die wir auch bei sichtbarem Layer gerade einmal nicht sehen wollen.)

Oder schlimmer noch (denken Sie einmal darüber nach): Was geschieht, wenn ein Objekt auf unsichtbar gesetzt ist, dessen Layer auf sichtbar, und das Objekt hat ein Kindobjekt, das nicht im Layer liegt und dessen Sichtbarkeit auf "unverändert" steht. Erbt das Kindobjekt die aktuelle Sichtbarkeit des Objekts (denn das Kind ist nicht im Layer), oder die des Layers (denn das ist der Zustand, wie sich das Elternobjekt wirklich darstellt)!? Überlegen Sie gut. Es gibt stichhaltige Argumente für beide Interpretationen.

Ferner werden Sie schnell feststellen, daß es denkbar ist, Objekte in mehreren logischen Gruppen zur selben Zeit zu haben. Nehmen Sie nur einmal das Vorderrad eines Autos... es ist Teil der Lenkeinrichtung. Zur selben Zeit ist es aber auch Teil des Chassis, des Antriebs (jedenfalls bei Vorderradantrieben ;-) und der Achse (die vermutlich im Objektbaum das Elternteil stellt). Abhängig vom Zweck des 3D-Modells benötigen all diese logischen Gruppen einen eigenen Layer, und das arme Rad ist Bestandteil von allen. Ich möchte die Sichtbarkeitsprobleme, die sich daraus ergeben, gar nicht erst anreißen...

Benannte Strukturen definieren logische Gruppen, genau wie Layer. Sie vermeiden aber die Sichtbarkeitskonflikte - sie besitzen gar kein eigenes Sichtbarkeitstag. Sie können die Sichtbarkeit ihrer Teilobjekte modifizieren, doch sie tun dies, indem sie das Sichtbarkeitsflag des Objekts selbst setzen, nicht indem sie eine eigene Struktur daraufpflanzen. Das Gute daran ist, daß die Sichtbarkeitskontrolle einfach ist - "wer zuletzt kommt, mahlt zuletzt" -, man kann Sichtbarkeitsänderungen über den eingebauten Mechanismus über ein Block-Tag vermeiden, und Sie können ein Objekt zu beliebig vielen Benannten Strukturen gleichzeitig zuordnen!

Was man nicht kann, ist, den Sichtbarkeitsstatus einer Benannten Struktur abzufragen, wie man es bei einem Layer könnte. Da es kein Sichtbarkeitstag in Benannten Strukturen gibt, entfällt dieser Status.

(nächste Seite)


Zurück zur Handbuch-Hauptseite