Zusammenfassung: Dem Geheimnis der Booleschen Operationen auf der Spur: Wie und warum sie funktionieren, warum sie fehlschlagen, wie Probleme gelöst werden und wie man durch das Verständnis ihrer Funktion auf offenen Objekten eine konsistentere Funktion herbeiführen kann.
Bei der Konstruktion von Objekten in Rhino können Boolesche Operationen sehr zeitsparend sein. Gerade für Anfänger schlagen sie aber auch oft aus unverständlichen Gründen fehl. Wir hoffen, durch die Beantwortung häufig gestellter Fragen ein wenig zur Aufklärung beitragen zu können. Wenn Ihnen die hier ausgebreitete Informationsfülle zu umfangreich erscheint, versuchen Sie es vielleicht mit John Brock's kurzem Artikel Reparatur boolescher Probleme.
Um zu verstehen warum Boolesche Operationen fehlschlagen, müssen Sie zuerst ihre Funktionsweise verstehen. Objekte herbeizaubern kann man damit nicht. Es handelt sich lediglich um halbautomatische Operationen zur Kombination mehrerer von Hand ausgeführter Befehle in einem Prozess. Prinzipiell führen die Booleschen Operationen vier Aufgaben aus:
Alles was mit Booleschen Operationen machbar ist, können Sie auch von Hand unter Verwendung der vier oben genannten Befehle ausführen. Die Verwendung einer Booleschen Operation dient lediglich der Beschleunigung durch Zusammenfassung in einem Vorgang –- wenn sie denn funktioniert…
Denken Sie also stets daran, dass ein fundiertes Wissen um die Rolle der Komponenten in den Booleschen Operationen notwendig ist. Wenn alles andere fehlschlägt, können Sie die Aufgabe mithilfe der folgenden Befehle bewältigen: Schnitt, Teilen, Löschen und Verbinden. Versuchen Sie eine erfolgreiche Boolesche Operation rückgängig zu machen und sie dann unter Verwendung dieser Befehle wiederherzustellen. Machen Sie sich damit vertraut, dass Sie anhand dieses Vorgangs immer ans Ziel gelangen, selbst wenn Ihre Versuche mit Booleschen Operationen fehlschlagen.
Warum schlagen Boolesche Operationen fehl? Entscheidend für den Erfolg oder Misserfolg einer Booleschen Operation ist zunächst die Schnittstellenoperation. Wenn eine korrekte Schnittstelle gefunden wird, ist der Rest einfach. Hat Rhino jedoch Schwierigkeiten, die Schnittstelle zu finden, wird die Boolesche Operation unweigerlich fehlschlagen. Der Schlüssel zum Erfolg liegt also darin, Rhino das Auffinden einer guten und vollständigen Schnittstelle zu erleichtern. Möglich ist dies durch korrektes Einrichten Ihres Modells und Ihrer Datei, sowie durch gewisse Einblicke in Rhinos Eigenarten und Beschränkungen.
Durch das Überschneiden zweier (solider) Objekte sollte wenigstens eine vollständig geschlossene Schnittkurve (also eine Schleife) erhalten werden. Möglich ist auch der Erhalt von mehr als einer Schleife, wenn das Objekt an mehreren Stellen geschnitten wird -– was kein Problem darstellt, sofern sie alle geschlossen sind. Ist jedoch nur eine offen, wird die Boolesche Operation fehlschlagen. Dies ist darauf zurückzuführen, dass die Schnittkurve nicht vollständig durch die Objekte schneidet. Rhino ist nicht imstande den Schnitt fertig auszuführen, weswegen es den Vorgang unterbricht und eine Fehlermeldung anzeigt.
Hinweis: Boolesche Operationen auf offenen Objekten sind ebenfalls möglich, aber etwas komplizierter, weswegen wir zunächst davon ausgehen dass alle Objekte geschlossen sind. Offene Objekte werden wir später behandeln.
Wenn Ihre Boolesche Operation also fehlschlägt, dann sollten Sie, unter Berücksichtigung obiger Ausführungen, als erstes die Schnittstelle der Objekte überprüfen. Wählen Sie Ihre Objekte aus und rufen Sie den Befehl Schnitt auf. Schauen Sie zuerst auf jede Schnittkurve auf dem Bildschirm. Sieht alles gut aus? Sind vielleicht sichtbare Lücken, zusätzliche Segmente oder andere seltsame aussehende Details vorhanden? Wenn ja, machen Sie die Ursachen ausfindig, Wenn die Schnittstelle gelungen scheint, die Booleschen Operationen aber weiterhin bei ausgewählter Schnittkurve fehlschlagen, gehen Sie auf Eigenschaften > Details oder verwenden Sie den Befehl Objektinfo. Auf dem so hervorgerufenen Info-Dialogfeld sollte alles enthalten sein, was Sie über die Kurve wissen müssen. Heißt es dort, die Kurve sei offen? Dann ist dies Ihr Problembereich. Gibt es mehr als eine Kurve? Finden Sie heraus, warum es an Ihrer Schnittstelle Lücken bzw. Überlappungen gibt.
Was ruft an Ihrer Schnittstelle Lücken oder Probleme hervor? Viele Ursachen sind möglich. In einigen Fällen handelt es sich um Modellierungsfehler oder Ungenauigkeiten. In anderen sind Rhinos Einschränkungen die Ursache. Werfen wir zunächst einen Blick auf die häufigsten Fehler:
Wenn die Schnittstelle Ihrer Ansicht nach geschlossen sein sollte, es aber nicht ist, wählen Sie die Kurve aus und rufen Sie AnfangKurve auf, womit ein Startpunkt für die Kurve gesetzt wird. Normalerweise wird dies mit einer Seite der Lücke übereinstimmen. Zoomen Sie nahe heran und machen Sie die Lücke auf dem Screen ausfindig. Warum ist eine Lücke vorhanden? Vielleicht glauben Sie, Ihre Objekte sind geschlossen, obwohl Sie es gar nicht sind. Die Schnittstelle kann eine Lücke zwischen Flächen kreuzen, was eine offene Kurve hervorruft. Dies ist auch möglich, wenn Sie Ihr Objekt unter Verwendung von KantenVerbinden zusammengefügt haben, selbst dann, wenn sich das Objekt als geschlossen ausgibt. Ebenfalls zu überprüfen sind Ihre Modellierungstoleranzen (siehe Toleranzen). Wenn sie zu groß sind, kann dies für die Schnittstellenfunktion ein Hindernis darstellen, eine vollständige Schnittstelle zu finden, auch wenn alles andere in Ordnung ist. Versuchen Sie, Ihre Toleranzen zu straffen und die Boolesche Operation erneut auszuführen. Sobald Sie eine vollständig geschlossene Schnittstelle erhalten, sollte Ihre Operation funktionieren…
Wenn Sie nicht erreichen können, dass Rhino automatisch eine geschlossene Schnittstellenkurve erzeugt, auch nicht nachdem Sie Ihr Objekt nach bestem Vermögen behoben haben, ist die manuelle Ausführung vielleicht zu bevorzugen. Erhalten Sie die bestmögliche Schnittstellenkurve und versuchen Sie, durch ihre nachherige Bearbeitung ein geschlossenes Objekt zu erhalten. Eventuell müssen Sie ein Segment hinzufügen oder ändern, Punkte bearbeiten, überlappende Segmente herausnehmen oder etwas ähnliches tun. Sobald Sie diese Kurve haben, können Sie versuchen Ihre Objekte einzeln zu trimmen. Sie müssen Ihre Flächenverbände zerlegen, um sie mit der Schnittstellenkurve zu trimmen. Trimmen Sie die unerwünschten Teile heraus und fügen Sie alles wieder zusammen.
Zusammenfallende Nähte – Alle Objekte haben Nähte. Manchmal, wenn sich die Nähte auf zwei Objekten an genau der gleichen Stelle befinden, gibt es in Rhino Schwierigkeiten mit der Schnittstelle. Lösung: Versuchen Sie entweder die Naht zu verschieben, oder versuchen Sie ein Objekt nur ein ganz klein wenig zu verschieben (sofern Sie damit Ihr Modell nicht ungenau machen). Oder versuchen Sie, den Vorgang von Hand auszuführen.
Koplanare Seiten – Wenn zwei Seiten eines Objekts auf der gleichen Ebene liegen, kann Rhino möglicherweise nicht die Schnitstelle kalkulieren. Dies kommt relativ häufig vor. Vermeiden Sie es, Ihr Modell auf diese Weise zu erstellen. Lösung: Wie schon weiter oben angedeutet, können Sie das Objekt leicht verschieben, wenn die Möglichkeit besteht. Falls nicht, muss diese Operation von Hand ausgeführt werden.
Beinahe-Tangentenflächen – Wie die Schnittstelle zweier Rohre gleichen Durchmessers auf einem Winkel. Die Schnittstelle schlägt oft da fehl, wo die Flächen tangential sind. Derzeit existiert keine einfache Fehlerbehebung für dieses Problem.
Ungültige Objekte – Boolesche Operationen schlagen häufig dann fehl, wenn eines der Objekte, mit denen Sie zu arbeiten versuchen, ungültig ist. Verwenden Sie den Befehl FehlerhafteObjekteAuswählen, um nach ungültigen Objekten zu suchen. Wird eines hervorgehoben, müssen Sie es vor dem Weiterabeiten beheben. Empfehlenswert ist auch, die automatische Objektüberprüfung zu aktivieren. Wenn während Ihrer Arbeit ungültige Objekte erzeugt (oder importiert) werden, wird Rhino dann umgehend darauf hinweisen. Hierfür geben Sie einfach NeueObjekteÜberprüfen ein. Es handelt sich um eine Umschaltfunktion, die durch erneutes Ausführen des Befehls wieder deaktiviert wird.
Nicht-mannigfaltige Flächenverbände – Wenngleich Rhino diese Objekte derzeit auch nicht als fehlerhaft markiert, können sie dennoch Fehler hervorrufen. Rhino sollte eigentlich keine Strukturen dieser Art erzeugen, tut es unter Umständen aber trotzdem, vor allem in der Version 4. Bisher können sie nur durch Überprüfung der Objekteigenschaften ausfindig gemacht werden.
Animiertes Bildmaterial zur Verdeutlichung manueller Flächenerzeugung und -bearbeitung, wenn Boolesche Operationen fehlschlagen:
Manuelle Bearbeitung von Flächen mit koplanaren Seiten und Beinahe-Tangentenflächen
Manuelle Bearbeitung von Flächen mit koplanaren Seiten II
Hier haben wir das Beispiel eines Volumenkörpers, der nicht mit soliden Primitiven erzeugt werden kann, weswegen Techniken zur Flächenbearbeitung anzuwenden sind.
Wie bereits weiter oben erwähnt, können Boolesche Operationen auch auf offenen Objekten ausgeführt werden. Das Prinzip ist das gleiche, da die Objekte jedoch nicht geschlossen sind, gilt es zwei zusätzliche Dinge zu beachten. Rhino 4 und spätere Versionen verfügen über ein Werkzeug, das den folgenden Vorgang wesentlich vereinfacht, wenn Sie nur zwei Objekte haben. Siehe den Befehl BoolscheOperationVon2Objekten
Die erste Voraussetzung ist, das Konzept von Flächennormalen und -richtung zu verstehen. Jedes Flächenobjekt hat eine “Seitigkeit”, also eine Vorder- und Rückseite. Dies wird in Rhino als Richtung bezeichnet und kann mit dem Befehl RichtungAnzeigen angezeigt werden. Versuchen Sie RichtungAnzeigen auf mehreren verschiedenen Flächen zu verwenden und sehen Sie, was passiert. Die Richtungspfeile zeigen zur Außenseite der Fläche und zeigen auch die lokale Normalenrichtung an, d.h. lokal liegen sie 90º zur Fläche.
Für jede Fläche können Sie die Normalenrichtungen (und somit die Seitigkeit der Flächen) umkehren. Geben Sie hierfür, solange Sie sich im Befehl RichtungAnzeigen befinden, entweder F ein und drücken die Eingabetaste, oder klicken Sie einfach einmal auf die Fläche. Daraufhin werden Sie sehen, wie die Richtungspfeile die Seiten umkehren. Dies ist auch außerhalb des Befehls RichtungAnzeigen unter Verwendung des Befehls Umkehren möglich (allerdings werden Sie dann keine Pfeile sehen).
Hinweis: Kurven in Rhino haben ebenfalls eine Richtung, die durch den Befehl RichtungAnzeigen angezeigt werden kann. In diesem Fall werden durch Umkehren die Anfangs- und Endpunkte ausgetauscht und die Kurvenrichtung umgekehrt.
Wenn Flächen verbunden sind, versucht Rhino die Flächennormalen des Objekts zu standardisieren. Das heißt, es versucht alle angrenzenden Flächen mit der gleichen Front/Rück-Ausrichtung beizubehalten. Wenn Sie also über einen offenen Satz verbundener Flächen (einen offenen Flächenverband) verfügen, wird Front/Rück uniform bleiben und nicht aus in verschiedene Richtungen weisenden Flächen zusammengestückelt sein.
Versuch 1: Machen Sie ein Rechteck. Extrudieren Sie es in einen 4-seitigen offenen Quader. Zerlegen Sie es in separate Flächen. Verwenden Sie RichtungAnzeigen, um zwei der Flächenrichtungen nach innen umzukehren. Wählen Sie sie alle mit einem Auswahlfenster aus und verwenden Sie Verbinden, um sie wieder in einen 4-seitigen Flächenverband umzuwandeln, und verwenden Sie erneut RichtungAnzeigen, um zu sehen was mit den Flächenrichtungen geschehen ist.
Wenn ein Objekt in Rhino geschlossen ist, kehrt das Programm automatisch alle Flächen nach außen um. Es geht davon aus, dass die Innenseite für uns nicht mehr wichtig ist, weil das Objekt geschlossen (solide) ist. In geschlossenen Flächenverbänden können die Normalen nicht nach innen weisen (machen Sie den Versuch mit RichtungAnzeigen). Wenn es Ihnen gelingt, die Normalen eines geschlossenen Flächenverbands nach innen umzukehren, dann ist er er entweder nicht wirklich geschlossen oder Sie haben einen (äußerst seltenen) Fehler entdeckt.
Versuch 2: Machen Sie einen Würfel. Zerlegen Sie es in separate Flächen. Verwenden Sie RichtungAnzeigen, um einige der Flächenrichtungen nach innen umzukehren. Wählen Sie sie alle mit einem Auswahlfenster aus und verwenden Sie Verbinden, um sie wieder in einen Flächenverband umzuwandeln, und sehen Sie was mit den Flächenrichtungen geschieht.
Soweit verstehen Sie jetzt also Flächennormalen und -richtungen. Warum ist dies in Booleschen Operationen von Bedeutung? Wenn Rhino eine Boolesche Operation ausführen soll, versucht es anhand der Flächennormalen zu bestimmen, welche Teile behalten und welche gelöscht werden sollen. Grundsätzlich handelt es sich bei Boolescher Vereinigung, Differenz und Schnitt um die gleiche Operation, nur dass am Ende verschiedene Teile des Objekts behalten werden. Mit einer Booleschen Vereinigung z.B. werden die einander überlappenden Teile gelöscht und der Rest verbunden. Mit Schnitt ist genau das Gegenteil der Fall.
Boolesche Operationen mit Volumenkörpern (geschlossenen Flächenverbänden) sind vorhersagbar, da alle Flächennormalen immer nach außen weisen. Mit offenen Flächenverbänden hingegen können die Resultate unvorhersehbar erscheinen, da wir ohne den Befehl RichtungAnzeigen nicht sofort feststellen können, welche die Vorder- oder Rückseite jedes Objekts ist.
Hinweis: Wenn Sie Boolesche Operationen auf geschlossenen Flächenverbänden ausführen und diese nicht wie von Ihnen erwartet reagieren (also die nicht vorgesehenen Seiten verschwinden), sind wahrscheinlich ein oder mehrere Objekte nicht wirklich geschlossen und ihre Normalen zeigen nach innen. Verwenden Sie RichtungAnzeigen zur Überprüfung.
Tipp: Eine Möglichkeit um sicherzugehen, in welche Richtung die Flächen zeigen, ist die Anzeige so einzustellen dass die Rückseiten in einer anderen Farbe angezeigt werden als die Vorderseiten. In Rhino 3 verwenden Sie dafür den Befehl FortgeschritteneAnzeige>Rückseiten in Farbe. In Rhino 4 gehen Sie auf Optionen>Darstellung>Weitere Einstellungen>Schattiert>Rückseiteneinstellungen. In Rhino 5 wählen Sie Optionen>Ansicht>Anzeigemodi>Schattiert>Rückseiteneinstellungen. Dann wählen Sie Einzelne Farbe für alle Rückseiten einstellen und wählen Sie eine Farbe. Bitte beachten Sie aber, dass dies nur im Modus Schattiertes Ansichtsfenster funktioniert. In den Modi Gitternetz, Halbtransparent oder Gerendert werden Sie es nicht sehen.
Stellen wir uns die einfachste Boolesche Operationen vor. Sie haben einen soliden geschlossenen Flächenverband, der vollständig von einer einzelnen Fläche geschnitten wird. Dies ist einfach zu erzeugen, indem Sie ein beliebiges geschlossenes Objekt machen, dann den Befehl Schnittebene verwenden und in einer beliebigen Richtung eine Schnittlinie durch Ihr Objekt zeichnen.
Jetzt verwenden Sie BoolescheDifferenz (BD). Verwenden Sie den Volumenkörper als erste Menge und die Schnittebene als zweite. Entweder die eine Seite des Volumenkörpers oder die andere wird abgetrennt und das verbleibende Loch mit der Ebene gefüllt. Aber welche Seite??
Das wiessen Sie erst, wenn Sie RichtungAnzeigen auf der Fläche verwenden. Sehen Sie sich die Richtung der Flächennormalen an. Dann erzeugen Sie Ihre Differenz. Machen Sie rückgängig, verwenden Sie RichtungAnzeigen um die Richtung der Fläche umzukehren und dann versuchen Sie es erneut mit Differenz. Die Richtung der Flächennormalen der Ebene bestimmt, welches Teil verbleibt.
Im Allgemeinen, wenn Sie eine BD zwischen einer offenen Fläche (oder einem offenen Flächenverband) und einem Volumenkörper wie zwei Volumenkörper funktionieren lassen wollen, sollten die Flächennormalen des offenen Objekts auf das solide Objekt weisen, als wäre es ein weiterer Volumenkörper.
Ab Rhino 4 können Sie mittels BoolescheOperationVon2Objekten alle Möglichkeiten der verschiedenen Booleschen Operationen durchlaufen und das Ergebnis auf dem Bildschirm begutachten. Dann können Sie das gewünschte Resultat auswählen. Derzeit funktioniert dies nur mit zwei Objekten.