Rapport d'état de la branche sculpture
Reposté une partie de l'article de Pablo Dobarro traduit en français, bien des blocs de fonction de cette branche sont déjà implémentés dans Blender 2.81 beta!
Ce billet de blog traite des nouvelles fonctionnalités principales ajoutées à la branche des fonctionnalités en mode sculpture au cours des 3 derniers mois, ainsi que de mon opinion sur la manière de fusionner ces fonctionnalités dans master.
Nouvelles fonctionnalités
Curseur, préréglage de rayon et de courbe normaux
Le patch du curseur de sculpture qui suit la surface existe depuis un moment ( D3594 ). Cela peut fonctionner en échantillonnant la normale réelle de l'opération de sculpture ou en utilisant la normale d'un seul visage. Le code d'échantillonnage normal est désactivé lorsqu'un coup de sculpte est actif. Par conséquent, il ne devrait pas affecter les performances. Le curseur est également responsable de la mise à jour et de l'affichage du sommet actif (pour en savoir plus à ce sujet ultérieurement) sur tous les axes de symétrie activés en temps réel, avec prise en charge de la symétrie radiale et de la mosaïque.
La propriété Rayon normal limite le rayon de la sphère d'échantillonnage utilisée pour calculer la normale et le centre de la surface. Cela affecte à quel point la brosse suivra la surface de la sculpture, mais elle produira certains effets désirables dans certaines autres brosses. En modifiant cette valeur, vous pouvez utiliser la brosse à gratter pour sculpter une surface dure, ce qui n'était pas possible auparavant.
J'ai également ajouté un autre pinceau qui applique toujours la déformation au-dessus des coordonnées d'origine, ce qui est très utile pour effectuer des insertions ou des plis beaucoup plus facilement. En plus de cela, vous pouvez maintenant utiliser les mêmes préréglages de courbe que ceux utilisés lors de l'édition proportionnelle en mode édition pour l'atténuation du pinceau. Ces courbes produisent une déformation plus agréable que les valeurs par défaut fournies avec l'éditeur d'atténuation de pinceau pour le moment. Cela corrige également le problème de déformation du pinceau lorsque vous utilisez le préréglage de courbe par défaut actuel.
Voxel remesher
Voxel remesher utilise un ensemble de niveaux OpenVDB pour générer un nouveau maillage multiple à partir de la géométrie actuelle (il n’utilise pas réellement les voxels, mais j’ai pensé que ce concept est plus facile à comprendre car il est lié au volume). L'opérateur peut être exécuté à la fois en mode sculpture et en mode objet. De plus, il a été ajouté assez rapidement au modificateur remesh, notamment les filtres OpenVDB et les opérations CSG basées sur le volume (effectuées par Martin Felke).
Cette opération OpenVDB est idéale pour sculpter. Il produit un maillage avec une topologie parfaitement homogène et ne présente aucune perte de performances une fois le nouveau maillage calculé. Grâce à ce nouveau flux de travail, il devrait désormais être possible de sculpter à un niveau de détail bien supérieur à ce qui était possible auparavant avec dyntopo, même si le maillage résultant comporte davantage de sommets. Il prend également en charge la reprojection des couleurs de vertex et des masques de peinture. Il est donc possible de conserver les couleurs du modèle tout en bloquant ses formes. Outre la sculpture, ces nouvelles opérations de maillage OpenVDB peuvent également être utilisées pour l’impression 3D et les simulations.
Avec le nouveau concept de remesher statique de Blender, il est maintenant facile d’ajouter d’autres bibliothèques externes pour différents cas d’utilisation, comme Quadriflow pour la rétopologie automatique.
Sculpture des vertex par couleurs
Ce nouveau type de données de couleur est stocké dans le modèle de la même manière que le masque de sculpture. Ce faisant, j'ai pu réutiliser toutes les optimisations et fonctionnalités du mode Sculpt. Cela apporte une amélioration considérable des performances de la peinture de vertex, la possibilité de sculpter et de peindre en même temps et un code plus facile à gérer. Le code d'annulation a également été modifié pour prendre en charge les données de couleur et les données de couleur + déformation et j'ai porté certains outils de la peinture de vertex sur ce système, comme le sélecteur de couleur et le pinceau. À l'avenir, le code de vertex paint pourrait être remplacé en interne avec ce système sans aucune modification de l'interface utilisateur.
Le seul problème avec cette nouvelle approche est que les nouvelles données de peinture de sommet sont stockées sur les sommets et que l’ancienne était stockée sur les coins des faces. L'ancien système permet d'avoir une couleur différente par face, contrairement au nouveau système (sauf si vous dupliquez le sommet). Cette incompatibilité des données peut entraîner une perte de données pour certains utilisateurs travaillant avec des modèles low poly. Afin d'éviter cela, la branche de sculpture a les deux systèmes en place et j'ai ajouté deux opérateurs pour convertir les données de couleur entre eux. Pour cette raison, les nouvelles couleurs de vertex ne sont pas connectées aux rendus, vous ne pouvez donc pas les utiliser en temps réel depuis EEVEE / lookdev, ni les prévisualiser dans le plan de travail sans copier préalablement le calque dans un calque de couleur de vertex normal.
Filtres de maillage, masque et couleurs
Le but de ces outils est d'appliquer une opération à tous les sommets du maillage en même temps, en tenant compte du masque. En interne, elles ressemblent beaucoup aux brosses (une partie du code est partagée, comme le lissage). Avoir ces outils peut vous faire gagner beaucoup de temps et ils sont essentiels pour certains flux de travail.
Les filtres de couleur et de maillage ignorent les nœuds PBVH totalement masqués avant de commencer. Ils sont donc assez rapides pour travailler avec des maillages à haute densité lorsqu'ils sont partiellement masqués. Cette approche n’a aucun sens pour le filtre de masque, elle est donc beaucoup plus lente. En règle générale, la mise à jour constante de tous les nœuds du PBVH pour des modifications en temps réel n’est pas une opération rapide. Ces outils pourraient donc devenir beaucoup plus rapides à l’avenir.
Outil de transformation
En interne, l'outil de transformation est simplement un filtre de maille contrôlé par le code de transformation et le gizmo. La SculptSession a maintenant un point pivot avec position, rotation et échelle. Ce point est transformé par le code de transformation standard de Blender et tous les sommets de la sculpture sont mis à jour en conséquence, en parallèle, en utilisant le même code que le filtre de maille. Cette approche présente certaines limites (capture individuelle à partir de chaque sommet, par exemple), mais elle vous permet de travailler avec des maillages impossibles à gérer en mode édition. De plus, un nouveau code de symétrie a été ajouté pour calculer les transformations de vertex en conséquence.
Afin de positionner le pivot, j'ai ajouté un opérateur qui inclut plusieurs options (pivot pour centrer, pour la zone non masquée, pour le sommet actif…) et qui prend également en compte la symétrie. J'aimerais ajouter une option permettant de transformer le pivot uniquement sans affecter la sculpture, mais sans voir les gizmos lorsqu'une opération de transformation est active, cela ne serait pas très utile (c'est une fonctionnalité planifiée, elle devrait donc être prise en charge à l'avenir). .
J'ai également ajouté l'opérateur expansion du masque, spécialement conçu pour être utilisé avec l'outil de rotation pour créer un outil de pose. Il développe un masque à partir du sommet actif lorsque vous faites glisser le curseur, en suivant la topologie du modèle. Une fois l'opération terminée, le pivot est automatiquement mis à jour vers le centre de rotation correspondant. Cet outil est assez rapide, toutes les itérations sont mises en cache dès que vous appelez l'opérateur. Il suffit donc de vérifier quels sommets sont masqués pour une certaine itération lors de la mise à jour de l'aperçu.
Masquage automatique et générateurs de masque
L'idée de départ était de disposer d'un système permettant à l'utilisateur d'empiler plusieurs opérateurs de masquage. Par exemple, vous ne devriez pouvoir affecter que les sommets connectés, qui ne font pas partie d'un bord ouvert et dont l'influence sur les cavités est de 50%. À l'heure actuelle, le système utilise le masquage topologique et le contour ouvert, mais l'interface utilisateur n'est pas prête et vous ne pouvez les activer séparément qu'avec une case à cocher. Malgré cela, vous pouvez déjà utiliser le pinceau avec le masquage topologique, une fonctionnalité très demandée.
J'ai également ajouté plusieurs opérateurs pour générer des masques automatiquement. Masque par couleur génère un masque basé sur la couleur du sommet actif. Masquer par normale génère un masque limité par l'angle entre la normale de deux sommets connectés. Ceci est utile pour sélectionner des “faces” sur des sculptures en surface dure. Je dois encore trouver un moyen de résoudre les gros problèmes d’interface utilisateur de ces deux opérateurs. Ils ne peuvent être invoqués à partir du clavier, car ils ont besoin que le curseur soit visible et sur la sculpture. En outre, vous ne pouvez pas ajuster le seuil de l'opération de masquage à partir du panneau d'annulation. Vous devez donc modifier les valeurs de l'opérateur à partir du clavier avant de l'exécuter.
** Autres fonctionnalités **
- Option pour contrôler l'opacité du masque (déjà en master).
- Option permettant à l'outil Masque de lasso d'ignorer les sommets tournés vers l'arrière.
- Navigation dans la fenêtre de visualisation 2D, qui permet de garder la zone de travail sous contrôle lorsque vous travaillez avec des pinceaux, tout en offrant une vitesse de zoom plus prévisible lorsque vous utilisez une tablette à stylet.
- La distance utilisée pour générer de nouveaux pas de pinceau peut maintenant être mesurée à la fois dans l'espace d'écran et dans l'espace mondial.
- L'outil Pinceau Relax, qui distribue automatiquement la topologie sans affecter le volume du modèle.
Fusionner la branche
Si vous avez essayé la branche fonctionnalités-mode-sculpture, vous avez peut-être remarqué un bug assez évident: presque aucune des nouvelles fonctionnalités ne fonctionne avec le modificateur multires ou avec dyntopo activé. Ils peuvent être désactivés, ou ils peuvent planter Blender.
En interne, le mode Sculpture a 3 modes différents, FACES (lorsque vous sculptez sur un maillage), GRIDS (lorsque vous sculptez sur l’un des niveaux des modificateurs multires) et BMESH (lorsque dyntopo est activé, peu importe qu’il soit modifié. la topologie dynamiquement ou non). L'interface masque cette complexité, mais lorsque vous changez entre dyntopo, multires ou meshes, vous utilisez une structure de données totalement différente, une pile d'annulation et un code de rendu. Vous pouvez penser que cela prend en charge 3 modes de sculpture totalement différents en même temps. C'est pourquoi certains bogues sont spécifiques à un mode et qu'ils présentent des différences de performances notables.
La plupart des brosses sont implémentées à l'aide d'un assistant pbvh_vertex_iter qui agit en tant que couche d'abstraction pour les 3 systèmes. Cela fonctionne pour la plupart des brosses, mais par exemple, la brosse lisse (qui a besoin d'informations de topologie à partir du maillage) nécessite 3 implémentations différentes pour pouvoir fonctionner avec les 3 modes (vous pouvez vérifier la fonction smooth () de sculpt.c). .
Toutes les nouvelles fonctionnalités de la branche en mode sculpture reposent en grande partie sur des informations de topologie et sur une structure de données de maillage statique, telle que la brosse lisse, mais elles sont beaucoup plus complexes. Prendre en charge dyntopo et multires n’est pas une question de paresse ou de polissage des fonctionnalités, mais bien d’éviter une triplication de code insensée dans le mode de sculpture.
Cela dit, voici quelques options pour fusionner la branche en maître:...