Cet article est l'article du 15e jour du Calendrier de l'Avent Maya 2019.
Vous avez vu le [callback using pyside: MEventMessage] de zebraed (https://qiita.com/zebraed/items/5b01b799d5f37a14b6d3) l'autre jour. C'est ça?
On dit qu'OpenMaya peut gérer les mêmes fonctions que scriptJob avec légèreté et simplicité, je vais donc l'utiliser à l'avenir.
Cette fois, j'écrirai en utilisant scriptJob, mais ...
Les noms de nœuds en double ne provoquent pas d'erreur fatale dans Maya. Toutefois, si vous n'écrivez pas correctement le processus lors de la création du script mel, l'objet spécifié peut ne pas être trouvé et le script peut s'arrêter.
--Il n'y a aucun problème si l'outil fonctionne correctement même s'il existe des noms de nœuds en double, et si vous pouvez enfin nettoyer les données, vous n'avez pas besoin de lire cet article.
python
def rerename(node_uuid):
for node in cmds.ls(node_uuid):
if "|" in node:
basename = re.search("^(.+)?\|(.+?)(\d+)?$", node).group(2)
rename_name = cmds.rename(node, "{}#".format(basename))
--Exécute le traitement de changement de nom lorsque NameChanged est exécuté.
ls
, convertissez-le en UUID et exécutez le processus de changement de nom.def renameEvent():
for node_uuid in cmds.ls(cmds.ls(sl=True), uuid=True):
rerename(node_uuid)
nonSameNameAlliance.py#L11-L13
--Lors de la duplication manuelle, la sélection se déplace vers l'objet dupliqué, de sorte que le processus de changement de nom est exécuté lorsque SelectionChanged est exécuté. --Dag = True pour obtenir la hiérarchie, tr = True pour obtenir uniquement le nœud de transformation, convertir en UUID et effectuer le processus de changement de nom.
def duplicateEvent():
for node_uuid in cmds.ls(cmds.ls(sl=True, dag=True, tr=True), uuid=True):
rerename(node_uuid)
nonSameNameAlliance.py#L15-L17
def main():
try:
if jobIds is not None:
for jobId in jobIds:
cmds.scriptJob(kill=jobId, force=True)
except:pass
jobIds = []
jobIds.append(cmds.scriptJob(event=["NameChanged", renameEvent], protected=True))
jobIds.append(cmds.scriptJob(event=["SelectionChanged", duplicateEvent], protected=True))
nonSameNameAlliance.py#L19-L28
userSetup.py
import nonSameNameAlliance;nonSameNameAlliance.main()
Placez nonSameNameAlliance.py dans le dossier Scripts de Maya et ajoutez le processus de démarrage à userSetup.py. Désormais, lorsque Maya démarre, le processus sera enregistré dans scriptJob et sera automatiquement renommé.
Cliquez ici pour ce code source https://github.com/teionn/nonSameNameAlliance
Le nœud est automatiquement renommé lorsque vous l'utilisez dans la scène, donc je pense que c'est essentiellement pour les modélisateurs.
Il est conçu pour être exécuté uniquement sur le nœud de transformation.
--Si vous voulez obtenir l'effet sur tous les nœuds tels que les nœuds de forme intermédiaires, supprimez tr = True
.
Ce script ne juge pas le cas. Maya peut conserver des objets sensibles à la casse même dans la même hiérarchie.
Si vous apportez un actif à Unity dans cet état, il semble que s'il y a des objets ʻobject_a et ʻobject_A
, vous ne pourrez pas faire référence à l'un ou l'autre des objets.
L'article de demain portera sur rateionn's Supprimez-vous correctement: Plugins inconnus?.
Ça ... j'écris ... je n'ai pas encore écrit d'article ...
Je prévois de publier le script gratuitement à temps, donc je serais heureux si je viens de le télécharger.
Recommended Posts