Skip to content

validate_background_depth

ValidateBackgroundDepth

Bases: InstancePlugin, OptionalPyblishPluginMixin

Validate if all Background tool are set to float32 bit

Source code in client/ayon_fusion/plugins/publish/validate_background_depth.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
class ValidateBackgroundDepth(
    pyblish.api.InstancePlugin, OptionalPyblishPluginMixin
):
    """Validate if all Background tool are set to float32 bit"""

    order = pyblish.api.ValidatorOrder
    label = "Validate Background Depth 32 bit"
    hosts = ["fusion"]
    families = ["render", "image"]
    optional = True

    actions = [SelectInvalidAction, publish.RepairAction]

    @classmethod
    def get_invalid(cls, instance):
        context = instance.context
        comp = context.data.get("currentComp")
        assert comp, "Must have Comp object"

        backgrounds = comp.GetToolList(False, "Background").values()
        if not backgrounds:
            return []

        return [i for i in backgrounds if i.GetInput("Depth") != 4.0]

    def process(self, instance):
        if not self.is_active(instance.data):
            return

        invalid = self.get_invalid(instance)
        if invalid:
            raise PublishValidationError(
                "Found {} Backgrounds tools which"
                " are not set to float32".format(len(invalid)),
                title=self.label,
            )

    @classmethod
    def repair(cls, instance):
        comp = instance.context.data.get("currentComp")
        invalid = cls.get_invalid(instance)
        for i in invalid:
            i.SetInput("Depth", 4.0, comp.TIME_UNDEFINED)