Skip to content

validate_model_contents

ValidateModelContent

Bases: InstancePlugin

Validates Model instance contents.

A model instance may only hold either geometry-related object(excluding Shapes) or editable meshes.

Source code in client/ayon_max/plugins/publish/validate_model_contents.py
 8
 9
10
11
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
class ValidateModelContent(pyblish.api.InstancePlugin):
    """Validates Model instance contents.

    A model instance may only hold either geometry-related
    object(excluding Shapes) or editable meshes.
    """

    order = pyblish.api.ValidatorOrder
    families = ["model"]
    hosts = ["max"]
    label = "Model Contents"

    def process(self, instance):
        invalid = self.get_invalid(instance)
        if invalid:
            raise PublishValidationError(("Model instance must only include"
                                          "Geometry and Editable Mesh. "
                                          f"Invalid types on: {invalid}"))

    def get_invalid(self, instance):
        """
        Get invalid nodes if the instance is not camera
        """
        invalid = []
        container = instance.data["instance_node"]
        self.log.info(f"Validating model content for {container}")

        selection_list = instance.data["members"]
        for sel in selection_list:
            if rt.ClassOf(sel) in rt.Camera.classes:
                invalid.append(sel)
            if rt.ClassOf(sel) in rt.Light.classes:
                invalid.append(sel)
            if rt.ClassOf(sel) in rt.Shape.classes:
                invalid.append(sel)

        return invalid

get_invalid(instance)

Get invalid nodes if the instance is not camera

Source code in client/ayon_max/plugins/publish/validate_model_contents.py
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
def get_invalid(self, instance):
    """
    Get invalid nodes if the instance is not camera
    """
    invalid = []
    container = instance.data["instance_node"]
    self.log.info(f"Validating model content for {container}")

    selection_list = instance.data["members"]
    for sel in selection_list:
        if rt.ClassOf(sel) in rt.Camera.classes:
            invalid.append(sel)
        if rt.ClassOf(sel) in rt.Light.classes:
            invalid.append(sel)
        if rt.ClassOf(sel) in rt.Shape.classes:
            invalid.append(sel)

    return invalid