首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Houdini,Python:范围,随机化和时移关键帧

Houdini,Python:范围,随机化和时移关键帧
EN

Stack Overflow用户
提问于 2020-05-29 22:18:27
回答 1查看 254关注 0票数 0

我有一个具有10 keyframes的简单模型object_A

第1-5帧仅在X上旋转,第6-10帧仅在Y上旋转。

根据copy to point (胡迪尼),我将object_A作为instance复制到网格上的每个点上。

现在我想要为每个实例range, randomize and timeshift关键帧。

在1-5的range中,选择一个random关键点并将该关键帧timeshiftframe 1

我还想在下拉列表中定义关键帧。下拉列表包含两个标记和两个标签((1, 5), (rotation_x))((6, 10), (rotation_y))

我的第一行代码是这样的:

代码语言:javascript
复制
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),它就不再起作用了。

代码语言:javascript
复制
TypeError: range() integer end argument expected, got str.

EN

回答 1

Stack Overflow用户

发布于 2020-05-31 21:05:51

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

代码语言:javascript
复制
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]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62088037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档