Résumé: Résolution des mystères des opérations booléennes : Pourquoi et comment fonctionnent-elles ? Pourquoi échouent-elles ? Comment corriger des problèmes et les faire fonctionner de façon plus logique ? Comprendre comment elles fonctionnent sur les objets ouverts.
Les opérations booléennes peuvent permettre de gagner beaucoup de temps lors de la construction d'objets dans Rhino. Mais, pour les non initiés, elles semblent souvent échouer mystérieusement et il est difficile de comprendre pourquoi. Nous espérons que cette explication aidera à mettre un peu les choses au clair. Si vous ne voulez pas lire toutes les informations suivantes, vous pouvez également lire la petite explication de John Brock Résoudre des problèmes de booléennes.
Pour comprendre pourquoi les opérations booléennes échouent, vous devez comprendre tout d'abord comment elles fonctionnent. Il ne s'agit pas d'un outil magique pour assembler des objets. Ce sont simplement des opérations semi-automatiques qui combinent plusieurs commandes manuelles en un seul processus. Les opérations booléennes réalisent essentiellement quatre tâches :
Tout ce que vous pouvez faire avec les opérations booléennes, vous pouvez aussi le faire manuellement en utilisant les quatre commandes précédentes. L'utilisation d'une opération booléenne accélère les choses - lorsqu'elle fonctionne…
Par conséquent, la première chose à retenir est qu'une très bonne connaissance du fonctionnement des composants des opérations booléennes est nécessaire. Quand tout le reste échoue, vous pouvez réaliser le travail avec ces commandes Intersection, Diviser, Supprimer et Joindre. Essayez d'annuler une opération booléenne ayant fonctionné et de la refaire manuellement en utilisant ces commandes. Soyez tranquille en pensant que cette procédure vous mènera toujours où vous voulez même si les opérations booléennes échouent.
OK, pourquoi les opérations booléennes échouent-elles ? Tout d'abord, c'est l'intersection qui déterminera le succès ou l'échec d'une opération booléenne. Si une intersection correcte est trouvée, le reste est facile. Cependant, si Rhino rencontre des problèmes pour trouver l'intersection, l'opération booléenne échouera à coup sûr. La solution est alors d'aider Rhino à trouver une bonne intersection. Vous pouvez le faire en configurant correctement votre modèle et votre fichier, et aussi en comprenant certaines bizarreries et limites de Rhino.
L'intersection entre deux objets fermés (solides) devrait produire au moins une courbe d'intersection entièrement fermée (c'est-à-dire une boucle). Il se peut qu'il y ait plusieurs boucles si les objets se croisent en plusieurs points - ce n'est pas un problème si elles sont toutes fermées. Il suffit qu'une seule soit ouverte pour que l'opération booléenne échoue. En effet, la courbe d'intersection ne coupe pas entièrement les objets. Rhino ne sait pas comment terminer la coupe alors il s'arrête et vous donne un message d'erreur.
Remarque :La réalisation d'opérations booléennes sur des objets ouverts est aussi possible mais un peu plus compliquée, nous assumerons donc tout d'abord que tous les objets sont fermés. Les objets ouverts seront traités plus tard.
Compte tenu de ce qui précède, si votre opération booléenne échoue, la première chose à faire est de vérifier l'intersection des objets. Sélectionnez vos objets et lancez la commande Intersection. Commencez par regarder chaque courbe d'intersection à l'écran. Paraissent-elles correctes ? Y a-t-il des trous ou des segments supplémentaires visibles ou d'autres choses bizarres ? Si c'est le cas vous devez trouver pourquoi. Si l'intersection semble correcte alors que l'opération booléenne échoue toujours, sélectionnez la courbe d'intersection et allez dans Propriétés > Info ou utilisez la commande Info. La fenêtre affichée devrait vous donner toutes les informations nécessaires sur la courbe. Indique-t-elle que la courbe est ouverte ? Si oui, votre problème vient de là. Y a-t-il plusieurs courbes ? Vous devez trouver pourquoi votre intersection présente des trous ou des parties superposées.
Qu'est-ce qui peut causer des trous ou des problèmes dans votre intersection ? Il existe plusieurs possibilités. Ce peut être des erreurs de modélisation ou des imprécisions, ou ce peut être des limites de Rhino. Regardons tout d'abord les erreurs courantes :
Si vous pensez que votre intersection devrait être fermée mais qu'elle ne l'est pas, sélectionnez la courbe et lancez la commande DépartCourbe qui place un point au niveau du point de départ de la courbe. Ce point devrait correspondre avec un côté du trou. Utilisez le Zoom pour essayer de voir le trou à l'écran. Pourquoi y a-t-il un trou ici ? Peut-être pensez-vous que vos objets sont fermés mais ils ne le sont pas en réalité. L'intersection peut traverser un trou entre des surfaces et créer alors une courbe ouverte. Si vous avez accolé vos objets avec la commande JoindreBord, ce problème peut se poser même si l'objet est marqué comme fermé. Regardez également les tolérances de votre modèle (voir Comprendre les tolérances). Si elles sont trop grandes, cela peut empêcher l'intersecteur de trouver une intersection entière, même si tout le reste est correct. Essayez de diminuer vos tolérances et de lancer à nouveau l'opération booléenne. Lorsqu'une intersection est entièrement fermée, votre opération “devrait” fonctionner…
Si vous n'arrivez pas à obtenir une courbe d'intersection fermée automatiquement avec Rhino même après avoir réparé votre objet au mieux, c'est peut-être le moment de revenir à la méthode manuelle. Créez la meilleure courbe d'intersection possible et essayez de la modifier jusqu'à ce qu'elle soit fermée. Vous devrez peut-être ajouter ou modifier un segment, déplacer des points de contrôle ou d'édition, supprimer des segments superposés ou réaliser d'autres opérations de ce style. Une fois que vous avez la courbe, vous pouvez essayer de limiter vos objets un par un. Vous devrez décomposer vos polysurfaces pour les limiter avec la courbe d'intersection. Supprimez les parties que vous ne voulez pas et joignez tout le reste.
Jointures coïncidentes – Tous les objets ont des jointures. Il arrive parfois que les jointures de deux objets se trouvent au même endroit et Rhino a alors de la peine à trouver l'intersection. Solution : Essayez de déplacer la jointure ou essayez de déplacer très légèrement un objet (si vous pouvez le faire sans nuire à la précision de votre modèle). Ou essayez de réaliser l'opération manuellement.
Faces sur le même plan– si deux faces d'un objet se trouvent sur le même plan, Rhino ne pourra peut-être pas calculer l'intersection. Cette cause est assez courante. Évitez de construire votre modèle de cette façon si vous le pouvez. Solution : Comme précédemment, vous pouvez essayer de déplacer légèrement l'objet si possible. Sinon, vous devrez peut-être réaliser l'opération manuellement.
Surfaces presque tangentes – Comme l'intersection de deux tuyaux de même diamètre à un angle. L'intersection échoue souvent au point où les surfaces sont tangentes. Il n'y a pas de solution facile à ce problème pour le moment.
Objets invalides– Si un des objets avec lesquels vous travaillez est invalide, il y a de fortes chances que les opérations booléennes échouent. Recherchez les objets invalides avec la commande SélMauvaisObjets. Si un objet est mis en surbrillance vous devez le réparer avant de continuer. Il est également conseillé d'activer la vérification automatique des objets. Ainsi, si un objet invalide est importé ou créé pendant la modélisation, Rhino vous le dira immédiatement. Pour ce faire, tapez VérifierNouveauxObjets dans la ligne de commandes. Il s'agit d'une commande à bascule, si vous retapez la même chose la vérification sera annulée.
Polysurfaces Non-Manifold– Même si Rhino ne marque pas ces objets comme mauvais, ils peuvent faire échouer les opérations booléennes. Rhino ne devrait pascréer ces types de structure mais il le fait dans certains cas, surtout avec la version 4. La seule façon de les trouver actuellement est de vérifier les propriétés de l'objet.
Ces illustrations animées montrent comment construire une surface manuellement et comment la modifier lorsque les opérations booléennes ne fonctionnent pas :
Comment éditer manuellement des surfaces présentant des faces coplanaires II
Voici l'exemple d'un solide qui ne peut pas être construit avec des primitives de solides et des techniques de modification de surface sont nécessaires.
Comme indiqué ci-dessus, les opérations booléennes peuvent aussi être exécutées sur des objets ouverts. Le principe est le même mais étant donné que les objets ne sont pas fermés nous devons comprendre et réaliser quelques trucs supplémentaires. Rhino 4 possède un outil qui rend la procédure suivante beaucoup plus facile si vous n'avez que deux objets. Voir la commande : OpBooléenne2Objets
Tout d'abord, il faut comprendre le concept des normales et de la direction d'une surface. Chaque surface est orientée, c'est-à-dire qu'elle a un “côté avant” et un “côté arrière. Cette particularité est appelée direction dans Rhino et peut être affichée avec la commande *Direction*. Essayez d'utiliser Direction sur plusieurs surfaces différentes et de voir ce qui se passe. Les flèches de direction sont dirigées vers l'extérieur de la surface et elles indiquent aussi la direction normale locale, en d'autres termes elles forment un angle de 90º avec la surface au point où elles se trouvent.
Pour chaque surface, vous pouvez inverser la direction des normales (c'est-à-dire inverser l'orientation de la surface.) Pour ce faire, lancez la commande Direction et tapez I et Entrée ou cliquez une fois sur la surface. Les flèches de direction changeront de côté. Vous pouvez aussi le faire directement, sans la commande Direction, en utilisant la commande Inverser (vous ne verrez pas les flèches).
Note : Les courbes dans Rhino ont aussi une direction qui peut être affichée avec la commande Direction. Dans ce cas, Inverser échange les points de départ et final et inverse la direction de la courbe.
Lorsque les surfaces sont jointes, Rhino essaie d'uniformiser les normales de surface de l'objet. Ainsi, il essaie de faire en sorte que les côtés avant et arrière soient équivalents sur les surfaces adjacentes. Ainsi, lorsque vous avez un ensemble ouvert de surfaces jointes (polysurface ouverte), vous aurez une seule orientation avant/arrière uniforme sur toutes les faces au lieu d'avoir un patchwork de surfaces orientées dans différentes directions.
Expérience 1 : Créez un carré. Extrudez-le pour former une boîte carrée ouverte. Décomposez-le pour former des surfaces. Avec la commande Direction, inversez la direction de deux des surfaces vers l'intérieur. Sélectionnez maintenant toutes les surfaces et utilisez la commande Joindre pour reformer une polysurface. Lancez la commande Direction à nouveau pour voir la nouvelle direction des surfaces.
Lorsqu'un objet est fermé dans Rhino, le programme inverse automatiquement toutes les surfaces vers l'extérieur. Il assume que l'intérieur n'est plus intéressant puisque l'objet est fermé (plein). Les normales des polysurfaces fermées ne peuvent pas être dirigées vers l'intérieur (essayez de voir si vous pouvez avec Direction). Si vous arrivez à inverser les normales d'une polysurface fermée vers l'intérieur, soit elle n'est pas vraiment fermée, soit vous avez découvert un bogue (très rare).
Expérience 2 : Créez un Cube. Décomposez-le pour former des surfaces. Avec la commande Direction, inversez la direction de quelques surfaces vers l'intérieur. Sélectionnez maintenant toutes les surfaces et utilisez la commande Joindre pour reformer une polysurface et voir la nouvelle direction des surfaces.
Maintenant vous comprenez comment fonctionnent les normales et les directions des surfaces. Nous allons voir pourquoi ces caractéristiques sont importantes dans les opérations booléennes. Lorsque Rhino doit effectuer une opération booléenne, il regarde les normales de la surface pour déterminer les parties à conserver et les parties à éliminer. En bref, l'union, la différence et l'intersection booléenne sont les mêmes opérations, seules les parties conservées sont différentes. Avec l'union booléenne par exemple, les parties qui se superposent sont éliminées et le reste est joint. Avec l'intersection, c'est juste l'inverse.
Les opérations sur des solides (polysurfaces fermées) sont prévisibles car toutes les normales des surfaces sont dirigées vers l'extérieur. Avec les polysurfaces ouvertes, cependant, les résultats peuvent être imprévisibles puisque nous ne savons pas au premier abord quelle est la face avant et quelle est la face arrière sur un objet sans utiliser la commande Direction.
Note : Si vous réalisez des opérations booléennes sur des polysurfaces fermées et qu'elles ne donnent pas les résultats attendus (les mauvaises parties disparaissent), il est fort probable qu'un (ou plusieurs) objet ne soit pas entièrement fermé et que sa normale soit dirigée vers l'intérieur. Utilisez la commande Direction pour voir.
Astuce : Une façon de toujours savoir dans quel sens sont dirigées les surfaces est de choisir un mode d'affichage où les faces arrières sont représentées avec une autre couleur. Dans la version 3, utilisez la commande AffichageAvancé > Faces arrière en couleur pour ce faire. Dans la version 4, ouvrez Options > Apparence > Paramètres avancés > Ombré > Paramètres des faces arrière. Dans la version 5, ouvrez Options > Vue > Modes d'affichage > Ombré > Paramètres des faces arrière. Choisissez ensuite Couleur unique pour toutes les faces arrière et choisissez une couleur. Attention, ceci ne fonctionne que si vous travaillez en mode ombré. En mode filaire, semi-transparent ou rendu vous ne verrez rien.
Imaginons la plus simple des opérations booléennes. Vous avez une polysurface fermée solide qui est entièrement traversée par une surface simple. Vous pouvez facilement créer ceci avec un objet solide et la commande PlanCoupe, il suffit alors de dessiner une ligne de coupe sur votre objet dans la direction voulue.
Essayez maintenant la commande DifférenceBooléenne. Sélectionnez le solide comme premier ensemble et le plan de coupe comme deuxième ensemble. L'un ou l'autre des côtés du solide sera supprimé et le trou sera rempli avec un plan. Mais quel côté ???
Vous ne pouvez pas savoir sauf si vous lancez la commande Direction sur la surface. Regardez la direction de la normale de la surface. Puis réalisez la différence. Annulez, inversez la direction de la surface avec la commande Direction et essayez à nouveau la différence. La direction de la normale du plan détermine la partie conservée.
En général, si vous voulez que la différence booléenne entre une (poly)surface et un solide fonctionne comme s'il s'agissait de deux solides, les normales de l'objet ouvert devraient être dirigées vers l'objet solide - comme s'il s'agissant d'un solide également.
À partir de la version 4 de Rhino, OpBooléenne2Objets vous permet de faire défiler les différentes possibilités d'opérations booléennes et de voir le résultat à l'écran. Vous pouvez ensuite choisir le résultat désiré. Cette commande ne fonctionne qu'avec deux objets pour le moment.