2017-04-23 2 views
0

Je veux diviser un maillage en sections basées sur un certain nombre de sommets. Essentiellement, je veux un maillage coupé en sections de 300 verts chacune avec une section restante de ce qui reste.Maya: J'ai du mal à écrire un script pour couper un maillage en morceaux égaux

Je l'ai fait pour la plupart (je peux obtenir des verts/visages, etc.) mais j'ai du mal à trouver une manière gracieuse d'itérer à travers les mailles extraites. J'utilise polyChipOff qui n'a pas de valeur de retour pour les faces qu'il a ébréchées, donc c'est entièrement nouveaux objets qui sont créés que je n'ai pas de poignée pour que je ne peux pas continuer à écailler loin de la pièce précédente comme il no existe plus longtemps.

Des conseils sur comment faire à ce sujet mieux? J'ai pensé soit à parcourir toutes les mailles de la scène pour en trouver de nouvelles (les mettre en cache au début) ou à utiliser un ScriptJob pour détecter de nouveaux objets. Les deux semblent très hacky donc était curieux si quelqu'un avait des conseils.

Répondre

0

Vous pouvez essayer cette méthode:

import maya.cmds as cmds 

shape = cmds.listRelatives(p=True) 
object = cmds.listRelatives(a, p=True) 
selectedFace = cmds.ls(sl=True) 

cmds.select(object[0] + '.f[:]', tgl=True) 
unselecetedFace = cmds.ls(sl=True) 

duplicated = cmds.duplicate(object, un=True)[0] 
cmds.delete(duplicated, ch=True) 
cmds.delete(selectedFace) 

for i in range(len(unselecetedFace)): 
    unselecetedFace[i] = unselecetedFace[i].replace(object[0],duplicated) 

cmds.delete(unselecetedFace) 
cmds.select(duplicated) 
+0

Ahh très intéressant, je ne pensais pas en double partageant le même ordre de vert. Cela semble être un peu plus lent que je ne le voudrais, mais on ne sait jamais. Je vais essayer et comparer! – Rymbrant