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 中的帧并存储值/插入关键帧

这是最好的方法吗?

这是问题的背景。

首先,我需要找到道具存储的最大列表。我是 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 回答