Domande frequenti sulle operazioni booleane

Sommario - Svelare i misteri delle operazioni booleane: come e perché funzionano, perché possono non funzionare, come risolvere i problemi e fare in modo che funzionino in modo più regolare, comprendendo come agiscono su oggetti aperti.

Le operazioni booleane possono far risparmiare molto tempo durante le procedure di costruzione di oggetti in Rhino. Tuttavia, spesso danno errore senza una ragione apparente e per i principianti è difficile capirne il perché. Speriamo che la spiegazioni fornite in queste domande frequenti aiutino a chiarire alcuni concetti. Se non desideri soffermarti sulle seguenti informazioni, è possibile consultare il breve articolo di John Brock Fixing Boolean Problems.

Per capire perché le operazioni booleane possono non funzionare, occorre prima capire come funzionano. Non sono strumenti magici per mettere insieme gli oggetti. Si tratta di operazioni semi-automatiche che combinano alcuni comandi manuali in un processo. Le operazioni booleane svolgono 4 attività:

Tutte le attività effettuate con le operazioni booleane possono anche essere eseguite manualmente utilizzando i quattro comandi indicati sopra. Un'operazione booleana rende più veloce i processi eseguendo una sola procedura (se funzionante).

Per capire come funzionano le operazioni booleane, è fondamentale tenere presente che un solido è un componente imprescindibile. Quando tutto il resto non funziona, puoi continuare a lavorare utilizzando questi comandi: Intersezione, Suddividi, Elimina e Unisci. Prova ad annullare un'operazione booleana eseguita correttamente per effettuarla nuovamente in modo manuale utilizzando i comandi. I comandi manuali sono un'alternativa sempre a tua disposizione soprattutto quando le operazioni booleane non funzionano.

Se un'operazione booleana non funziona

Perché le operazioni booleane possono non funzionare? Anzitutto, l'operazione di intersezione determinerà il funzionamento o eventuali errori di un'operazione booleana. Se un'intersezione trovata è corretta, il resto sarà facile. Se invece Rhino ha problemi nel trovare l'intersezione, l'operazione booleana sicuramente non funzionerà. Il segreto è aiutare Rhino a trovare un'intersezione corretta e completa. Per farlo, imposta il modello e il file correttamente e tieni presente eventuali errori e limiti di Rhino.

L'intersezione di due oggetti (solidi) chiusi dovrebbe creare almeno una curva di intersezione completamente chiusa (ad esempio, un ciclo). Se l'oggetto si interseca in più punti, è possibile che ci siano vari cicli che possono essere tutti chiusi. Tuttavia, se un solo oggetto è aperto, l'operazione booleana non funzionerà. Ciò accade perché la curva di intersezione non taglia completamente gli oggetti. Rhino non riesce a terminare il taglio, quindi interrompe il processo e mostra un messaggio di errore.

Nota: eseguire le operazioni booleane su oggetti aperti è altrettanto possibile, ma più complicato, quindi partiamo dal presupposto che tutti gli oggetti siano chiusi. Parleremo degli oggetti aperti più avanti.

Considera quindi quanto detto precedentemente: se un'operazione booleana non funziona, la prima cosa da fare è controllare l'intersezione degli oggetti. Seleziona gli oggetti ed esegui il comando Intersezione. Anzitutto, osserva la curva di ciascuna intersezione sullo schermo. È corretta? Ci sono delle interruzioni visibili, segmenti aggiuntivi o altri elementi atipici? Se è così, cerca di capire perché. Se l'intersezione è corretta, ma l'operazione booleana continua a non funzionare quando la curva di intersezione è selezionata, apri Proprietà > Dettagli o utilizza il comando Dettagli. La finestra che appare dovrebbe mostrare tutte le informazioni sulla curva. Se viene indicato che la curva è aperta, questo è il problema. Vedi più di una curva? Occorre capire perché l'intersezione presenta interruzioni o sovrapposizioni.

Problemi di intersezione, soluzioni e limiti

Cosa causa le interruzioni o i problemi nell'intersezione? I motivi sono tanti. Alcuni sono dovuti a errori o imprecisioni di modellazione; altri sono legati ai limiti di Rhino. Diamo un'occhiata agli errori più comuni.

Se pensi che l'intersezione dovrebbe essere chiusa, ma non lo è, seleziona la curva ed esegui il comando InizioCrv che posiziona un punto all'inizio della curva. Di solito, questo corrisponde a un lato dell'interruzione. Osserva da vicino, mediante la funzione Zoom, se l'interruzione appare sullo schermo. Perché esiste un'interruzione in quel punto? Probabilmente, credi che gli oggetti siano chiusi quando invece non lo sono. L'intersezione può attraversare un'interruzione tra superfici e ciò crea una curva aperta. Questo può verificarsi anche se hai forzato l'oggetto utilizzando il comando UnisciBordi, sebbene l'oggetto indichi che è chiuso. Un altro aspetto da controllare riguarda le tolleranze di modellazione (consulta Tolleranze, tolleranze, tolleranze…). Se queste sono troppo grandi potrebbero impedire alla funzione dell'algoritmo di intersezione di completare l'intersezione, anche se tutti gli altri elementi sono corretti. Prova a ridurre le tolleranze ed eseguire nuovamente l'operazione booleana. Una volta ottenuta un'intersezione chiusa completa, l'operatore funzionerà.

Se non puoi fare in modo che Rhino crei automaticamente la curva di intersezione, anche dopo aver corretto l'oggetto nel migliore dei modi, allora dovresti utilizzare le funzioni manuali. Puoi ottenere la migliore curva di intersezione e provare a modificarla fino ad ottenere un oggetto chiuso. Potrebbe essere necessario aggiungere o modificare un segmento, un punto, rimuovere segmenti che provocano sovrapposizione e operazioni simili. Una volta ottenuta la curva, puoi provare a ragliare gli oggetti singolarmente. Occorre esplodere le polisuperfici da tagliare con la curva di intersezione. Taglia le parti che non desideri e uniscile nuovamente.

Conoscere i limiti di Rhino

Giunzioni coincidenti – Tutti gli oggetti presentano giunzioni. A volte, quando le giunzioni su due oggetti si trovano esattamente nella stessa posizione, Rhino ha difficoltà con l'intersezione. Soluzione: prova a spostare la giunzione o un oggetto leggermente (senza rendere il modello impreciso). In alternativa, prova ad eseguire l'operazione manualmente.

Facce coplanari – Se due facce di un oggetto si trovano sullo stesso piano, Rhino potrebbe non essere in grado di calcolare l'intersezione. Questo caso è abbastanza comune. Se possibile, evita di costruire il modello in questo modo. Soluzione: come indicato sopra, puoi spostare l'oggetto leggermente, se possibile. In caso contrario, devi eseguire questa operazione manualmente.

Superfici quasi in tangenza – È simile all'intersezione di due superfici tubolari con lo stesso diametro in un angolo. L'intersezione spesso non funziona in corrispondenza del punto in cui le superfici sono in tangenza. Attualmente, non esiste nessuna soluzione facile a questo problema.

Oggetti non validi – Se uno degli oggetti con cui tenti di lavorare non è valido, è molto probabile che le operazioni booleane non funzionino. Controlla gli oggetti non validi utilizzando il comando SelOggettiImperfetti. Se un oggetto viene evidenziato, devi correggerlo prima di procedere. Si consiglia inoltre di attivare il controllo automatico degli oggetti. Se gli oggetti vengono creati durante la sessione di lavoro (o importati), Rhino ti avviserà immediatamente. Per farlo, digita semplicemente VerificaOggettiNuovi. Per disattivare il comando, eseguilo nuovamente.

Polisuperfici non-manifold – Sebbene Rhino non segnali tali oggetti come non corretti, questi possono causare errori. Rhino non dovrebbe creare questi tipi di strutture; dovrebbe farlo solo in determinate condizioni, soprattutto in Rhino 4. Al momento, l'unico modo di trovarli è controllando le proprietà dell'oggetto.

Costruzione e modifica manuale a volte necessarie

Illustrazioni animate che mostrano la costruzione e modifica manuale di superfici quando le operazioni booleane non funzionano.

How to Manually Edit Surfaces with Coplanar Faces and Nearly Tangent Surfaces

How to Manually Edit Surfaces with Coplanar Faces II

Questo è un esempio di un solido che non può essere costruito con primitive solide e sono necessarie tecniche di modifica delle superfici.

t.jpg


Operazioni booleane su oggetti aperti

Come menzionato in precedenza, le operazioni booleane possono anche essere eseguite su oggetti aperti. Il principio è lo stesso, ma, visto che gli oggetti non sono chiusi, occorre capire ed effettuare un paio di passaggi in più. Rhino 4 e versioni successive forniscono uno strumento che semplifica la seguente procedura se si lavora solo con due oggetti. Vedi il comando: Booleana2Oggetti.

Direzione della superficie

Anzitutto, è necessario capire il concetto di normali e direzione delle superfici. Ciascun oggetto superficie presenta una “lateralità”, ovvero, un lato anteriore e uno posteriore. In Rhino, questo viene chiamata direzione e può essere mostrata con il comando Dir. Prova a utilizzare il comando Dir su superfici diverse e osserva cosa accade. Le frecce di direzione puntano verso la parte esterna della superficie e mostrano anche la direzione normale locale, ovvero si trovano localmente a 90º della superficie.

Per ciascuna superficie, puoi invertire la direzione delle normali (ad esempio, invertire la lateralità della superficie). Per farlo, con il comando Dir attivo, digita F e premi Invio o fai clic una volta sulla superficie. Vedrai che le frecce di direzione cambiano lato. È inoltre possibile eseguire questa operazione fuori dal comando Dir utilizzando il comando Inverti (in tal caso, non visualizzerai nessuna freccia).

Nota: le curve in Rhino presentano inoltre una direzione che può essere mostrata dal comando Dir. In questo caso, Inverti scambia il punto iniziale o finale e inverte la direzione della curva.

Quando le superfici sono unite, Rhino prova a standardizzare le normali delle superfici dell'oggetto. In altre parole, prova a mantenere tutte le superfici adiacenti che presentano lo stesso orientamento tanto anteriore che posteriore. Quindi, quando hai aperto un insieme di superfici unite (una polisuperficie aperta), continuerà ad avere una parte anteriore/posteriore uniforme e non sarà un insieme di ritagli di superfici orientati in diverse direzioni.

Esperimento 1: Crea un quadrato. Estrudilo in un parallelepipedo aperto a 4 lati. Esplodilo in superfici separate. Utilizza il comando Dir per invertire due delle direzioni delle superfici verso l'interno. Adesso, selezionale sulla finestra e utilizza il comando Unisci per convertirle in polisuperfici a 4 lati e usa nuovamente il comando Dir per osservare cosa accade alle direzioni delle superfici.

In Rhino, quando un oggetto è chiuso, il programma inverte automaticamente tutte le superfici verso l'esterno. Parte dal presupposto che l'interno non importa perché l'oggetto è chiuso (solido). Le polisuperfici chiuse non possono avere le normali rivolte verso l'interno (prova con il comando Dir). Se riesci ad invertire le normali di una polisuperficie chiusa verso l'interno, la polisuperficie non è in realtà chiusa o hai rilevato un errore (caso raro).

Esperimento 2: Crea un cubo. Esplodilo in superfici separate. Utilizza il comando Dir, per invertire le direzioni di alcune superfici verso l'interno. Adesso, selezionale sulla finestra e utilizza il comando Unisci per convertirle di nuovo in polisuperfici per osservare cosa accade alle direzioni delle superfici.

Come la direzione influenza le operazioni booleane

Una volta capite le normali alle superfici e la direzione, ci chiediamo: perché queste sono importanti nelle operazioni booleane? Quando Rhino viene configurato per eseguire un'operazione booleana, il programma osserva le normali alla superficie per determinare quali parti conservare e quali rimuovere. L'unione, la differenza e l'intersezione booleana sono fondamentalmente la stessa operazione. Solo varie parti degli oggetti vengono mantenuti alla fine. Con l'unione booleana, ad esempio, le parti che si sovrappongono vengono rimosse e le altre vengono unite insieme. Con l'intersezione, si verifica esattamente il contrario.

Le operazioni booleane con solidi (polisuperfici chiuse) sono prevedibili perché tutte le normali ala superficie puntano sempre verso l'esterno. Tuttavia, con le polisuperfici aperte i risultati possono essere imprevedibili poiché, senza utilizzare il comando Dir, non sappiamo immediatamente qual è la parte anteriore o posteriore di ciascun oggetto.

Nota: se esegui operazioni booleane su polisuperfici chiuse e queste non rispondono nel modo previsto, (ad esempio, le parti errate scompaiono), probabilmente uno o più oggetti non sono in realtà chiusi e le normali puntano verso l'interno. Utilizza il comando Dir per controllare.
Suggerimento: un modo di sapere sempre la direzione verso cui sono rivolte le superfici è impostare lo schermo in modo tale che mostri le facce posteriori in un colore diverso rispetto alle facce anteriori. Per farlo, in Rhino 3, utilizza il comando VisualizzazioneAvanzata > Colora facce posteriori. In Rhino 4, vai in Opzioni > Aspetto > Impostazioni avanzate > Ombreggiata > Impostazioni facce posteriori. In Rhino 5, vai in Opzioni > Vista > Modalità di visualizzazione >Ombreggiata > Impostazioni facce posteriori. Scegli quindi Colore singolo per tutte le facce posteriori e seleziona un colore. Nota: questa operazione funziona solo se è attiva la modalità di visualizzazione Ombreggiata. Nelle modalità Wireframe, Semitrasparente o Renderizzata l'opzione non viene visualizzata.

Immaginiamo la più semplice operazione booleana aperta. Presenta una polisuperficie solida chiusa completamente intersecata da una singola superficie. Creala facilmente con un oggetto solido di qualunque tipo, quindi utilizza il comando PianoDiTaglio e disegna un linea di taglio attraverso l'oggetto in qualsiasi direzione.

Prova ora il comando DifferenzaBooleana. Seleziona il solido come primo insieme e il piano di taglio come secondo. Un lato o l'altro del solido verrà tagliato e il foro riempito dal piano. Ma, qual è il lato in questione?

È possibile saperlo solamente eseguendo il comando Dir sulla superficie. Osserva la direzione della normale alla superficie. Quindi, esegui la differenza. Annulla l'operazione, inverti la direzione della superficie utilizzando il comando Dir, quindi prova ad eseguire nuovamente la direzione. La direzione della normale alla superficie del piano determina la parte rimanente.

In generale, se desideri eseguire il comando DifferenzaBooleana tra una polisuperficie aperta e un solido per lavorare come se si trattasse di due solidi, le normali alla superficie dell'oggetto aperto dovrebbero puntare all'oggetto solido come se si trattasse di un solido.

In Rhino 4 e versioni successive, il comando Booleana2Oggetti consente di provare tutte le possibilità delle varie operazioni booleane e visualizzare il risultato su schermo. Successivamente, puoi scegliere il risultato desiderato. Attualmente, questa opzione funziona solo con due oggetti.