我有一个具有10 keyframes的简单模型object_A。
第1-5帧仅在X上旋转,第6-10帧仅在Y上旋转。
根据copy to point (胡迪尼),我将object_A作为instance复制到网格上的每个点上。
现在我想要为每个实例range, randomize and timeshift关键帧。
在1-5的range中,选择一个random关键点并将该关键帧timeshift到frame 1。
我还想在下拉列表中定义关键帧。下拉列表包含两个标记和两个标签((1, 5), (rotation_x))和((6, 10), (rotation_y))
我的第一行代码是这样的:
import random
def retime_frames():
# values from dropdown tokens
fr_get = hou.evalParm('choose_frame_set')
for frX in range(fr_get):
fRandom = (random.choice(frX))
hou.parm('retime_frame').set(str(fRandom))
print fRandom我得到了一个错误,不知道在哪里。如果我使用像1,2,3,4,5这样的列表,它就可以工作。但是一旦我尝试使用range(var),它就不再起作用了。
TypeError: range() integer end argument expected, got str.

发布于 2020-05-31 21:05:51
我找到了一个随机帧的解决方案。
import random
""" Give out randomized, single frame
from given frame sequence preset. To add more presets
modify 'Choose Frame Set' menu in parameters.
'token' example1: '1-5' = frames 1 till 5.
'token' example2: '1-3, 7, 10-12' = 1 till 3 + 7 + 10 till 12
"""
def retime_frames():
fr_range = hou.evalParm("choose_frame_set")
fr_sequence = []
for frames in fr_range.split(','):
if '-' in frames:
a, b = frames.split('-')
a, b = int(a), int(b)
fr_sequence.extend(range(a, b + 1))
else:
a = int(part)
# random frame from frame_sequence, stepping (frame_range, step)
random_frame = random.sample(fr_sequence, 1)
hou.parm('retime_frame').set(str(random_frame)[1])
print str(random_frame)[1]

https://stackoverflow.com/questions/62088037
复制相似问题