reviews fix and clean - bugfix with staticmethod

This commit is contained in:
Kaa Maurice 2022-08-15 14:20:11 +02:00
parent b1f2967622
commit 9cfa2e12e3
6 changed files with 40 additions and 50 deletions

View file

@ -1,11 +1,10 @@
from typing import List
import mathutils
import bpy
import pyblish.api
from openpype.api import ValidateContentsOrder
from openpype.hosts.blender.api.action import SelectInvalidAction
import openpype.api
import openpype.hosts.blender.api.action
class ValidateCameraZeroKeyframe(pyblish.api.InstancePlugin):
@ -16,18 +15,17 @@ class ValidateCameraZeroKeyframe(pyblish.api.InstancePlugin):
in Unreal and Blender.
"""
order = ValidateContentsOrder
order = openpype.api.ValidateContentsOrder
hosts = ["blender"]
families = ["camera"]
category = "geometry"
version = (0, 1, 0)
label = "Zero Keyframe"
actions = [SelectInvalidAction]
actions = [openpype.hosts.blender.api.action.SelectInvalidAction]
@staticmethod
def get_invalid(instance) -> List:
invalid = []
for obj in set(instance):
for obj in instance:
if isinstance(obj, bpy.types.Object) and obj.type == "CAMERA":
if obj.animation_data and obj.animation_data.action:
action = obj.animation_data.action

View file

@ -3,19 +3,19 @@ from typing import List
import bpy
import pyblish.api
from openpype.api import ValidateContentsOrder
from openpype.hosts.blender.api.action import SelectInvalidAction
import openpype.api
import openpype.hosts.blender.api.action
class ValidateMeshHasUvs(pyblish.api.InstancePlugin):
"""Validate that the current mesh has UV's."""
order = ValidateContentsOrder
order = openpype.api.ValidateContentsOrder
hosts = ["blender"]
families = ["model"]
category = "uv"
category = "geometry"
label = "Mesh Has UV's"
actions = [SelectInvalidAction]
actions = [openpype.hosts.blender.api.action.SelectInvalidAction]
optional = True
@staticmethod
@ -34,16 +34,10 @@ class ValidateMeshHasUvs(pyblish.api.InstancePlugin):
@classmethod
def get_invalid(cls, instance) -> List:
invalid = []
for obj in set(instance):
try:
if isinstance(obj, bpy.types.Object) and obj.type == 'MESH':
if obj.mode != 'OBJECT':
# Make sure we are in object mode.
bpy.ops.object.mode_set(mode='OBJECT')
if not cls.has_uvs(obj):
invalid.append(obj)
except RuntimeError:
continue
for obj in instance:
if isinstance(obj, bpy.types.Object) and obj.type == 'MESH':
if not cls.has_uvs(obj):
invalid.append(obj)
return invalid
def process(self, instance):

View file

@ -3,24 +3,24 @@ from typing import List
import bpy
import pyblish.api
from openpype.api import ValidateContentsOrder
from openpype.hosts.blender.api.action import SelectInvalidAction
import openpype.api
import openpype.hosts.blender.api.action
class ValidateMeshNoNegativeScale(pyblish.api.Validator):
"""Ensure that meshes don't have a negative scale."""
order = ValidateContentsOrder
order = openpype.api.ValidateContentsOrder
hosts = ["blender"]
families = ["model"]
category = "geometry"
label = "Mesh No Negative Scale"
actions = [SelectInvalidAction]
actions = [openpype.hosts.blender.api.action.SelectInvalidAction]
@staticmethod
def get_invalid(instance) -> List:
invalid = []
for obj in set(instance):
for obj in instance:
if isinstance(obj, bpy.types.Object) and obj.type == 'MESH':
if any(v < 0 for v in obj.scale):
invalid.append(obj)

View file

@ -3,8 +3,8 @@ from typing import List
import bpy
import pyblish.api
from openpype.api import ValidateContentsOrder
from openpype.hosts.blender.api.action import SelectInvalidAction
import openpype.api
import openpype.hosts.blender.api.action
class ValidateNoColonsInName(pyblish.api.InstancePlugin):
@ -15,18 +15,17 @@ class ValidateNoColonsInName(pyblish.api.InstancePlugin):
"""
order = ValidateContentsOrder
order = openpype.api.ValidateContentsOrder
hosts = ["blender"]
families = ["model", "rig"]
category = "cleanup"
version = (0, 1, 0)
label = "No Colons in names"
actions = [SelectInvalidAction]
actions = [openpype.hosts.blender.api.action.SelectInvalidAction]
@staticmethod
def get_invalid(cls, instance) -> List:
def get_invalid(instance) -> List:
invalid = []
for obj in set(instance):
for obj in instance:
if ':' in obj.name:
invalid.append(obj)
if isinstance(obj, bpy.types.Object) and obj.type == 'ARMATURE':
@ -40,4 +39,5 @@ class ValidateNoColonsInName(pyblish.api.InstancePlugin):
invalid = self.get_invalid(instance)
if invalid:
raise RuntimeError(
f"Objects found with colon in name: {invalid}")
f"Objects found with colon in name: {invalid}"
)

View file

@ -3,7 +3,7 @@ from typing import List
import bpy
import pyblish.api
from openpype.hosts.blender.api.action import SelectInvalidAction
import openpype.hosts.blender.api.action
class ValidateObjectIsInObjectMode(pyblish.api.InstancePlugin):
@ -12,22 +12,21 @@ class ValidateObjectIsInObjectMode(pyblish.api.InstancePlugin):
order = pyblish.api.ValidatorOrder - 0.01
hosts = ["blender"]
families = ["model", "rig", "layout"]
category = "cleanup"
label = "Validate Object Mode"
actions = [SelectInvalidAction]
actions = [openpype.hosts.blender.api.action.SelectInvalidAction]
optional = False
@staticmethod
def get_invalid(cls, instance) -> List:
def get_invalid(instance) -> List:
invalid = []
for obj in set(instance):
if isinstance(obj, bpy.types.Object):
if not obj.mode == 'OBJECT':
invalid.append(obj)
for obj in instance:
if isinstance(obj, bpy.types.Object) and obj.mode != "OBJECT":
invalid.append(obj)
return invalid
def process(self, instance):
invalid = self.get_invalid(instance)
if invalid:
raise RuntimeError(
f"Object found in instance is not in Object Mode: {invalid}")
f"Object found in instance is not in Object Mode: {invalid}"
)

View file

@ -4,8 +4,8 @@ import mathutils
import bpy
import pyblish.api
from openpype.api import ValidateContentsOrder
from openpype.hosts.blender.api.action import SelectInvalidAction
import openpype.api
import openpype.hosts.blender.api.action
class ValidateTransformZero(pyblish.api.InstancePlugin):
@ -17,20 +17,19 @@ class ValidateTransformZero(pyblish.api.InstancePlugin):
"""
order = ValidateContentsOrder
order = openpype.api.ValidateContentsOrder
hosts = ["blender"]
families = ["model"]
category = "cleanup"
version = (0, 1, 0)
label = "Transform Zero"
actions = [SelectInvalidAction]
actions = [openpype.hosts.blender.api.action.SelectInvalidAction]
_identity = mathutils.Matrix()
@classmethod
def get_invalid(cls, instance) -> List:
invalid = []
for obj in set(instance):
for obj in instance:
if (
isinstance(obj, bpy.types.Object)
and obj.matrix_basis != cls._identity