mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
Merge pull request #4714 from tokejepsen/feature/OP-4994_defining-plugins-to-load-on-Maya-start
This commit is contained in:
commit
158626ffbf
7 changed files with 535 additions and 18 deletions
|
|
@ -42,13 +42,5 @@ class AddLastWorkfileToLaunchArgs(PreLaunchHook):
|
|||
self.log.info("Current context does not have any workfile yet.")
|
||||
return
|
||||
|
||||
# Determine whether to open workfile post initialization.
|
||||
if self.host_name == "maya":
|
||||
key = "open_workfile_post_initialization"
|
||||
if self.data["project_settings"]["maya"][key]:
|
||||
self.log.debug("Opening workfile post initialization.")
|
||||
self.data["env"]["OPENPYPE_" + key.upper()] = "1"
|
||||
return
|
||||
|
||||
# Add path to workfile to arguments
|
||||
self.launch_context.launch_args.append(last_workfile)
|
||||
|
|
|
|||
29
openpype/hosts/maya/hooks/pre_auto_load_plugins.py
Normal file
29
openpype/hosts/maya/hooks/pre_auto_load_plugins.py
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
from openpype.lib import PreLaunchHook
|
||||
|
||||
|
||||
class MayaPreAutoLoadPlugins(PreLaunchHook):
|
||||
"""Define -noAutoloadPlugins command flag."""
|
||||
|
||||
# Before AddLastWorkfileToLaunchArgs
|
||||
order = 9
|
||||
app_groups = ["maya"]
|
||||
|
||||
def execute(self):
|
||||
|
||||
# Ignore if there's no last workfile to start.
|
||||
if not self.data.get("start_last_workfile"):
|
||||
return
|
||||
|
||||
maya_settings = self.data["project_settings"]["maya"]
|
||||
enabled = maya_settings["explicit_plugins_loading"]["enabled"]
|
||||
if enabled:
|
||||
# Force disable the `AddLastWorkfileToLaunchArgs`.
|
||||
self.data.pop("start_last_workfile")
|
||||
|
||||
# Force post initialization so our dedicated plug-in load can run
|
||||
# prior to Maya opening a scene file.
|
||||
key = "OPENPYPE_OPEN_WORKFILE_POST_INITIALIZATION"
|
||||
self.launch_context.env[key] = "1"
|
||||
|
||||
self.log.debug("Explicit plugins loading.")
|
||||
self.launch_context.launch_args.append("-noAutoloadPlugins")
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
from openpype.lib import PreLaunchHook
|
||||
|
||||
|
||||
class MayaPreOpenWorkfilePostInitialization(PreLaunchHook):
|
||||
"""Define whether open last workfile should run post initialize."""
|
||||
|
||||
# Before AddLastWorkfileToLaunchArgs.
|
||||
order = 9
|
||||
app_groups = ["maya"]
|
||||
|
||||
def execute(self):
|
||||
|
||||
# Ignore if there's no last workfile to start.
|
||||
if not self.data.get("start_last_workfile"):
|
||||
return
|
||||
|
||||
maya_settings = self.data["project_settings"]["maya"]
|
||||
enabled = maya_settings["open_workfile_post_initialization"]
|
||||
if enabled:
|
||||
# Force disable the `AddLastWorkfileToLaunchArgs`.
|
||||
self.data.pop("start_last_workfile")
|
||||
|
||||
self.log.debug("Opening workfile post initialization.")
|
||||
key = "OPENPYPE_OPEN_WORKFILE_POST_INITIALIZATION"
|
||||
self.launch_context.env[key] = "1"
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
import os
|
||||
from functools import partial
|
||||
|
||||
from openpype.settings import get_project_settings
|
||||
from openpype.pipeline import install_host
|
||||
|
|
@ -13,24 +12,41 @@ install_host(host)
|
|||
|
||||
print("Starting OpenPype usersetup...")
|
||||
|
||||
project_settings = get_project_settings(os.environ['AVALON_PROJECT'])
|
||||
|
||||
# Loading plugins explicitly.
|
||||
explicit_plugins_loading = project_settings["maya"]["explicit_plugins_loading"]
|
||||
if explicit_plugins_loading["enabled"]:
|
||||
def _explicit_load_plugins():
|
||||
for plugin in explicit_plugins_loading["plugins_to_load"]:
|
||||
if plugin["enabled"]:
|
||||
print("Loading plug-in: " + plugin["name"])
|
||||
try:
|
||||
cmds.loadPlugin(plugin["name"], quiet=True)
|
||||
except RuntimeError as e:
|
||||
print(e)
|
||||
|
||||
# We need to load plugins deferred as loading them directly does not work
|
||||
# correctly due to Maya's initialization.
|
||||
cmds.evalDeferred(
|
||||
_explicit_load_plugins,
|
||||
lowestPriority=True
|
||||
)
|
||||
|
||||
# Open Workfile Post Initialization.
|
||||
key = "OPENPYPE_OPEN_WORKFILE_POST_INITIALIZATION"
|
||||
if bool(int(os.environ.get(key, "0"))):
|
||||
def _log_and_open():
|
||||
path = os.environ["AVALON_LAST_WORKFILE"]
|
||||
print("Opening \"{}\"".format(path))
|
||||
cmds.file(path, open=True, force=True)
|
||||
cmds.evalDeferred(
|
||||
partial(
|
||||
cmds.file,
|
||||
os.environ["AVALON_LAST_WORKFILE"],
|
||||
open=True,
|
||||
force=True
|
||||
),
|
||||
_log_and_open,
|
||||
lowestPriority=True
|
||||
)
|
||||
|
||||
|
||||
# Build a shelf.
|
||||
settings = get_project_settings(os.environ['AVALON_PROJECT'])
|
||||
shelf_preset = settings['maya'].get('project_shelf')
|
||||
shelf_preset = project_settings['maya'].get('project_shelf')
|
||||
|
||||
if shelf_preset:
|
||||
project = os.environ["AVALON_PROJECT"]
|
||||
|
|
|
|||
|
|
@ -1,5 +1,414 @@
|
|||
{
|
||||
"open_workfile_post_initialization": false,
|
||||
"explicit_plugins_loading": {
|
||||
"enabled": false,
|
||||
"plugins_to_load": [
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "AbcBullet"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "AbcExport"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "AbcImport"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "animImportExport"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "ArubaTessellator"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "ATFPlugin"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "atomImportExport"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "AutodeskPacketFile"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "autoLoader"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "bifmeshio"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "bifrostGraph"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "bifrostshellnode"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "bifrostvisplugin"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "blast2Cmd"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "bluePencil"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "Boss"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "bullet"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "cacheEvaluator"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "cgfxShader"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "cleanPerFaceAssignment"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "clearcoat"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "convertToComponentTags"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "curveWarp"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "ddsFloatReader"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "deformerEvaluator"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "dgProfiler"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "drawUfe"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "dx11Shader"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "fbxmaya"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "fltTranslator"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "freeze"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "Fur"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "gameFbxExporter"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "gameInputDevice"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "GamePipeline"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "gameVertexCount"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "geometryReport"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "geometryTools"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "glslShader"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "GPUBuiltInDeformer"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "gpuCache"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "hairPhysicalShader"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "ik2Bsolver"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "ikSpringSolver"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "invertShape"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "lges"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "lookdevKit"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "MASH"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "matrixNodes"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "mayaCharacterization"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "mayaHIK"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "MayaMuscle"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "mayaUsdPlugin"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "mayaVnnPlugin"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "melProfiler"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "meshReorder"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "modelingToolkit"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "mtoa"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "mtoh"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "nearestPointOnMesh"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "objExport"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "OneClick"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "OpenEXRLoader"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "pgYetiMaya"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "pgyetiVrayMaya"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "polyBoolean"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "poseInterpolator"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "quatNodes"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "randomizerDevice"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "redshift4maya"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "renderSetup"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "retargeterNodes"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "RokokoMotionLibrary"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "rotateHelper"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "sceneAssembly"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "shaderFXPlugin"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "shotCamera"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "snapTransform"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "stage"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "stereoCamera"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "stlTranslator"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "studioImport"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "Substance"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "substancelink"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "substancemaya"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "substanceworkflow"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "svgFileTranslator"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "sweep"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "testify"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "tiffFloatReader"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "timeSliderBookmark"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "Turtle"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "Type"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "udpDevice"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "ufeSupport"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "Unfold3D"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "VectorRender"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "vrayformaya"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "vrayvolumegrid"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "xgenToolkit"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"name": "xgenVray"
|
||||
}
|
||||
]
|
||||
},
|
||||
"imageio": {
|
||||
"ocio_config": {
|
||||
"enabled": false,
|
||||
|
|
|
|||
|
|
@ -10,6 +10,41 @@
|
|||
"key": "open_workfile_post_initialization",
|
||||
"label": "Open Workfile Post Initialization"
|
||||
},
|
||||
{
|
||||
"type": "dict",
|
||||
"key": "explicit_plugins_loading",
|
||||
"label": "Explicit Plugins Loading",
|
||||
"collapsible": true,
|
||||
"is_group": true,
|
||||
"checkbox_key": "enabled",
|
||||
"children": [
|
||||
{
|
||||
"type": "boolean",
|
||||
"key": "enabled",
|
||||
"label": "Enabled"
|
||||
},
|
||||
{
|
||||
"type": "list",
|
||||
"key": "plugins_to_load",
|
||||
"label": "Plugins To Load",
|
||||
"object_type": {
|
||||
"type": "dict",
|
||||
"children": [
|
||||
{
|
||||
"type": "boolean",
|
||||
"key": "enabled",
|
||||
"label": "Enabled"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"key": "name",
|
||||
"label": "Name"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "imageio",
|
||||
"type": "dict",
|
||||
|
|
|
|||
|
|
@ -274,3 +274,14 @@ Fill in the necessary fields (the optional fields are regex filters)
|
|||
- Build your workfile
|
||||
|
||||

|
||||
|
||||
## Explicit Plugins Loading
|
||||
You can define which plugins to load on launch of Maya here; `project_settings/maya/explicit_plugins_loading`. This can help improve Maya's launch speed, if you know which plugins are needed.
|
||||
|
||||
By default only the required plugins are enabled. You can also add any plugin to the list to enable on launch.
|
||||
|
||||
:::note technical
|
||||
When enabling this feature, the workfile will be launched post initialization no matter the setting on `project_settings/maya/open_workfile_post_initialization`. This is to avoid any issues with references needing plugins.
|
||||
|
||||
Renderfarm integration is not supported for this feature.
|
||||
:::
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue