0

我有一个简单的object_A模型10 keyframes
帧 1-5 仅在 X 上旋转,帧 6-10 仅在 Y 上旋转。

每(Houdini)我在网格上的每个点上copy to point复制object_A为一个。instance

现在我想要range, randomize and timeshift每个实例的关键帧。
range从 1-5 中,选择一个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.

在此处输入图像描述

4

1 回答 1

0

我找到了随机帧的解决方案。

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]

retime_frames

于 2020-05-31T13:05:51.327 回答