[Sidefx-houdini-list] general way of asking if a channel is animated?
Pablo Giménez
pablogipi at gmail.com
Thu Sep 2 10:51:07 EDT 2010
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
> else:
> 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
frame.
>
> 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
> back.
>
> 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
>>> hou.Parm.overrideTrack().
>>>
>>> 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.
>>
>> Regards,
>> -Edward
>> _______________________________________________
>> Sidefx-houdini-list mailing list
>> Sidefx-houdini-list at sidefx.com
>> https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list
>>
> _______________________________________________
> Sidefx-houdini-list mailing list
> Sidefx-houdini-list at sidefx.com
> https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list
>
--
Un saludo
Best Regards
Pablo Giménez
More information about the Sidefx-houdini-list
mailing list