Modélisation NURBS dans Rhino 3D et T-Spline


Il existe au moins deux approches pour créer des modèles 3D. Dans l'un d'eux, le plus populaire, les objets sont constitués de nombreux polygones. Dans une autre ( modélisation de surface de forme libre ) - à partir de surfaces NURBS définies par des courbes (splines).

Chaque approche a ses avantages et ses inconvénients, à bien des égards similaires aux différences entre les graphiques 2D raster et vectoriels. De nombreux articles sont consacrés aux fonctionnalités du travail avec un logiciel de modélisation de polygones, mais en ce qui concerne les outils de modélisation NURBS, ici, à mon avis, la situation est plus compliquée. La plupart de ces articles sont soit des didacticiels sur la création d’objets spécifiques, soit plus destinés aux créateurs de logiciels qu’à ses utilisateurs et sont pleins de termes comme «poids, points T, courbes du n-ième ordre», etc. J'essaierai de passer par le milieu .

La création d'objets à partir de surfaces NURBS est utilisée dans des zones où la précision joue un rôle important - à la fois par elle-même et sa conservation lors de la modification d'un objet. Ceci est particulièrement important dans la fabrication de pièces sur des machines CNC, c'est pourquoi cette approche est largement utilisée en CAO.

Cependant, la précision n'est pas la seule raison de rejeter les polygones. La modélisation NURBS est très largement utilisée en design industriel, architecture et bijouterie. Si vous regardez des bâtiments modernes bien connus, vous remarquerez qu'ils sont une combinaison de transformation en formes mutuelles - soit des primitives géométriques reconnaissables, soit des surfaces complexes, clairement définies mathématiquement. Il en va de même pour les carrosseries de voitures, les appareils électroménagers, ainsi que divers anneaux, colliers (en particulier l'aspect «organique»), etc.

Souvent, ces formes sont assez reconnaissables et sont dues aux capacités typiques du logiciel de modélisation NURBS. En d'autres termes, la conception est souvent davantage déterminée par les spécificités du logiciel utilisé que par les idées du concepteur.

Dans cet article, je veux, sur l'exemple du package Rhino 3D , me concentrer sur certaines fonctionnalités et problèmes spécifiques à cette approche.

Ici, vous devez immédiatement vous retirer. Le fait est que travailler avec des surfaces NURBS peut également être très différent.

Nous considérerons deux façons - la fonctionnalité standard de Rhino et la fonctionnalité T-Spline , qui est un plug-in populaire pour Rhino et, en fait, est un éditeur à l'intérieur de l'éditeur - avec sa propre représentation des surfaces / corps et ses façons de les modifier.

Examinons d'abord quelques primitives créées à l'aide de trois approches différentes. Ensuite, je les appellerai «maillage» (polygonal), «rhinocéros» (Rhino NURBS) et «tspline» (T-Spline NURBS). Oui, la modélisation de polygones dans Rhino est également possible, bien que sous une forme très épurée.

Trois cylindres, sphères, cubes, surfaces courbes sont représentés ici.



Bien sûr, comparer directement l'un avec l'autre n'est pas tout à fait correct - en particulier parce que les sommets des polygones et les points définissant la spline sont loin d'être la même chose. Cependant, certains points utiles peuvent être clairement observés ici.

Par exemple, dans la variante Rhino, une sphère est une surface recourbée (où la ligne est plus épaisse - le lieu de sa connexion).

Cylindre - trois surfaces: un mur torsadé et deux «couvercles» ronds.

Le cube Rhino est quelque peu similaire à un maillage - il se compose de six surfaces planes (le fait qu'elles soient plates n'est ici qu'un cas spécial - elles pourraient également être concaves).

Il y a clairement quelque chose d'étrange dans la version T-Spline - le cylindre ressemble à un baril et le cube ressemble à une sphère. Et la surface, si vous regardez de près, a des coins arrondis. En fait, il semble qu'ils essaient de retirer la balle gonflée avec des cerceaux. Et pour se rapprocher de la forme claire requise, plus de «cerceaux» seront nécessaires. Mais nous y reviendrons. Vous pouvez également remarquer que T-Spline n'a pas de coutures.

C Le maillage est compréhensible - il est clair que les surfaces courbes, avec un petit nombre de polygones, ne sont pas très lisses. Ce n'est pas une nouveauté, bien sûr. Mais avec le cube, tout va bien.

Essayons maintenant de déformer tous les objets de manière similaire, si possible, en tirant sur le coin:



La réaction est clairement différente. Les objets en maille ont réagi le plus fortement que tous, Rhino s'est avéré être plus paresseux et plastique, enfin, et T-Spline en général sont des échantillons de corps mou.

Vous avez une idée générale, passons maintenant aux détails.

Surface plate en Rhino


Dans Rhino, vous pouvez dessiner une courbe et utiliser l'une des commandes PlanarSrf, ExtrudeCrv, EdgeSrf (il existe d'autres options) pour obtenir un plan délimité par une certaine courbe:



Il semble que le résultat (à l'exception de la forme) soit partout le même. Mais ce n'est pas le cas - dans le premier cas, l'équipe PlanarSrf vient en fait de prendre le rectangle et d'y cacher tout ce qui dépasse la courbe. Ce processus est appelé rognage. Ci-dessous, vous pouvez voir le résultat de la commande Untrim qui supprime le trim:



Cette différence est importante, car souvent les objets (et les trous qu'ils contiennent) sont constitués de surfaces recadrées plus grandes et se comportent en conséquence:



Souvent, lors de l'exécution d'opérations sur de tels objets, des problèmes surviennent au niveau des articulations des surfaces. Par exemple, voici une situation assez typique avec la formation de trous lors de l'opération de chanfreinage (les soi-disant «bords nus» sont mis en évidence en couleur):



Et un autre exemple:



Pour éliminer ces types de problèmes, vous devez supprimer le découpage et créer manuellement de nouvelles courbes pour le recadrage, puis les ajuster pour les joindre, car s'ils ne sont pas joints correctement, nous n'obtiendrons pas un corps solide (en rejoignant avec Join).

Pour éviter un travail inutile, il est nécessaire de bien réfléchir à l'avance à ce qui sera fait et comment, car lorsqu'un problème survient soudainement, il s'avère qu'il a été reculé de plusieurs pas et il est déjà problématique de revenir à ce stade.

Autrement dit, dans Rhino, il n'y a pas de moyen facile d'éditer des surfaces complexes et leurs corps. Il s'agit d'une faille importante dans le travail avec Rhino, qui est partiellement corrigé dans T-Spline.

Surface plate en T-Spline


Essayons maintenant de dessiner une surface plane dans T-Spline. Je dois dire tout de suite qu'obtenir un avion délimité par une courbe particulière est aussi simple que dans Rhino - vous ne pouvez pas. Plus précisément, vous le pouvez, mais sa topologie sera si (terrible) que vous ne pourrez l'utiliser que dans certains cas particuliers.



Dans le premier cas, l'objet t-spline est formé par extrusion de la courbe. Notez que les bords sont formés là où il y avait des points sur la courbe (en d'autres termes, toutes les courbes semblables ne seront pas également utiles pour une tâche spécifique).

En outre, il y a un problème de trou au centre, à propos duquel ci-dessous. Ici, le trou est simplement déguisé - il a une taille nulle (les coordonnées de tous les points qui définissent ses bords coïncident), mais en pratique, c'est une très mauvaise situation. Soit dit en passant, la sphère tspline régulière mentionnée dans l'une des images précédentes a également été réalisée - en fait, ce n'est pas un corps solide et il y a des trous aux pôles. Mais le quadball, bien que topologiquement et plus proche du cube, mais ressemble à une sphère et, de plus, solide. Donc tout est compliqué et mystérieux.

Dans le second cas, le cadre des lignes est pris comme base. Cette méthode vous permet d'obtenir une bonne approximation de la forme souhaitée et en même temps, ce qui est très important, donne une topologie saine (en fait, vous la spécifiez complètement vous-même). Cependant, la relation entre les lignes et la surface résultante n'est pas évidente même dans les cas simples.

Le troisième cas est un analogue de Loft de Rhino.

Dans le quatrième cas, l'avion est créé immédiatement - avec la commande tsPlane. Vous pouvez définir le nombre de faces horizontalement et verticalement. En prenant un tel avion comme base, puis en supprimant l'excédent et en déplaçant le reste - vous pouvez obtenir une figure assez complexe avec une bonne topologie:



Revenons Ă  la question des trous


Il existe une commande _tsFillHole qui les ferme automatiquement. Cependant, le résultat de son travail est mal prévu et satisfaisant seulement dans certains cas très simples (comme un trou dans la figure ci-dessus).

Dans la plupart des cas, les trous doivent être soigneusement et soigneusement fermés - soit en soudant les sommets adjacents avec la commande tsWeld, soit en créant des arêtes entre les sommets existants avec la commande _tsAppend:



Comme vous pouvez le voir, si vous vous approchez «de face», dans tous les cas, le résultat est terrible. Non seulement la topologie est telle qu'elle n'a pas d'application pratique, mais la forme des bordures extérieures a également été déformée. Et, bien que tout cela puisse être corrigé, l'erreur ici est dans la manière même dont la surface a été créée - il sera plus difficile de corriger ici que de le refaire. Pour cette situation, tsFromLines serait bien mieux (au fait, cela rappelait une photo célèbre avec une toile d'araignée lapidée et sobre):



Surfaces courbes et corps solides dans Rhino


Quelle est la différence entre un corps solide (polysurface solide ou fermée) d'une surface (surface) ou plusieurs surfaces connectées (polysurface ouverte)? Aussi étrange que cela puisse paraître, les corps solides ne peuvent pas différer en apparence des seules surfaces. La vraie différence est le manque de trous. Toutes les surfaces formant un corps solide doivent être étroitement jointes (Join) sans aucun espace. Dans ce cas, l'objet sera considéré comme une polysurface fermée (et non ouverte). Bien sûr, il y a le concept de tolérance et il peut être modifié par des paramètres afin qu'un écart clairement visible soit considéré comme l'absence d'un écart. Mais c'est déjà une situation d'urgence et vous ne devez pas emprunter cette voie.



Une surface courbe peut être obtenue de la même manière qu'une surface plane - par extrusion d'une courbe, ainsi que de plusieurs autres façons:



Prenons un exemple simple - un capuchon de clé. C'est là que Rhino fonctionne très bien. Pour plus de commodité, nous allons insérer une image à l'aide de PictureFrame pour voir immédiatement quoi, où et quelle taille devrait être approximativement:



Ici, tout ce qui a été pris comme base est standard. Rectangle parallélépipédique primitif, extrudé avec des bords arrondis sur le dessus. En conséquence, la soustraction de la sphère (pour obtenir une dépression) et tous les arrondis ultérieurs des bords ont fonctionné correctement.

Prenons maintenant une option plus compliquée - le combiné et essayons de le représenter sans hésitation (généralement ils le font d'abord, puis sont déçus par l'outil).

Première option, via CreateSolid:



C'est-à-dire encercler les contours avec des courbes, les transformer en surfaces par extrusion, puis utiliser la commande Créer un solide pour créer un corps limité par l'intersection de ces surfaces.

Il semble qu'au début, tout se passe bien, et surtout simple. Les problèmes commencent lorsque nous voulons rendre les bords arrondis du tube.

Il existe une commande Congé pour cela. Premièrement, il est assez difficile de faire exactement les arrondis nécessaires, mais cela ne sera même pas abordé. Nous le faisons primitivement - sélectionnez les bords et le rayon. Cela a fonctionné, mais d'une part un artefact évident est visible (en fait il y en a plus, juste les autres sont moins visibles). En y regardant de plus près, il s'avère qu'à cet endroit les surfaces sont loin d'être idéales, mais étaient pour ainsi dire froissées. En conséquence, Fillet a fonctionné de manière inappropriée. Étrange, car les courbes d'origine étaient assez lisses et d'apparence soignée. Il s'avère que c'est loin d'être suffisant!

Les causes des problèmes sont différentes. Il peut s'avérer que la courbe le long de laquelle le bord de la surface est coupé a de petites boucles, des plis et d'autres charmes.

En conséquence, ici, nous serons obligés de reculer, de refaire / refit cette courbe, ou même de recréer le corps. Il y a des problèmes causés par les opérations elles-mêmes, à la suite desquelles de nouvelles courbes et surfaces sont formées.

Vous pouvez peut-ĂŞtre arrondir tout de suite? Eh bien, vous le pouvez. Par exemple, en utilisant Loft et NetworkSurf:



Ici, une approche différente est utilisée - plusieurs courbes reflétant la forme des sections à plusieurs endroits du corps. L'équipe Loft construit immédiatement le corps à partir de ces courbes. Tout irait bien (seules les courbes ont besoin de plus, bien sûr, pour rendre la surface plus précise), mais il y a un problème avec les trous aux extrémités, qui sont très difficiles à fermer correctement (dans ce cas, Patch a été utilisé).

Une option plus compliquée est l'équipe NetworkSurf.



Dans ce cas, les courbes ne sont pas prises dans une direction, mais dans deux ou trois. En théorie, tout devrait bien se passer. En pratique, toutes les courbes doivent être situées les unes par rapport aux autres d'une manière strictement définie - quelque part se croisent, quelque part pas. Ces règles ne sont pas évidentes (et ne sont pas formellement décrites). Par conséquent, avec un petit nombre de courbes, comme dans cet exemple, l'équipe passe, mais un peu plus - pas plus. De plus, il n'y a pas de diagnostic significatif - seule la commande ne peut pas être exécutée. Ce qui ne va pas exactement est très difficile à découvrir.

Bien entendu, toute approche n'exclut pas l'unification de plusieurs corps en un seul, la coupure de certaines parties, les transformations, etc. Mais les problèmes posés initialement, aux stades ultérieurs, sont rarement correctement résolus.

La morale générale est la suivante: dans Rhino, vous pouvez créer un corps soigné complexe. Mais 90% du succès est déterminé au tout début du travail - au stade du choix de l'approche qui réussit pour un corps en béton donné et lors de la création des courbes principales. Le refus de le faire est l'une des raisons pour lesquelles les produits T-Spline sont apparus ...

Surfaces et corps courbes en T-Spline


Il y aura moins de variété dans T-Spline. La raison en est qu'il est plus facile, par rapport à Rhino, de réparer quelque chose de déjà fait. Pour cette raison, il peut être pratique de prendre une sorte de primitive et de la modifier simplement à la forme souhaitée.

Semblable à la situation avec l'avion, vous pouvez utiliser tsFromLines, en définissant la grille de lignes non pas dans l'avion, mais en 3D. Bien que cela soit encore plus compliqué que dans le cas 2D.

Dans certaines situations, il est pratique de créer d'abord une sorte de surface Rhino ou même d'importer un maillage, puis de le convertir en T-Spline, puis de le modifier. Mais cela n'est possible que dans des cas assez simples. De plus, dans une telle situation, vous ne pouvez pas influencer la topologie finale et les perspectives de modifications ultérieures en dépendent directement.

Par exemple, envisagez de créer le même combiné dans T-Spline. Prenez la boîte primitive et modifiez-la:



Tout d'abord, pliez à l'aide du pli. L'idée logique suivante serait de déformer sa partie médiane (comme sur la photo barrée), mais je dois dire tout de suite que c'est une mauvaise idée. Dans ce cas particulier, cela ne fonctionnera pas de manière à effectuer des virages lisses précis. Donc, faisons-le différemment - supprimez d'abord certaines des faces, puis fermez les trous avec tsAppend.

Vous remarquerez peut-être que ce tube particulier est un objet symétrique. Nous pouvons grandement simplifier notre travail en le signalant à T-Spline avec l'équipe tsSymmetry. Il y a deux approches: soit désigner l'axe de symétrie si nous avons déjà un objet symétrique (pas notre cas, car le tube semble juste symétrique - pour T-Spline les moitiés seront toujours légèrement différentes). Ou créez un objet symétrique. Pour ce faire, supprimez la moitié du tube et indiquez que le plan de symétrie passe le long de la ligne de retrait. Dorénavant, toutes les actions sur une moitié seront reflétées sur l'autre (voir la troisième image):



Soit dit en passant, au cours du processus, à certains endroits, les bords supplémentaires ont été supprimés. Plus ils sont petits, plus il est facile de créer une surface lisse et uniforme. En revanche, plus il y a d'arêtes, plus les modifications peuvent être détaillées. Dans le processus, les côtes aux bons endroits sont ensuite retirées, puis ajoutées - selon la situation.

T-Spline: des frontières nettes


Contrairement à Rhino, dans T-Spline, il est difficile de créer des bordures ou des coins nets. Il existe deux approches fondamentalement différentes pour résoudre ce problème. L'une est la création de soi-disant plis (plis). Dans ce cas, T-Spline indique clairement qu'un bord particulier doit être net



En pratique, cette approche présente de nombreux inconvénients. En particulier, cette netteté ne peut être contrôlée d'aucune façon, ce qui signifie qu'en fin de compte, vous n'avez pas à faire de congé après avoir converti la surface en Rhino. Avec une probabilité très élevée dans le processus, il y aura des problèmes qui seront difficiles à éliminer.

Une autre approche consiste à contrôler la courbure avec des arêtes supplémentaires et à modifier la distance entre elles. Ici aussi, il y a des difficultés - par exemple, à un angle où trois bords se rencontrent, il sera difficile d'obtenir le rayon de courbure requis. De plus, une inflexion très nette (de sorte que plus tard, lors de la conversion en Rhino, une «nervure» est obtenue) ne sera pas du tout possible. Et cela signifie que vous pouvez faire quelque chose avec, par exemple, le contourner, alors vous pouvez à peine le faire plus tard.



Transformation de surface chez Rhino


Rhino dispose d'un ensemble de commandes assez riche qui vous permet d'incliner, de plier, de tordre et même de déformer la surface de manière complexe. La seule chose à considérer ici est la mauvaise réversibilité de telles transformations. Si vous pliez la surface dans une direction, puis vous pliez en arrière - vous obtiendrez probablement une autre surface plus complexe. Avec des transformations multiples et / ou complexes de corps constitués de plusieurs surfaces, des problèmes se poseront au niveau des articulations de ces surfaces.



Transformation de surface dans T-Spline


Dans T-Spline, tout est beaucoup plus simple. Le plus souvent, vous n'avez même pas besoin d'utiliser de commandes spéciales - la simple sélection et le déplacement / rotation / mise à l'échelle des points, des bords ou des faces, y compris en combinaison avec la symétrie radiale, vous donne presque tout ce dont vous avez besoin.

Il n'y a pas de problème d'irréversibilité - les points peuvent toujours être retournés manuellement, même si cela nécessite un travail manuel minutieux.

Rhino (_Twist, _Bend .), — . tspline , tspline rhino, . , , , , :



:



Rhino: history


Rhino , history, . , history, . , , — , .

T-Spline:


Extrude Rhino, T-Spline -. , .



. — . , , — (star). ( ) .

— , .., , , ( — ). — , , ..



T-Spline Rhino?


:

Rhino:

— / ( , )
— , ( , )
— ( ) , , .
—

T-Spline:

— , . «»
— (, ) . Rhino — ( — ).
—

, , T-Spline, Rhino Rhino.

Rhino T-Spline


, , ( , T-Spline — .. ):

1. , , , T-Spline ( ) , , Rhino, T-Spline .

, , , pictureFrame .

mesh (, 3d ), rhino t-spline . , . T-Spline — tspline mesh.

, tsAppend' T-Spline .

2. T-Spline Rhino . , T-Spline ( ).

3. Rhino , . — . - , .. , . , T-Spline ( )

4. , Rhino, T-Spline. , , . , Rhino ( ), , , .



5. , Rhino. ?

. , . Rhino , — . — Keyshot, V-Ray . , NURBS , , …

, , Rhino. C'est-à-dire , Rhino…



, Rhino . , - (, , , , ), .

, Rhino — CAD-, STEP IGES, ( , , ).

Rhino


, Rhino 6. , T-Spline . , T-Spline ( 4.x) , Autodesk , Rhino, .

— Clayoo. , Rhino , Rhino. .

, Rhino 5 + T-Spline ( ). .

Source: https://habr.com/ru/post/fr475128/


All Articles