[Sidefx-houdini-list] general way of asking if a channel is animated?
Andrew D Lyons
tstexture at gmail.com
Thu Sep 2 12:25:40 EDT 2010
isTimeDependent() was fixed for expressions in 11recently from memory.
I logged that one months ago...
2010/9/2 Pablo Giménez <pablogipi at gmail.com>:
> 2010/9/2 Graham Thompson <captainhammy at gmail.com>:
>> I think I'd change up my previous code a little to get ride of return
>> inconsistencies between the two functions.
>> def isParmDriven(parm):
>> """ Test to see if a parameter is driven by an animation
>> channel, expression or CHOP override.
>> if parm.keyframes() or parm.overrideTrack():
>> return True
>> return False
> This is a good and clean snippet.
> But for me, in the cases I am using istimeDependent(), this function
> is just enough.
> The reason is that if I am picking up values from a channel I just
> only need to know if I have to pick it up just one time or for every
>> This way you always get a boolean result, as opposed to either a tuple
>> of hou.Keyframe or a single hou.Track object. If you wanted to know
>> specifically what was driving the parm I'd write a getParmDriver()
>> function that would return like my first example, then test what I got
>> On Thu, Sep 2, 2010 at 7:14 AM, Edward Lam <edward at sidefx.com> wrote:
>>> On 9/2/2010 9:59 AM, Graham Thompson wrote:
>>>> I think still think best way is to use keyframes(). If you need to
>>>> check against CHOPs overrides as well then you can also use
>>>> def isParmDriven(parm):
>>>> """ Test to see if a parameter is driven by an animation channel,
>>>> expression or CHOP override. """
>>>> return parm.keyframes() or parm.overrideTrack()
>>>> Than function returns true in the case there is an expression,
>>>> animation or a CHOP is exporting to the channel.
>>> I second this approach one wishes to know if a parm is "driven". This is
>>> distinctly different from what "isTimeDependent" means. As Pablo pointed
>>> out, "isTimeDependent" returns true if the given parameter might
>>> evaluate to a different value when time changes. If a parameter returns
>>> a constant value for all possible values of time, then it does NOT
>>> depend on time.
>>> ASIDE: Houdini uses the concept of "time dependency" to determine if a
>>> node requires recooking when time changes. If a node is determined to
>>> NOT be time dependent, then the cooking engine is free to make
>>> optimizations by reusing cached data. However, since this concept is
>>> used for optimizations, it might err on the conservative side so that no
>>> stale data is used. ie. if time dependency cannot be definitely
>>> determined, isTimeDependent() will return True.
>>> Sidefx-houdini-list mailing list
>>> Sidefx-houdini-list at sidefx.com
>> Sidefx-houdini-list mailing list
>> Sidefx-houdini-list at sidefx.com
> Un saludo
> Best Regards
> Pablo Giménez
> Sidefx-houdini-list mailing list
> Sidefx-houdini-list at sidefx.com
Andrew D Lyons | Digital Artist | http://www.tstex.com
More information about the Sidefx-houdini-list