Houdini,Python:范围、随机化和时间偏移关键帧

2024-09-26 21:50:26 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Percopy to point(Houdini)我将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]这样的列表,它会工作。 但一旦我尝试使用范围(var),它就不再起作用了

TypeError: range() integer end argument expected, got str.

enter image description here


Tags: 列表getobjectrangerandomfrframeset
1条回答
网友
1楼 · 发布于 2024-09-26 21:50:26

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

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

相关问题 更多 >

    热门问题