12

Cinema4D(素晴らしいpy4Dを使用)からのアニメーションキーフレームをリストのリストに保存しています:

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

任意のアニメーションの各プロパティ/トラックのキーフレームを出力しましたが、長さが異なります。

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

これらのキーを Blender で使用したい場合は、次のようにする必要があります。

  1. 現在のフレームに移動
  2. そのキー フレームのプロパティを設定し (位置、回転、スケールにすることができます)、キーフレームを挿入します

これまでのところ、私の計画は次のとおりです。

  1. 0 からすべてのプロパティのキー フレームの最大数までループします。
  2. 各プロパティをループ
  3. 現在のキーの値が保存されているかどうかを確認します。保存されている場合は、Blender のフレームに移動し、値を保存する/キーフレームを挿入します

これはこれを行うための最良の方法ですか?

これが質問のコンテキストです。

まず、props ストアの最大のリストを見つける必要があります。私はPythonが初めてで、それを行う魔法の関数があるかどうか疑問に思っていました. max() に似ていますが、リストの長さです。

現時点では、次のようにコーディングすることを考えています。

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

それを得る最良の方法は何ですか?

ありがとう

4

2 に答える 2

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

(index, list)これにより、小道具の最長リストを含むタプルが得られます。

于 2010-06-30T13:34:11.177 に答える
8

ジェネレーター式を使用できます。

maxLen = max(len(p) for p in props)
于 2010-06-30T13:09:45.820 に答える