[PYTHON] Technique pour arrêter de dessiner l'écran et réduire le temps d'attente pour la cuisson

en premier

Cet article est l'article du 12ème jour du Calendrier de l'Avent Maya 2019.

Dans la production d'animation CG, un temps d'attente stérile d'attente pour une cuisson se produit dans chaque processus. Cette fois, je présenterai une technique permettant de réduire au maximum le temps d'attente pour les travaux de pâtisserie.

Flux global

Arrêtez de dessiner l'écran de Maya. ↓ Faites un traitement lourd. ↓ Reprenez le dessin d'écran dans Maya et vérifiez le résultat.

Ce sera le flux.

Comment arrêter de dessiner à l'écran

Voici trois façons d'arrêter le dessin d'écran Maya.

Arrêtez de dessiner l'écran depuis l'interface utilisateur (Maya 2017 ~)

Arrêter le dessin (UI)

Pour arrêter de dessiner l'écran à partir de l'interface utilisateur, appuyez sur le bouton d'arrêt entouré d'un cadre rouge. image.png

Dessin arrêté (UI)

Une fois exécuté, l'écran de travail sera entouré d'un cadre rouge. Pendant que ce cadre rouge apparaît, le dessin sur l'écran Maya s'arrête. image.png

Reprendre le dessin (UI)

Appuyez à nouveau sur le bouton d'arrêt pour reprendre le dessin à l'écran. image.png

Arrêtez de dessiner l'écran à partir de la commande (commande ogs / Maya2017 ~)

Vous pouvez arrêter le dessin avec l'indicateur de pause de la commande ogs.

Arrêter le dessin (commande ogs)

Exécutez la commande suivante pour arrêter de dessiner l'écran. L'écran sera entouré d'une ligne rouge comme vous l'avez fait depuis l'interface utilisateur.

cmds.ogs(pause=True)

Reprendre le dessin (commande ogs)

Utilisez la même commande pour reprendre le dessin.

cmds.ogs(pause=True)

Avant maya2017 ...

Cette fonctionnalité n'est pas disponible pour Maya 2017 et les commandes ogs antérieures car l'indicateur de pause n'existe pas.

http://help.autodesk.com/cloudhelp/2015/JPN/Maya-Tech-Docs/CommandsPython/ogs.html image.png

Exemple d'utilisation (commande ogs)

Lors du traitement pour cuire de 1 à 1000 images, écrivez comme suit.

#Arrêter de dessiner
cmds.ogs(pause=True)

#Traitement de la cuisson
cmds.bakeResults( bakenodes, t=(1,1000), simulation=True )

#Reprendre le dessin
cmds.ogs(pause=True)

Arrêtez de dessiner l'écran à partir de la commande (commande d'actualisation / Maya2011 ~)

Celui que j'utilise le plus souvent

Arrêter le dessin (commande d'actualisation)

Exécutez la commande suivante pour arrêter de dessiner l'écran. Le cadre rouge ne s'affiche pas à l'écran comme la commande ogs. Cela fige juste l'écran.

cmds.refresh(suspend=True)

Reprendre le dessin (commande d'actualisation)

Utilisez la même commande pour reprendre le dessin.

cmds.refresh(suspend=False)

Exemple d'utilisation (commande de rafraîchissement)

Lors du traitement pour cuire de 1 à 1000 images, écrivez comme suit.

#Arrêter de dessiner
cmds.refresh(suspend=True)

#Traitement de la cuisson
cmds.bakeResults( bakenodes, t=(1,1000), simulation=True )

#Reprendre le dessin
cmds.refresh(suspend=False)

Comparaison de la vitesse de traitement entre l'état d'arrêt du dessin et l'état du dessin

Je voudrais mesurer le temps nécessaire à la cuisson lorsque l'écran est arrêté / le dessin n'est pas arrêté. Comparons chacun des maya2019 / maya2018 / maya2017 / maya2015.

Données à utiliser

Mesurez le temps nécessaire pour cuire une simple simulation de cheveux. La gamme de cuisson est de 1 à 1000F. Le nombre total de joints à cuire est de 91. Le mode d'évaluation de Maya est fixé à DG. bake.gif

Script à utiliser

Comment ne pas arrêter de dessiner

"""
Comment ne pas arrêter de dessiner
"""
import time
#Commencer la mesure
start = time.time()

#Traitement de la cuisson
bakenode = cmds.ls('bake_joint*')
cmds.bakeResults( bakenode, t=(1,1000), simulation=True )

#Fin de la mesure
elapsed_time = time.time() - start
print (u"temps de traitement:{0}".format(elapsed_time) + "[sec]")

Comment arrêter de dessiner à l'aide de la commande ogs

"""
Comment arrêter de dessiner à l'aide de la commande ogs
"""
import time
#Commencer la mesure
start = time.time()

#Arrêter de dessiner
cmds.ogs(pause=True)

#Traitement de la cuisson
bakenode = cmds.ls('bake_joint*')
cmds.bakeResults( bakenode, t=(1,1000), simulation=True )

#Reprendre le dessin
cmds.ogs(pause=True)

#Fin de la mesure
elapsed_time = time.time() - start
print (u"temps de traitement:{0}".format(elapsed_time) + "[sec]")

Comment arrêter le dessin à l'aide de la commande d'actualisation

"""
Comment arrêter le dessin à l'aide de la commande d'actualisation
"""
import time
#Commencer la mesure
start = time.time()

#Arrêter de dessiner
cmds.refresh(suspend=True)

#Traitement de la cuisson
bakenode = cmds.ls('bake_joint*')
cmds.bakeResults( bakenode, t=(1,1000), simulation=True )

#Reprendre le dessin
cmds.refresh(suspend=False)

#Fin de la mesure
elapsed_time = time.time() - start
print (u"temps de traitement:{0}".format(elapsed_time) + "[sec]")

Résultat de la mesure

Addition: Le résultat de la mesure en mode parallèle a été ajouté.

Ouvrez les données de vérification créées dans Maya 2019.2 dans chaque version et mesure. Mesuré en mode DG et en mode parallèle. Arrêter le dessin d'écran lors de l'utilisation de la commande ogs et de la commande d'actualisation

▼ Mode d'évaluation DG

Maya Cuire tel quel commande ogs commande de rafraîchissement
maya2019 60.34s 32.31s 43.90s
maya2018 59.15s 31.56s 45.97s
maya2017 55.93s 25.34s 31.18s
maya2016 51.18s None 20.76s
maya2015 47.82s None 17.21s

▼ Mode d'évaluation parallèle

Maya Cuire tel quel commande ogs commande de rafraîchissement
maya2019 17.34s 15.80s 14.87s
maya2018 18.78s 16.17s 19.69s
maya2017 16.84s 13.92s 12.94s
maya2016 46.50s None 20.14s
maya2015 None None None

Le mode parallèle est plutôt bon! En outre, la vitesse de traitement est plus rapide si vous arrêtez de dessiner l'écran pour les deux DG / parallèle.

En règle générale, cette différence de vitesse augmente à mesure que les données traitées augmentent. Si la cuisson prend 10 minutes, cela prendra environ 2 minutes ...!

Autres utilisations

Outre les animations de cuisson L'arrêt du dessin d'écran est également efficace lors de la sortie du cache de géométrie ou de l'enregistrement du cache de simulation.

finalement

Utilisez votre temps à bon escient!

Recommended Posts

Technique pour arrêter de dessiner l'écran et réduire le temps d'attente pour la cuisson
Essayez de publier sur Qiita pour la première fois
Simulation de dynamique moléculaire à essayer pour le moment
"Arrêtez de soumettre des fichiers japonais à git sur Mac> <" Pour le moment, j'ai écrit un script pour rechercher des fichiers japonais incompatibles sur Mac et Linux.
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 8 Mesure du temps de traitement et profileur
[python] Comment utiliser Matplotlib, une bibliothèque pour dessiner des graphiques
wxPython: dessin simultané d'animation et de dessin graphique
Je veux déplacer le sélénium pour le moment [pour mac]
J'ai essayé d'illustrer le temps et le temps du langage C
J'ai essayé d'afficher l'heure et la météo d'aujourd'hui w
[Apprentissage de renforcement d'introduction] Renforcement de l'apprentissage pour bouger pour le moment
Je veux créer un Dockerfile pour le moment.
L'histoire du retour au front pour la première fois en 5 ans et de la refactorisation de Python Django
Premier Kaggle (kaggle ①)
Kaguru pour la première fois
Je souhaite enregistrer l'heure d'exécution et conserver un journal.
Le programmeur Java a essayé de toucher le langage Go (pour le moment)
Pour le moment, je veux convertir n'importe quel fichier avec ffmpeg !!
[Pepper Demo Tips] Une méthode pour installer et retirer rapidement Pepper avant et après la démo afin de minimiser les bruits inutiles.