[PYTHON] Technik, um das Zeichnen des Bildschirms zu beenden und die Wartezeit für das Backen zu verkürzen

zunaechst

Dieser Artikel ist der 12. Tagesartikel von Maya Adventskalender 2019.

In der CG-Animationsproduktion tritt in jedem Prozess eine unfruchtbare Wartezeit auf ein Backen auf. Dieses Mal werde ich eine Technik einführen, um die Wartezeit für Backarbeiten so weit wie möglich zu reduzieren.

Gesamtdurchfluss

Hör auf, den Bildschirm von Maya zu zeichnen. ↓ Machen Sie schwere Verarbeitung. ↓ Setzen Sie die Bildschirmzeichnung in Maya fort und überprüfen Sie das Ergebnis.

Es wird der Fluss sein.

So beenden Sie das Zeichnen auf dem Bildschirm

Hier sind drei Möglichkeiten, um das Zeichnen von Maya-Bildschirmen zu stoppen.

Stoppen Sie das Zeichnen des Bildschirms über die Benutzeroberfläche (Maya 2017 ~)

Stoppen Sie das Zeichnen (UI)

Um das Zeichnen des Bildschirms über die Benutzeroberfläche zu beenden, drücken Sie die Stopptaste, die von einem roten Rahmen umgeben ist. image.png

Zeichnen gestoppt (UI)

Bei der Ausführung wird der Arbeitsbildschirm von einem roten Rahmen umgeben. Während dieser rote Rahmen angezeigt wird, wird das Zeichnen auf dem Maya-Bildschirm gestoppt. image.png

Zeichnen fortsetzen (UI)

Drücken Sie die Stopp-Taste erneut, um das Zeichnen auf dem Bildschirm fortzusetzen. image.png

Beenden Sie das Zeichnen des Bildschirms über den Befehl (ogs command / Maya2017 ~).

Sie können das Zeichnen mit dem Pausenflag des Befehls ogs beenden.

Stoppen Sie das Zeichnen (Befehl ogs)

Führen Sie den folgenden Befehl aus, um das Zeichnen des Bildschirms zu beenden. Der Bildschirm wird wie auf der Benutzeroberfläche von einer roten Linie umgeben.

cmds.ogs(pause=True)

Zeichnung fortsetzen (Befehl ogs)

Verwenden Sie denselben Befehl, um das Zeichnen fortzusetzen.

cmds.ogs(pause=True)

Vor maya2017 ...

Diese Funktion ist für Maya 2017- und frühere ogs-Befehle nicht verfügbar, da das Pausenflag nicht vorhanden ist.

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

Anwendungsbeispiel (Befehl ogs)

Schreiben Sie beim Backen von 1 bis 1000 Bildern wie folgt.

#Hör auf zu zeichnen
cmds.ogs(pause=True)

#Backverarbeitung
cmds.bakeResults( bakenodes, t=(1,1000), simulation=True )

#Zeichnung fortsetzen
cmds.ogs(pause=True)

Beenden Sie das Zeichnen des Bildschirms über den Befehl (Aktualisierungsbefehl / Maya2011 ~).

Die, die ich am häufigsten benutze

Zeichnen beenden (Befehl aktualisieren)

Führen Sie den folgenden Befehl aus, um das Zeichnen des Bildschirms zu beenden. Der rote Rahmen wird nicht wie der Befehl ogs auf dem Bildschirm angezeigt. Es friert nur den Bildschirm ein.

cmds.refresh(suspend=True)

Zeichnung fortsetzen (Befehl aktualisieren)

Verwenden Sie denselben Befehl, um das Zeichnen fortzusetzen.

cmds.refresh(suspend=False)

Anwendungsbeispiel (Aktualisierungsbefehl)

Schreiben Sie beim Backen von 1 bis 1000 Bildern wie folgt.

#Hör auf zu zeichnen
cmds.refresh(suspend=True)

#Backverarbeitung
cmds.bakeResults( bakenodes, t=(1,1000), simulation=True )

#Zeichnung fortsetzen
cmds.refresh(suspend=False)

Vergleich der Verarbeitungsgeschwindigkeit zwischen dem gestoppten Zeichnungszustand und dem Zeichnungszustand

Ich möchte die Zeit messen, die zum Backen benötigt wird, wenn der Bildschirm gestoppt ist / das Zeichnen nicht gestoppt ist. Vergleichen wir jeden von maya2019 / maya2018 / maya2017 / maya2015.

Zu verwendende Daten

Messen Sie die Zeit, die zum Backen einer einfachen Haarsimulation benötigt wird. Der Backbereich reicht von 1 bis 1000F. Die Gesamtzahl der zu backenden Gelenke beträgt 91. Mayas Bewertungsmodus ist auf DG festgelegt. bake.gif

Zu verwendendes Skript

Wie man nicht aufhört zu zeichnen

"""
Wie man nicht aufhört zu zeichnen
"""
import time
#Messung starten
start = time.time()

#Backverarbeitung
bakenode = cmds.ls('bake_joint*')
cmds.bakeResults( bakenode, t=(1,1000), simulation=True )

#Ende der Messung
elapsed_time = time.time() - start
print (u"Verarbeitungszeit:{0}".format(elapsed_time) + "[sec]")

So beenden Sie das Zeichnen mit dem Befehl ogs

"""
So beenden Sie das Zeichnen mit dem Befehl ogs
"""
import time
#Messung starten
start = time.time()

#Hör auf zu zeichnen
cmds.ogs(pause=True)

#Backverarbeitung
bakenode = cmds.ls('bake_joint*')
cmds.bakeResults( bakenode, t=(1,1000), simulation=True )

#Zeichnung fortsetzen
cmds.ogs(pause=True)

#Ende der Messung
elapsed_time = time.time() - start
print (u"Verarbeitungszeit:{0}".format(elapsed_time) + "[sec]")

So beenden Sie das Zeichnen mit dem Aktualisierungsbefehl

"""
So beenden Sie das Zeichnen mit dem Aktualisierungsbefehl
"""
import time
#Messung starten
start = time.time()

#Hör auf zu zeichnen
cmds.refresh(suspend=True)

#Backverarbeitung
bakenode = cmds.ls('bake_joint*')
cmds.bakeResults( bakenode, t=(1,1000), simulation=True )

#Zeichnung fortsetzen
cmds.refresh(suspend=False)

#Ende der Messung
elapsed_time = time.time() - start
print (u"Verarbeitungszeit:{0}".format(elapsed_time) + "[sec]")

Messergebnis

Addition: Das Messergebnis im Parallelmodus wurde hinzugefügt.

Öffnen Sie die in Maya 2019.2 erstellten Verifizierungsdaten in jeder Version und Maßnahme. Gemessen im DG-Modus und im Parallelmodus. Beenden Sie das Zeichnen des Bildschirms, wenn Sie den Befehl ogs und den Befehl refresh verwenden

▼ Auswertemodus DG

Maya Backen wie es ist ogs Befehl Aktualisierungsbefehl
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

▼ Auswertemodus parallel

Maya Backen wie es ist ogs Befehl Aktualisierungsbefehl
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

Der Parallelmodus ist ziemlich gut! Außerdem ist die Verarbeitungsgeschwindigkeit schneller, wenn Sie den Bildschirm für DG / Parallel nicht mehr zeichnen.

Als persönliche Faustregel nimmt dieser Geschwindigkeitsunterschied mit zunehmenden Daten zu. Wenn das Backen 10 Minuten dauert, dauert es ungefähr 2 Minuten ...!

Andere Verwendungen

Neben Backanimationen Der Stopp des Bildschirmzeichnens ist auch wirksam, wenn der Geometrie-Cache ausgegeben oder der Simulations-Cache gespeichert wird.

Schließlich

Nutze deine Zeit sinnvoll!

Recommended Posts

Technik, um das Zeichnen des Bildschirms zu beenden und die Wartezeit für das Backen zu verkürzen
Versuchen Sie zum ersten Mal, in Qiita zu posten
Molekulardynamiksimulation vorerst versuchen
"Stoppen Sie das Festschreiben japanischer Dateien für Git auf Mac> <" Vorerst habe ich ein Skript geschrieben, um nach inkompatiblen japanischen Dateien unter Mac und Linux zu suchen.
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 8 Verarbeitungszeitmessung und Profiler
[Python] Verwendung von Matplotlib, einer Bibliothek zum Zeichnen von Diagrammen
wxPython: Gleichzeitiges Zeichnen von Animationen und Grafiken
Ich möchte vorerst Selen bewegen [für Mac]
Ich habe versucht, die Zeit und die Zeit der C-Sprache zu veranschaulichen
Ich habe versucht, die Uhrzeit und das heutige Wetter anzuzeigen
[Einführung in die Stärkung des Lernens] Stärkung des Lernens, um sich vorerst zu bewegen
Ich möchte vorerst eine Docker-Datei erstellen.
Die Geschichte, zum ersten Mal seit 5 Jahren wieder an die Front zurückzukehren und Python Django umzugestalten
Erster Kaggle (Kaggle ①)
Kaguru zum ersten Mal
Ich möchte die Ausführungszeit aufzeichnen und ein Protokoll führen.
Der Java-Programmierer versuchte (vorerst), die Sprache Go zu berühren.
Vorerst möchte ich jede Datei mit ffmpeg konvertieren !!
[Tipps zur Pepper-Demo] Eine Methode zum schnellen Installieren und Entfernen von Pepper vor und nach der Demo, um unnötiges Rauschen zu minimieren.