Skip to content

validate_no_animation

ValidateNoAnimation

Bases: InstancePlugin, OptionalPyblishPluginMixin

Validates No Animation

Ensure no keyframes on nodes in the Instance

Source code in client/ayon_max/plugins/publish/validate_no_animation.py
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
class ValidateNoAnimation(pyblish.api.InstancePlugin,
                          OptionalPyblishPluginMixin):
    """Validates No Animation

    Ensure no keyframes on nodes in the Instance
    """

    order = pyblish.api.ValidatorOrder
    families = ["model"]
    hosts = ["max"]
    optional = True
    label = "Validate No Animation"
    actions = [SelectInvalidAction]

    settings_category = "max"

    def process(self, instance):
        if not self.is_active(instance.data):
            return
        invalid = self.get_invalid(instance)
        if invalid:
            raise PublishValidationError(
                "Keyframes found on:\n\n{0}".format(invalid)
                ,
                title="Keyframes on model"
            )

    @staticmethod
    def get_invalid(instance):
        """Get invalid object(s) which have keyframe(s)


        Args:
            instance (pyblish.api.instance): Instance

        Returns:
            list: list of invalid objects
        """
        invalid = [invalid for invalid in instance.data["members"]
                   if invalid.isAnimated or get_invalid_keys(invalid)]

        return invalid

get_invalid(instance) staticmethod

Get invalid object(s) which have keyframe(s)

Parameters:

Name Type Description Default
instance instance

Instance

required

Returns:

Name Type Description
list

list of invalid objects

Source code in client/ayon_max/plugins/publish/validate_no_animation.py
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
@staticmethod
def get_invalid(instance):
    """Get invalid object(s) which have keyframe(s)


    Args:
        instance (pyblish.api.instance): Instance

    Returns:
        list: list of invalid objects
    """
    invalid = [invalid for invalid in instance.data["members"]
               if invalid.isAnimated or get_invalid_keys(invalid)]

    return invalid

get_invalid_keys(obj)

function to check on whether there is keyframe in

Parameters:

Name Type Description Default
obj str

object needed to check if there is a keyframe

required

Returns:

Name Type Description
bool

whether invalid object(s) exist

Source code in client/ayon_max/plugins/publish/validate_no_animation.py
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def get_invalid_keys(obj):
    """function to check on whether there is keyframe in

    Args:
        obj (str): object needed to check if there is a keyframe

    Returns:
        bool: whether invalid object(s) exist
    """
    for transform in ["Position", "Rotation", "Scale"]:
        num_of_key = rt.NumKeys(rt.getPropertyController(
            obj.controller, transform))
        if num_of_key > 0:
            return True
    return False