Frage

Ich bin Speicherung Animation Schlüsselbilder von Cinema4D (die ehrfürchtige py4D verwendet wird) in eine Listen von Listen:

props = [lx,ly,lz,sx,sy,sz,rx,ry,rz]

ich ausgedruckt die Keyframes für jede Eigenschaft / Spur in einer beliebigen Animation und sie sind unterschiedlich lang:

track Position . X has 24 keys
track Position . Y has 24 keys
track Position . Z has 24 keys
track Scale . X has 1 keys
track Scale . Y has 1 keys
track Scale . Z has 1 keys
track Rotation . H has 23 keys
track Rotation . P has 24 keys
track Rotation . B has 24 keys

Nun, wenn ich die Schlüssel in Blender Ich brauche verwenden möchten so etwas wie:

  1. auf den aktuellen Frame gehen
  2. setzen die Eigenschaften für den Schlüsselrahmen (können Position, Rotation, Skalierung sein), und Einsatz ein Keyframe

Bisher ist mein Plan zu:

  1. Schleife von 0 bis zur maximalen Anzahl von Schlüsselbildern für alle die Eigenschaften
  2. Schleife durch jede Eigenschaft
  3. Überprüfen Sie, ob es einen Wert für den aktuellen Schlüssel gespeichert hat, wenn ja, in Blender auf den Rahmen gehen und speichern die Werte / Insert Keyframe

Ist dies der beste Weg, dies zu tun?

Dies ist der Kontext für die Frage.

Zuerst muss ich die größte Liste dass Requisiten Läden finden. Ich bin neu in Python und frage mich, ob es eine magische Funktion war, die das für Sie tut. Ähnlich wie bei max (), aber für die Liste Längen.

Im Moment des Ich denke, es so Codierung:

//after props are set
lens = []
for p in props: lens.append(len(p))
maxLen = max(lens)

Was wäre der beste Weg, um dies zu bekommen?

Danke

War es hilfreich?

Lösung

max(enumerate(props), key = lambda tup: len(tup[1]))

Das gibt Ihnen ein Tupel enthält (index, list) der längsten Liste in Requisiten.

Andere Tipps

Sie können einen Generator Ausdruck verwenden:

maxLen = max(len(p) for p in props)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top