mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
resolved conflict
This commit is contained in:
commit
0538a7add6
14 changed files with 395 additions and 57 deletions
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
|
|
@ -1,6 +1,6 @@
|
|||
name: Bug Report
|
||||
description: File a bug report
|
||||
title: ''
|
||||
title: 'Your issue title here'
|
||||
labels:
|
||||
- 'type: bug'
|
||||
body:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
name: Enhancement Request
|
||||
description: Create a report to help us enhance a particular feature
|
||||
title: ""
|
||||
title: "Your issue title here"
|
||||
labels:
|
||||
- "type: enhancement"
|
||||
body:
|
||||
|
|
@ -49,4 +49,4 @@ body:
|
|||
label: "Additional context:"
|
||||
description: Add any other context or screenshots about the enhancement request here.
|
||||
validations:
|
||||
required: false
|
||||
required: false
|
||||
|
|
|
|||
|
|
@ -98,21 +98,6 @@ class CreateWorkfile(plugin.MaxCreatorBase, AutoCreator):
|
|||
created_inst.data_to_store()
|
||||
)
|
||||
|
||||
def remove_instances(self, instances):
|
||||
"""Remove specified instance from the scene.
|
||||
|
||||
This is only removing `id` parameter so instance is no longer
|
||||
instance, because it might contain valuable data for artist.
|
||||
|
||||
"""
|
||||
for instance in instances:
|
||||
instance_node = rt.GetNodeByName(
|
||||
instance.data.get("instance_node"))
|
||||
if instance_node:
|
||||
rt.Delete(instance_node)
|
||||
|
||||
self._remove_instance_from_context(instance)
|
||||
|
||||
def create_node(self, product_name):
|
||||
if rt.getNodeByName(product_name):
|
||||
node = rt.getNodeByName(product_name)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<root>
|
||||
<error id="main">
|
||||
<title>Invalid Model Name</title>
|
||||
<description>## Nodes found with Invalid Model Name
|
||||
|
||||
Nodes were detected in your scene which have invalid model name which does not
|
||||
match the regex you preset in AYON setting.
|
||||
### How to repair?
|
||||
Make sure the model name aligns with validation regex in your AYON setting.
|
||||
|
||||
</description>
|
||||
<detail>
|
||||
### Invalid nodes
|
||||
|
||||
{nodes}
|
||||
|
||||
|
||||
### How could this happen?
|
||||
|
||||
This often happens if you have mesh with the model naming does not match
|
||||
with regex in the setting.
|
||||
|
||||
</detail>
|
||||
</error>
|
||||
</root>
|
||||
|
|
@ -0,0 +1,120 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Validate model nodes names."""
|
||||
import re
|
||||
|
||||
import pyblish.api
|
||||
|
||||
from ayon_core.hosts.max.api.action import SelectInvalidAction
|
||||
|
||||
from ayon_core.pipeline.publish import (
|
||||
OptionalPyblishPluginMixin,
|
||||
PublishXmlValidationError,
|
||||
ValidateContentsOrder
|
||||
)
|
||||
|
||||
class ValidateModelName(pyblish.api.InstancePlugin,
|
||||
OptionalPyblishPluginMixin):
|
||||
"""Validate Model Name.
|
||||
|
||||
Validation regex is `(.*)_(?P<subset>.*)_(GEO)` by default.
|
||||
The setting supports the following regex group name:
|
||||
- project
|
||||
- asset
|
||||
- subset
|
||||
|
||||
Examples:
|
||||
`{SOME_RANDOM_NAME}_{YOUR_SUBSET_NAME}_GEO` should be your
|
||||
default model name.
|
||||
The regex of `(?P<subset>.*)` can be replaced by `(?P<asset>.*)`
|
||||
and `(?P<project>.*)`.
|
||||
`(.*)_(?P<asset>.*)_(GEO)` check if your model name is
|
||||
`{SOME_RANDOM_NAME}_{CURRENT_ASSET_NAME}_GEO`
|
||||
`(.*)_(?P<project>.*)_(GEO)` check if your model name is
|
||||
`{SOME_RANDOM_NAME}_{CURRENT_PROJECT_NAME}_GEO`
|
||||
|
||||
"""
|
||||
optional = True
|
||||
order = ValidateContentsOrder
|
||||
hosts = ["max"]
|
||||
families = ["model"]
|
||||
label = "Validate Model Name"
|
||||
actions = [SelectInvalidAction]
|
||||
# defined by settings
|
||||
regex = r"(.*)_(?P<subset>.*)_(GEO)"
|
||||
# cache
|
||||
regex_compiled = None
|
||||
|
||||
def process(self, instance):
|
||||
if not self.is_active(instance.data):
|
||||
return
|
||||
|
||||
invalid = self.get_invalid(instance)
|
||||
if invalid:
|
||||
names = "\n".join(
|
||||
"- {}".format(node.name) for node in invalid
|
||||
)
|
||||
raise PublishXmlValidationError(
|
||||
plugin=self,
|
||||
message="Nodes found with invalid model names: {}".format(invalid),
|
||||
formatting_data={"nodes": names}
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def get_invalid(cls, instance):
|
||||
if not cls.regex:
|
||||
cls.log.warning("No regex pattern set. Nothing to validate.")
|
||||
return
|
||||
|
||||
members = instance.data.get("members")
|
||||
if not members:
|
||||
cls.log.error("No members found in the instance.")
|
||||
return
|
||||
|
||||
cls.regex_compiled = re.compile(cls.regex)
|
||||
|
||||
invalid = []
|
||||
for obj in members:
|
||||
if cls.invalid_name(instance, obj):
|
||||
invalid.append(obj)
|
||||
return invalid
|
||||
|
||||
@classmethod
|
||||
def invalid_name(cls, instance, obj):
|
||||
"""Function to check the object has invalid name
|
||||
regarding to the validation regex in the AYON setttings
|
||||
|
||||
Args:
|
||||
instance (pyblish.api.instance): Instance
|
||||
obj (str): object name
|
||||
|
||||
Returns:
|
||||
str: invalid object
|
||||
"""
|
||||
regex = cls.regex_compiled
|
||||
name = obj.name
|
||||
match = regex.match(name)
|
||||
|
||||
if match is None:
|
||||
cls.log.error("Invalid model name on: %s", name)
|
||||
cls.log.error("Name doesn't match regex {}".format(regex.pattern))
|
||||
return obj
|
||||
|
||||
# Validate regex groups
|
||||
invalid = False
|
||||
compare = {
|
||||
"project": instance.context.data["projectName"],
|
||||
"asset": instance.context.data["folderPath"],
|
||||
"subset": instance.context.data["subset"],
|
||||
}
|
||||
for key, required_value in compare.items():
|
||||
if key in regex.groupindex:
|
||||
if match.group(key) != required_value:
|
||||
cls.log.error(
|
||||
"Invalid %s name for the model %s, "
|
||||
"required name is %s",
|
||||
key, name, required_value
|
||||
)
|
||||
invalid = True
|
||||
|
||||
if invalid:
|
||||
return obj
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import pyblish.api
|
||||
from pymxs import runtime as rt
|
||||
from ayon_core.pipeline import (
|
||||
PublishValidationError,
|
||||
OptionalPyblishPluginMixin
|
||||
)
|
||||
from ayon_core.hosts.max.api.action import SelectInvalidAction
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
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]
|
||||
|
||||
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
|
||||
|
|
@ -410,6 +410,11 @@ class ClipLoader:
|
|||
source_out = int(_clip_property("End"))
|
||||
source_duration = int(_clip_property("Frames"))
|
||||
|
||||
# Trim clip start if slate is present
|
||||
if "slate" in self.data["versionData"]["families"]:
|
||||
source_in += 1
|
||||
source_duration = source_out - source_in + 1
|
||||
|
||||
if not self.with_handles:
|
||||
# Load file without the handles of the source media
|
||||
# We remove the handles from the source in and source out
|
||||
|
|
@ -435,7 +440,7 @@ class ClipLoader:
|
|||
handle_start = version_data.get("handleStart", 0)
|
||||
handle_end = version_data.get("handleEnd", 0)
|
||||
frame_start_handle = frame_start - handle_start
|
||||
frame_end_handle = frame_start + handle_end
|
||||
frame_end_handle = frame_end + handle_end
|
||||
database_frame_duration = int(
|
||||
frame_end_handle - frame_start_handle + 1
|
||||
)
|
||||
|
|
|
|||
|
|
@ -478,7 +478,15 @@ class ExtractThumbnail(pyblish.api.InstancePlugin):
|
|||
# Set video input attributes
|
||||
max_int = str(2147483647)
|
||||
video_data = get_ffprobe_data(video_file_path, logger=self.log)
|
||||
duration = float(video_data["format"]["duration"])
|
||||
# Use duration of the individual streams since it is returned with
|
||||
# higher decimal precision than 'format.duration'. We need this
|
||||
# more precise value for calculating the correct amount of frames
|
||||
# for higher FPS ranges or decimal ranges, e.g. 29.97 FPS
|
||||
duration = max(
|
||||
float(stream.get("duration", 0))
|
||||
for stream in video_data["streams"]
|
||||
if stream.get("codec_type") == "video"
|
||||
)
|
||||
|
||||
cmd_args = [
|
||||
"-y",
|
||||
|
|
|
|||
|
|
@ -1,55 +1,149 @@
|
|||
{
|
||||
"tool_groups": [
|
||||
{
|
||||
"environment": "{\n \"MTOA\": \"{STUDIO_SOFTWARE}/arnold/mtoa_{MAYA_VERSION}_{MTOA_VERSION}\",\n \"MAYA_RENDER_DESC_PATH\": \"{MTOA}\",\n \"MAYA_MODULE_PATH\": \"{MTOA}\",\n \"ARNOLD_PLUGIN_PATH\": \"{MTOA}/shaders\",\n \"MTOA_EXTENSIONS_PATH\": {\n \"darwin\": \"{MTOA}/extensions\",\n \"linux\": \"{MTOA}/extensions\",\n \"windows\": \"{MTOA}/extensions\"\n },\n \"MTOA_EXTENSIONS\": {\n \"darwin\": \"{MTOA}/extensions\",\n \"linux\": \"{MTOA}/extensions\",\n \"windows\": \"{MTOA}/extensions\"\n },\n \"DYLD_LIBRARY_PATH\": {\n \"darwin\": \"{MTOA}/bin\"\n },\n \"PATH\": {\n \"windows\": \"{PATH};{MTOA}/bin\"\n }\n}",
|
||||
"name": "mtoa",
|
||||
"label": "Autodesk Arnold",
|
||||
"name": "htoa",
|
||||
"label": "Arnold for Houdini (example)",
|
||||
"variants": [
|
||||
{
|
||||
"name": "5-4-2-7",
|
||||
"label": "",
|
||||
"host_names": [
|
||||
"houdini"
|
||||
],
|
||||
"environment": "{\n \"HTOA_VERSION\": \"5.4.2.7\"\n}",
|
||||
"app_variants": []
|
||||
}
|
||||
],
|
||||
"environment": "{\n \"_comment_\": \"{STUDIO_SW} points to software repository. Can be defined in Core addon globally\",\n\n \"HOUDINI_PATH\": [\n \"{STUDIO_SW}/APP/HTOA/{HTOA_VERSION}/HOUDINI{HOUDINI_VERSION}/WINDOWS/htoa-6.1.3.3_rdb15014_houdini-{HTOA_VERSION}\",\n \"{HOUDINI_PATH}\"\n ],\n \"PATH\": {\n \"windows\": [\n \"{STUDIO_SW}/APP/HTOA/{HTOA_VERSION}/HOUDINI{HOUDINI_VERSION}/WINDOWS/htoa-6.1.3.3_rdb15014_houdini-{HTOA_VERSION}/scripts/bin\",\n \"{PATH}\"\n ]\n }\n}"
|
||||
},
|
||||
{
|
||||
"name": "mtoa",
|
||||
"label": "Arnold for Maya (example)",
|
||||
"variants": [
|
||||
{
|
||||
"name": "5-3-1-0",
|
||||
"label": "",
|
||||
"host_names": [],
|
||||
"app_variants": [],
|
||||
"environment": "{\n \"MTOA_VERSION\": \"3.2\"\n}",
|
||||
"name": "3-2",
|
||||
"label": "3.2"
|
||||
"environment": "{\n \"MTOA_VERSION\": \"5.3.1.0\"\n}",
|
||||
"app_variants": []
|
||||
},
|
||||
{
|
||||
"name": "5-3-4-1",
|
||||
"label": "",
|
||||
"host_names": [],
|
||||
"app_variants": [],
|
||||
"environment": "{\n \"MTOA_VERSION\": \"3.1\"\n}",
|
||||
"name": "3-1",
|
||||
"label": "3.1"
|
||||
"environment": "{\n \"MTOA_VERSION\": \"5.3.4.1\"\n}",
|
||||
"app_variants": []
|
||||
}
|
||||
]
|
||||
],
|
||||
"environment": "{\n \"_comment_\": \"{STUDIO_SW} points to software repository. Can be defined in Core addon globally\",\n\n \"MTOA\": {\n \"darwin\": \"{STUDIO_SW}/APP/MTOA/{MTOA_VERSION}/MAYA{MAYA_VERSION}/MAC\",\n \"linux\": \"{STUDIO_SW}/APP/MTOA/{MTOA_VERSION}/MAYA{MAYA_VERSION}/LINUX\",\n \"windows\": \"{STUDIO_SW}/APP/MTOA/{MTOA_VERSION}/MAYA{MAYA_VERSION}/WINDOWS\"\n },\n \"MAYA_MODULE_PATH\": [\n \"{STUDIO_SW}/APP/MTOA\",\n \"{MAYA_MODULE_PATH}\"\n ],\n \"DYLD_LIBRARY_PATH\": {\n \"darwin\": \"{MTOA}/bin\"\n },\n \"PATH\": {\n \"windows\": [\n \"{MTOA}/bin\",\n \"{PATH}\"\n ]\n },\n \"XBMLANGPATH\": [\n \"{MTOA}/icons\",\n \"{XBMLANGPATH}\"\n ],\n \"MAYA_RENDER_DESC_PATH\": [\n \"{MTOA}\",\n \"{MAYA_RENDER_DESC_PATH}\"\n ],\n \"MTOA_STARTUP_LOG_VERBOSITY\": \"3\"\n}"
|
||||
},
|
||||
{
|
||||
"environment": "{}",
|
||||
"name": "vray",
|
||||
"label": "Chaos Group Vray",
|
||||
"variants": []
|
||||
},
|
||||
{
|
||||
"environment": "{}",
|
||||
"name": "yeti",
|
||||
"label": "Peregrine Labs Yeti",
|
||||
"variants": []
|
||||
},
|
||||
{
|
||||
"environment": "{}",
|
||||
"name": "renderman",
|
||||
"label": "Pixar Renderman",
|
||||
"name": "redshiftMaya",
|
||||
"label": "Redshift for Maya (example)",
|
||||
"variants": [
|
||||
{
|
||||
"name": "3-5-23",
|
||||
"label": "",
|
||||
"host_names": [],
|
||||
"environment": "{\n \"REDSHIFT_VERSION\": \"3.5.23\"\n}",
|
||||
"app_variants": []
|
||||
}
|
||||
],
|
||||
"environment": "{\n \"_comment_\": \"{STUDIO_SW} points to software repository. Can be defined in Core addon globally\",\n\n \"REDSHIFT_COREDATAPATH\": {\n \"darwin\": \"{STUDIO_SW}/APP/REDSHIFT/{REDSHIFT_VERSION}/MAC\",\n \"linux\": \"{STUDIO_SW}/APP/REDSHIFT/{REDSHIFT_VERSION}/LINUX\",\n \"windows\": \"{STUDIO_SW}/APP/REDSHIFT/{REDSHIFT_VERSION}/WINDOWS\"\n },\n \"REDSHIFT_ABORTONLICENSEFAIL\": \"0\",\n \"MAYA_MODULE_PATH\": [\n \"{STUDIO_SW}/APP/REDSHIFT\",\n \"{MAYA_MODULE_PATH}\"\n ],\n \"MAYA_PLUG_IN_PATH\": {\n \"windows\": [\n \"{REDSHIFT_COREDATAPATH}/Plugins/Maya/{MAYA_VERSION}/nt-x86-64\",\n \"{MAYA_PLUG_IN_PATH}\"\n ],\n \"linux\": [\n \"{REDSHIFT_COREDATAPATH}/redshift4maya/{MAYA_VERSION}\",\n \"{MAYA_PLUG_IN_PATH}\"\n ],\n \"darwin\": [\n \"{REDSHIFT_COREDATAPATH}/redshift4maya/{MAYA_VERSION}\",\n \"{MAYA_PLUG_IN_PATH}\"\n ]\n },\n \"MAYA_SCRIPT_PATH\": {\n \"windows\": [\n \"{REDSHIFT_COREDATAPATH}/Plugins/Maya/Common/scripts\",\n \"{MAYA_SCRIPT_PATH}\"\n ],\n \"linux\": [\n \"{REDSHIFT_COREDATAPATH}/redshift4maya/common/scripts\",\n \"{MAYA_SCRIPT_PATH}\"\n ],\n \"darwin\": [\n \"{REDSHIFT_COREDATAPATH}/redshift4maya/common/scripts\",\n \"{MAYA_SCRIPT_PATH}\"\n ]\n },\n \"REDSHIFT_PROCEDURALSPATH\": {\n \"windows\": [\n \"{REDSHIFT_COREDATAPATH}/Procedurals\",\n \"{REDSHIFT_PROCEDURALSPATH}\"\n ],\n \"linux\": [\n \"{REDSHIFT_COREDATAPATH}/procedurals\",\n \"{REDSHIFT_PROCEDURALSPATH}\"\n ],\n \"darwin\": [\n \"{REDSHIFT_COREDATAPATH}/procedurals\",\n \"{REDSHIFT_PROCEDURALSPATH}\"\n ]\n },\n \"REDSHIFT_MAYAEXTENSIONSPATH\": {\n \"windows\": [\n \"{REDSHIFT_COREDATAPATH}/Plugins/Maya/{MAYA_VERSION}/nt-x86-64/extensions\",\n \"{REDSHIFT_MAYAEXTENSIONSPATH}\"\n ],\n \"linux\": [\n \"{REDSHIFT_COREDATAPATH}/redshift4maya/{MAYA_VERSION}/extensions\",\n \"{REDSHIFT_MAYAEXTENSIONSPATH}\"\n ],\n \"darwin\": [\n \"{REDSHIFT_COREDATAPATH}/redshift4maya/{MAYA_VERSION}/extensions\",\n \"{REDSHIFT_MAYAEXTENSIONSPATH}\"\n ]\n },\n \"XBMLANGPATH\": {\n \"windows\": [\n \"{REDSHIFT_COREDATAPATH}/Plugins/Maya/Common/icons\",\n \"{XBMLANGPATH}\"\n ],\n \"linux\": [\n \"{REDSHIFT_COREDATAPATH}/redshift4maya/common/icons\",\n \"{XBMLANGPATH}\"\n ],\n \"darwin\": [\n \"{REDSHIFT_COREDATAPATH}/redshift4maya/common/icons\",\n \"{XBMLANGPATH}\"\n ]\n },\n \"MAYA_RENDER_DESC_PATH\": {\n \"windows\": [\n \"{REDSHIFT_COREDATAPATH}/Plugins/Maya/Common/rendererDesc\",\n \"{MAYA_RENDER_DESC_PATH}\"\n ],\n \"linux\": [\n \"{REDSHIFT_COREDATAPATH}/redshift4maya/common/rendererDesc\",\n \"{MAYA_RENDER_DESC_PATH}\"\n ],\n \"darwin\": [\n \"{REDSHIFT_COREDATAPATH}/redshift4maya/common/rendererDesc\",\n \"{MAYA_RENDER_DESC_PATH}\"\n ]\n },\n \"MAYA_CUSTOM_TEMPLATE_PATH\": {\n \"windows\": [\n \"{REDSHIFT_COREDATAPATH}/Plugins/Maya/Common/scripts/NETemplates\",\n \"{MAYA_CUSTOM_TEMPLATE_PATH}\"\n ],\n \"linux\": [\n \"{REDSHIFT_COREDATAPATH}/redshift4maya/common/scripts/NETemplates\",\n \"{MAYA_CUSTOM_TEMPLATE_PATH}\"\n ],\n \"darwin\": [\n \"{REDSHIFT_COREDATAPATH}/redshift4maya/common/scripts/NETemplates\",\n \"{MAYA_CUSTOM_TEMPLATE_PATH}\"\n ]\n },\n \"PATH\": {\n \"windows\": [\n \"{REDSHIFT_COREDATAPATH}/bin\",\n \"{PATH}\"\n ]\n }\n}"
|
||||
},
|
||||
{
|
||||
"name": "redshift3dsmax",
|
||||
"label": "Redshift for 3dsmax (example)",
|
||||
"variants": [
|
||||
{
|
||||
"name": "3-5-19",
|
||||
"label": "",
|
||||
"host_names": [
|
||||
"max"
|
||||
],
|
||||
"environment": "{\n \"REDSHIFT_VERSION\": \"3.5.19\"\n}",
|
||||
"app_variants": []
|
||||
}
|
||||
],
|
||||
"environment": "{\n \"_comment_\": \"{STUDIO_SW} points to software repository. Can be defined in Core addon globally\",\n\n \"REDSHIFT_COREDATAPATH\": {\n \"darwin\": \"{STUDIO_SW}/APP/REDSHIFT/{REDSHIFT_VERSION}/MAC\",\n \"linux\": \"{STUDIO_SW}/APP/REDSHIFT/{REDSHIFT_VERSION}/LINUX\",\n \"windows\": \"{STUDIO_SW}/APP/REDSHIFT/{REDSHIFT_VERSION}/WINDOWS\"\n },\n \"REDSHIFT_ABORTONLICENSEFAIL\": \"0\",\n \"REDSHIFT_PROCEDURALSPATH\": {\n \"windows\": [\n \"{REDSHIFT_COREDATAPATH}/Procedurals\",\n \"{REDSHIFT_PROCEDURALSPATH}\"\n ],\n \"linux\": [\n \"{REDSHIFT_COREDATAPATH}/procedurals\",\n \"{REDSHIFT_PROCEDURALSPATH}\"\n ],\n \"darwin\": [\n \"{REDSHIFT_COREDATAPATH}/procedurals\",\n \"{REDSHIFT_PROCEDURALSPATH}\"\n ]\n },\n \"PATH\": {\n \"windows\": [\n \"{REDSHIFT_COREDATAPATH}/bin\",\n \"{PATH}\"\n ]\n }\n}"
|
||||
},
|
||||
{
|
||||
"name": "rendermanMaya",
|
||||
"label": "Renderman for Maya (example)",
|
||||
"variants": [
|
||||
{
|
||||
"name": "24-3-maya",
|
||||
"label": "24.3 RFM",
|
||||
"host_names": [
|
||||
"maya"
|
||||
],
|
||||
"environment": "{\n \"RFMTREE\": {\n \"windows\": \"C:\\\\Program Files\\\\Pixar\\\\RenderManForMaya-24.3\",\n \"darwin\": \"/Applications/Pixar/RenderManForMaya-24.3\",\n \"linux\": \"/opt/pixar/RenderManForMaya-24.3\"\n },\n \"RMANTREE\": {\n \"windows\": \"C:\\\\Program Files\\\\Pixar\\\\RenderManProServer-24.3\",\n \"darwin\": \"/Applications/Pixar/RenderManProServer-24.3\",\n \"linux\": \"/opt/pixar/RenderManProServer-24.3\"\n }\n}",
|
||||
"app_variants": [
|
||||
"maya/2022"
|
||||
],
|
||||
"environment": "{\n \"RFMTREE\": {\n \"windows\": \"C:\\\\Program Files\\\\Pixar\\\\RenderManForMaya-24.3\",\n \"darwin\": \"/Applications/Pixar/RenderManForMaya-24.3\",\n \"linux\": \"/opt/pixar/RenderManForMaya-24.3\"\n },\n \"RMANTREE\": {\n \"windows\": \"C:\\\\Program Files\\\\Pixar\\\\RenderManProServer-24.3\",\n \"darwin\": \"/Applications/Pixar/RenderManProServer-24.3\",\n \"linux\": \"/opt/pixar/RenderManProServer-24.3\"\n }\n}",
|
||||
"name": "24-3-maya",
|
||||
"label": "24.3 RFM"
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"environment": "{\n \"_comment_\": \"{STUDIO_SW} points to software repository. Can be defined in Core addon globally\",\n\n \"RFMTREE\": {\n \"darwin\": \"{STUDIO_SW}/APP/RENDERMAN/{RM_VERSION}/MAC/MAYA\",\n \"linux\": \"{STUDIO_SW}/APP/RENDERMAN/{RM_VERSION}/LINUX/MAYA\",\n \"windows\": \"{STUDIO_SW}/APP/RENDERMAN/{RM_VERSION}/WINDOWS/MAYA\"\n },\n \"RMANTREE\": {\n \"darwin\": \"{STUDIO_SW}/APP/RENDERMAN/{RM_VERSION}/MAC/RenderManProServer-{RM_VERSION}\",\n \"linux\": \"{STUDIO_SW}/APP/RENDERMAN/{RM_VERSION}/LINUX/RenderManProServer-{RM_VERSION}\",\n \"windows\": \"{STUDIO_SW}/APP/RENDERMAN/{RM_VERSION}/WINDOWS/RenderManProServer-{RM_VERSION}\"\n },\n \"MAYA_MODULE_PATH\": [\n \"{STUDIO_SW}/APP/RENDERMAN\",\n \"{MAYA_MODULE_PATH}\"\n ],\n \"PIXAR_LICENSE_FILE\": \"{STUDIO_SW}/APP/RENDERMAN/pixar.license\",\n \"RFM_DO_NOT_CREATE_MODULE_FILE\": \"1\"\n}"
|
||||
},
|
||||
{
|
||||
"name": "mGear",
|
||||
"label": "mGear for Maya (example)",
|
||||
"variants": [
|
||||
{
|
||||
"name": "4-0-7",
|
||||
"label": "",
|
||||
"host_names": [],
|
||||
"environment": "{\n \"MGEAR_VERSION\": \"4.0.7\"\n}",
|
||||
"app_variants": []
|
||||
}
|
||||
],
|
||||
"environment": "{\n \"_comment_\": \"{STUDIO_SW} points to software repository. Can be defined in Core addon globally\",\n\n \"MGEAR_ROOT\": \"{STUDIO_SW}/APP/MGEAR/{MGEAR_VERSION}/MAYA{MAYA_VERSION}/windows/x64\",\n \"MAYA_MODULE_PATH\": [\n \"{STUDIO_SW}/APP/MGEAR/{MGEAR_VERSION}/release\",\n \"{MAYA_MODULE_PATH}\"\n ]\n}"
|
||||
},
|
||||
{
|
||||
"name": "yetiMaya",
|
||||
"label": "Yeti for Maya (example)",
|
||||
"variants": [
|
||||
{
|
||||
"name": "4.2.11",
|
||||
"label": "",
|
||||
"host_names": [],
|
||||
"environment": "{\n \"YETI_VERSION\": \"4.2.11\"\n}",
|
||||
"app_variants": []
|
||||
}
|
||||
],
|
||||
"environment": "{\n \"_comment_\": \"{STUDIO_SW} points to software repository. Can be defined in Core addon globally\",\n\n \"YETI_HOME\": {\n \"darwin\": \"{STUDIO_SW}/APP/YETI/{YETI_VERSION}/MAYA{MAYA_VERSION}/MAC\",\n \"linux\": \"{STUDIO_SW}/APP/YETI/{YETI_VERSION}/MAYA{MAYA_VERSION}/LINUX\",\n \"windows\": \"{STUDIO_SW}/APP/YETI/{YETI_VERSION}/MAYA{MAYA_VERSION}/WINDOWS\"\n },\n \"YETI_TMP\": {\n \"windows\": \"C:/temp\",\n \"darwin\": \"/tmp\",\n \"linux\": \"/tmp\"\n },\n \"peregrinel_LICENSE\": \"4202@35.158.197.250\",\n \"MAYA_MODULE_PATH\": [\n \"{STUDIO_SW}/APP/YETI\",\n \"{MAYA_MODULE_PATH}\"\n ]\n}"
|
||||
},
|
||||
{
|
||||
"name": "vrayMaya",
|
||||
"label": "Vray for Maya (example)",
|
||||
"variants": [
|
||||
{
|
||||
"name": "6.10.01",
|
||||
"label": "",
|
||||
"host_names": [
|
||||
""
|
||||
],
|
||||
"environment": "{\n \"VRAY_VERSION\": \"6.10.01\"\n}",
|
||||
"app_variants": []
|
||||
}
|
||||
],
|
||||
"environment": "{\n \"_comment_\": \"{STUDIO_SW} points to software repository. Can be defined in Core addon globally\",\n\n \"MAYA_MODULE_PATH\": {\n \"windows\": [\n \"{STUDIO_SW}/APP/VRAY/{VRAY_VERSION}/MAYA{MAYA_VERSION}/WINDOWS/maya_root/modules\",\n \"{MAYA_MODULE_PATH}\"\n ],\n \"linux\": [\n \"{STUDIO_SW}/APP/VRAY/{VRAY_VERSION}/MAYA{MAYA_VERSION}/LINUX/maya_root/modules\",\n \"{MAYA_MODULE_PATH}\"\n ],\n \"darwin\": [\n \"{STUDIO_SW}/APP/VRAY/{VRAY_VERSION}/MAYA{MAYA_VERSION}/MAC/maya_root/modules\",\n \"{MAYA_MODULE_PATH}\"\n ]\n },\n \"VRAY_AUTH_CLIENT_FILE_PATH\": \"{STUDIO_SW}/APP/VRAY\"\n}"
|
||||
},
|
||||
{
|
||||
"name": "vraynuke",
|
||||
"label": "Vray for Nuke (example)",
|
||||
"variants": [
|
||||
{
|
||||
"name": "5-20-00",
|
||||
"label": "",
|
||||
"host_names": [
|
||||
"nuke"
|
||||
],
|
||||
"environment": "{\n \"VRAYNUKE_VERSION\": \"5.20.00\"\n}",
|
||||
"app_variants": []
|
||||
}
|
||||
],
|
||||
"environment": "{\n \"_comment_\": \"{STUDIO_SW} points to software repository. Can be defined in Core addon globally\",\n\n \"VRAY_FOR_NUKE_13_0_PLUGINS\": {\n \"windows\": \"{STUDIO_SW}/APP/VRAYNUKE/{VRAYNUKE_VERSION}/NUKE{NUKE_VRAY_VERSION}/WINDOWS/nuke_vray/plugins/vray\"\n },\n \"NUKE_PATH\": {\n \"windows\": [\n \"{STUDIO_SW}/APP/VRAYNUKE/{VRAYNUKE_VERSION}/NUKE{NUKE_VRAY_VERSION}/WINDOWS/nuke_root\",\n \"{NUKE_PATH}\"\n ]\n },\n \"PATH\": {\n \"windows\": [\n \"{STUDIO_SW}/APP/VRAYNUKE/{VRAYNUKE_VERSION}/NUKE{NUKE_VRAY_VERSION}/WINDOWS/nuke_vray\",\n \"{PATH}\"\n ]\n },\n \"VRAY_AUTH_CLIENT_FILE_PATH\": \"{STUDIO_SW}/APP/VRAY\"\n}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1 +1 @@
|
|||
__version__ = "0.1.6"
|
||||
__version__ = "0.1.7"
|
||||
|
|
|
|||
|
|
@ -49,6 +49,20 @@ class FamilyMappingItemModel(BaseSettingsModel):
|
|||
)
|
||||
|
||||
|
||||
class ValidateModelNameModel(BaseSettingsModel):
|
||||
enabled: bool = SettingsField(title="Enabled")
|
||||
optional: bool = SettingsField(title="Optional")
|
||||
active: bool = SettingsField(title="Active")
|
||||
regex: str = SettingsField(
|
||||
"(.*)_(?P<subset>.*)_(GEO)",
|
||||
title="Validation regex",
|
||||
description=(
|
||||
"Regex for validating model name. You can use named "
|
||||
" capturing groups:(?P<asset>.*) for Asset name"
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class ValidateLoadedPluginModel(BaseSettingsModel):
|
||||
enabled: bool = SettingsField(title="Enabled")
|
||||
optional: bool = SettingsField(title="Optional")
|
||||
|
|
@ -86,6 +100,10 @@ class PublishersModel(BaseSettingsModel):
|
|||
"the system automatically skips checking it"
|
||||
)
|
||||
)
|
||||
ValidateNoAnimation: BasicValidateModel = SettingsField(
|
||||
default_factory=BasicValidateModel,
|
||||
title="Validate No Animation"
|
||||
)
|
||||
ValidateLoadedPlugin: ValidateLoadedPluginModel = SettingsField(
|
||||
default_factory=ValidateLoadedPluginModel,
|
||||
title="Validate Loaded Plugin"
|
||||
|
|
@ -94,6 +112,10 @@ class PublishersModel(BaseSettingsModel):
|
|||
default_factory=BasicValidateModel,
|
||||
title="Validate Mesh Has UVs"
|
||||
)
|
||||
ValidateModelName: ValidateModelNameModel = SettingsField(
|
||||
default_factory=ValidateModelNameModel,
|
||||
title="Validate Model Name"
|
||||
)
|
||||
ValidateRenderPasses: BasicValidateModel = SettingsField(
|
||||
default_factory=BasicValidateModel,
|
||||
title="Validate Render Passes"
|
||||
|
|
@ -146,6 +168,12 @@ DEFAULT_PUBLISH_SETTINGS = {
|
|||
"nearclip": 1.0,
|
||||
"farclip": 1000.0
|
||||
},
|
||||
"ValidateModelName": {
|
||||
"enabled": True,
|
||||
"optional": True,
|
||||
"active": False,
|
||||
"regex": "(.*)_(?P<subset>.*)_(GEO)"
|
||||
},
|
||||
"ValidateLoadedPlugin": {
|
||||
"enabled": False,
|
||||
"optional": True,
|
||||
|
|
@ -156,6 +184,11 @@ DEFAULT_PUBLISH_SETTINGS = {
|
|||
"optional": True,
|
||||
"active": False
|
||||
},
|
||||
"ValidateNoAnimation": {
|
||||
"enabled": True,
|
||||
"optional": True,
|
||||
"active": False,
|
||||
},
|
||||
"ValidateRenderPasses": {
|
||||
"enabled": True,
|
||||
"optional": True,
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
__version__ = "0.1.6"
|
||||
__version__ = "0.1.7"
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ class CollectInstanceDataModel(BaseSettingsModel):
|
|||
sync_workfile_version_on_product_types: list[str] = SettingsField(
|
||||
default_factory=list,
|
||||
enum_resolver=nuke_product_types_enum,
|
||||
title="Sync workfile versions for familes"
|
||||
title="Product types"
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
__version__ = "0.1.9"
|
||||
__version__ = "0.1.10"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue