jeudi 28 novembre 2013

Marvelous Designer to Cloth - Partie I

     Pour notre projet de film nous avons pris la décision d'utiliser le fameux Marvelous Designer pour faire nos models de vêtements. 

     Les meshs extraits de MD ont un avantage : Les Coordonnées UVs qui sont parfaites (comme un tissu à plat), 
mais deux inconvénients: Les meshs sont en garment (cad. des triangles un peu dans tous les sens, certains plug de simulation s'en sortent très bien avec mais pas tous ), et si vous avez fait des coutures vos meshs peuvent ne pas être weldés au niveau de ces coutures ( gênant pour la simulation ET pour le rendu, pour tout ce qui est displace / sss etc. )

     Mon but personnel étant également de pouvoir resculpter certains plis sous zBrush cela oblige à avoir un model assez propre et tout en quad pour éviter les re-tesselations aléatoires de ce dernier.

    Puis notre Simulation est prévue pour être faite dans maya avec le plug-in Qualoth de FxGear.


PARTIE I : Faire des meshs en Quads (dans Maya 2014):

Voici mon premier exemple : Un vieux en poncho.

       Le poncho est en une seule pièce donc rien de problématique quand aux coutures.
Sur l'image : La modé sortie de MD, (Paramètres d'export : -unweld -unified Uvs -single object)


Voici donc mes mesh après une opération de mesh > separate et un Delete history

La première chose à faire est de vérifier les UVs de l'objet que vous allez convertir en quads.
Celui ci dois rentrer dans le premier UV Tile (coordonnées U=0:1,V=0:1)



En gros à partir de là voici la méthode théorique:
- On vérifie les UVs
- On créé un duplicata de notre objet
- Chacuns des vertex de cet objet vont prendre en World les coordonnées de l'UV.

( y = V, x = U, z = 0 ) ce qui aura pour effet de vous faire un mesh à plat sur le plan XY et n'ayant pas de dimensions excédant 1 unitée.




- On créé un duplicata de notre objet plat
- On créé ensuite un pCube de 1 sur 1  avec beaucoup de subdivision horizontales et verticales
- On extrude notre mesh plat pour qu'il lui rentre dans le cube 
- On fait une opération booléenne d'intersection pour avoir un pochoir de notre forme en quads


- On supprime les faces Inutiles (celles qui ne sont pas en z=0) 






- On créé un blendShape entre notre mesh Marvelous plat et notre mesh d'origine
- Ensuite on fait un transfert attributes des coordonnées d'UV à partir des positions en World des points (mesh MD plat ---> mesh en Quad), on supprime l'historique quand c'est fait.
Maintenant nos deux meshs ont les même UVs sans avoir la même topologie.



- Puis un deuxième transfert attributes, cette fois ci on transfert les positions de points mais en utilisant les UVs ( ce transfert d'attribut aura l'effet d'un wrap )

- En laissant le transfert en place, on active notre blendShape à 1.



       Si tous se passe bien votre mesh en quad vas rester collé à l'autre lors de son interpolation de blendShape, ce qui aura pour effet de le remettre en place sur le mesh d'origine. 




Magique n'est-ce pas ?

Rassurez vous avant de continuer, il y a un script pour ça.

Voici donc le script qui vous permet d'automatiser ces étapes:

Ce script est une version que j'ai remodifiée, et qui vient du tutorial de Adam Vanner:
https://sites.google.com/site/adamvanner/scripts-and-tools/marvellous-designer-quad-mesh-in-maya

Vous pourrez d'ailleurs y télécharger  ces deux autres scripts dont nous avons également besoin:

getUVShells.py

avMergeMeshEdges.py (pour l'étape d'après)


Donc le script se présente comme ceci:

Note : Le script automatise une partie des actions mais vous devez néanmoins vérifier les UVs au préalable. (d'ailleurs sur de petits objets qui ne font qu'un quart d'UV tile je vous conseille de les placer dans le coin en bas à gauche du tile car le script peut échouer dans le cas contraire, pour une raison obscure)


Quad Definition : Cela correspond au nombre de subdivisions de votre plane en quad ( plane créé sur l'UV Tile 1 je le rapelle )

Note : Si pour vos besoin vous devez dépasser une définition de 200 il y a un message d'avertissement de maya qui fait planter le script (message vous prévenant que plus de 200 c'est quand même beaucoup ... )
Du coup c'est simple : Créez un pCube qui ne sert à rien, mettez lui plus de 200 subdiv et quand le message apparait dite lui de ne plus se montrer. Supprimez ce cube et passez à la suite.

Selection to flat QuadMeshes : Cette première fonction vous créé des duplicatas de la shape comme décris dans la méthode ci dessus, ainsi que le node de blendShape:
- Un duplicata de votre shape d'origine en Garment (pour le blendShape)
- Un duplicata de votre Garment à plat (avec les coordonées de l'UV) groupée sous <name>Planar


- Une version en quad de ce mesh plat ( créée par l'opération booléenne ) parenté au World


Selection to Quad Cloth : Cette deuxième fonction s'occupe de faire les opérations de transfertAttribute afin de remettre votre mesh en quad en place sur le mesh d'origine et avec des UVs similaires.

Comme noté sur l'UI du script vous devez sélectionner votre garment plat puis votre mesh en quad plat avant d’exécuter la commande ( sur l'exemple en image ci dessus on selectionne d'abord polySurface2 puis polySurface4 )



       Si tout cela a marché vous pouvez supprimer le group "mdMesh" avec son contenu et renommer la polySurface de votre mesh en Quads.

       Je vous conseille vivement de garder une copie de vos mesh d'origine dans votre scène de travail pour la suite, car plus tard elles peuvent resservir à récupérer les UVs qui pourraient sauter ou partir en sucette au niveau des seams.












Aucun commentaire:

Enregistrer un commentaire