Releases: ynput/OpenPype
3.16.7
🆕 New features
Maya: Extract active view as thumbnail when no thumbnail set #5426
This sets the Maya instance's thumbnail to the current active view if no thumbnail was set yet.
Maya: Implement USD publish and load using native `mayaUsdPlugin` #5573
Implement Creator and Loaders for extraction and loading of USD files using Maya's own mayaUsdPlugin
.Also adds support to load a usd
file into an Arnold Standin (aiStandin
) and assigning looks to it.
🚀 Enhancements
Maya: Reduce amount of code for Collect Looks #5253
- Refactor
get_file_node_files
because popping frompaths
by index should have been done in reversed order anyway. It's now changed to not need popping at all. - Removed unused
RENDERER_NODE_TYPES
and if-branch which collectednode_attrs
list which was unused + collected members which was also done outside of the if branch and thus generated no extra data. - Collected all materials from look set attributes at once instead of multiple queries
- Collected all file nodes in history from a single query instead of per type
- Restructured assignment of
instance.data["resources"]
to be more readable - Cached
PXR_NODES
only ones (Note: plugin load is checked on discovery of the collect look plugin) instead of querying plugin load and its nodes per file node per attribute - Removed some debug logs or combined some messages
AYON: Mark deprecated settings in Maya #5627
Added deprecated info to docstrings of maya colormanagement settings.Resolves: #5556
Max: switching versions of maxScene maintain parentage/links with the loaders #5424
When using scene inventory to manage or update the version of the loading objects, the linked modifiers or parentage of the objects would be kept.Meanwhile, loaded objects from all loaders no longer parented to the container with OP Data.
3ds max: small tweaks to obj extractor and model publishing flow #5605
There migh be situation where OBJ Extractor passes without failure, but no obj file is produced. This is adding simple check directly into the extractor to catch it earlier then in the integration phase. Also switched Validate USD Plugin
to optional, because it was always run no matter if the Extract USD was enabled or not, hindering testing (and publishing).
Maya: Remove context prompt #5632
More of a plea than a PR, but could we please remove the context prompt in Maya when switching tasks?
General: Create a desktop icon is checked #5636
In OP Installer Create a desktop icon
is checked by default.
🐛 Bug fixes
Maya: Extract look is not AYON compatible - OP-5375 #5341
The textures that would use hardlinking are going through texture processors. Currently all texture processors are hardcoded to copy texture instead of respecting the settings of forcing to copy.The texture processors were last modified 4 months ago, so effectively all clients that are on any pipeline updated in the last 4 months wont be utilizing hardlinking at all, since the hardcoded texture processors will copy texture no matter the OS.This opts for completely disabling the hardlinking feature, while we figure out what to do about it.
Maya: Multiverse USD Override inherit from correct new style creator #5566
Fix Creator for Multiverse USD Override by inheriting from correct new style creator class type
Max: Bug Fix Alembic Loaders with Ornatrix #5434
Bugfix the alembic loader with both ornatrix alembic and max alembic supportsAdd the ornatrix alembic loaders for loading the alembic with Ornatrix-related modifiers.
AYON: Avoid creation of duplicated links #5593
Handle cases when an existing link should be recreated and do not create the same link multitple times during single publishing.
Extract Review: Multilayer specification for ffmpeg #5613
Extract review is specifying layer name when exr is multilayer.
Fussion: added support for Fusion 17 #5614
Fusion 17 still uses Python 3.6 which causes issues with some our delivered libraries. Vendorized necessary set for Python 3.6
Publisher: Fix screenshot widget #5615
Use correct super method name.EDITED:Removed fade animation which is not triggered at some cases, e.g. in Nuke the animation does not start. I do expect that is caused by exec_
on the dialog, which blocks event processing to the animation, even when I've added the window as parent it still didn't trigger registered callback.Modified how the "empty" space is not filled by using paths instead of clear mode on painter. Added render hints to add antialiasing.
Photoshop: auto_images without alpha will not fail #5620
ExtractReview caused issue on auto_image
instance without alpha channel, this fixes it.
Fix - _id key used instead of id in get_last_version_by_subset_name #5626
Just 'id' is not returned because value in fields. Caused KeyError.
Bugfix: create symlinks for ssl libs on Centos 7 #5633
Docker build was missing libssl.1.1.so
and libcrypto.1.1.so
symlinks needed by the executable itself, because Python is now explicitly built with OpenSSL 1.1.1
📃 Documentation
Documentation/local settings #5102
I completed the "Working with local settings" page. I updated the screenshot, wrote an explanation for each empty category, and if available, linked the more detailed pages already existing. I also added the "Environments" category.
3.16.6
🆕 New features
Workfiles tool: Refactor workfiles tool (for AYON) #5550
Refactored workfiles tool to new tool. Separated backend and frontend logic. Refactored logic is AYON-centric and is used only in AYON mode, so it does not affect OpenPype.
AfterEffects: added validator for missing files in FootageItems #5590
Published composition in AE could contain multiple FootageItems as a layers. If FootageItem contains imported file and it doesn't exist, render triggered by Publish process will silently fail and no output is generated. This could cause failure later in the process with unclear reason. (In ExtractReview
).This PR adds validation to protect from this.
🚀 Enhancements
Maya: Yeti Cache Include viewport preview settings from source #5561
When publishing and loading yeti caches persist the display output and preview colors + settings to ensure consistency in the view
Houdini: validate colorspace in review rop #5322
Adding a validator that checks if 'OCIO Colorspace' parameter on review rop was set to a valid value.It is a step towards managing colorspace in review ropvalid values are the ones in the dropdown menuthis validator also provides some helper actions This PR is related to #4836 and #4833
Colorspace: adding abstraction of publishing related functions #5497
The functionality of Colorspace has been abstracted for greater usability.
Nuke: removing redundant workfile colorspace attributes #5580
Nuke root workfile colorspace data type knobs are long time configured automatically via config roles or the default values are also working well. Therefore there is no need for pipeline managed knobs.
Ftrack: Less verbose logs for Ftrack integration in artist facing logs #5596
- Reduce artist-facing logs for component integration for Ftrack
- Avoid "Comment is not set" log in artist facing report for Kitsu and Ftrack
- Remove info log about
ffprobe
inspecting a file (changed to debug log) - interesting to see however that it ffprobes the same jpeg twice - but maybe once for thumbnail?
🐛 Bug fixes
Maya: Fix rig validators for new out_SET and controls_SET names #5595
Fix usage of out_SET
and controls_SET
since #5310 because they can now be prefixed by the subset name.
TrayPublisher: set default frame values to sequential data #5530
We are inheriting default frame handles and fps data either from project or setting them to 0. This is just for case a production will decide not to injest the sequential representations with asset based metadata.
AYON: Fix representation context conversion #5591
Do not fix "folder"
key in representation context until it is needed.
ayon-nuke: default factory to lists #5594
Default factory were missing in settings schemas for complicated objects like lists and it was causing settings to be failing saving.
Maya: Fix look assigner showing no asset if 'not found' representations are present #5597
Fix Maya Look assigner failing to show any content if it finds an invalid container for which it can't find the asset in the current project. (This can happen when e.g. loading something from a library project).There was logic already to avoid this but there was a bug where it used variable _id
which did not exist and likely had to be asset_id
.I've fixed that and improved the logged message a bit, e.g.:
// Warning: openpype.hosts.maya.tools.mayalookassigner.commands : Id found on 22 nodes for which no asset is found database, skipping '641d78ec85c3c5b102e836b0'
Example not found representation in Loader:The issue isn't necessarily related to NOT FOUND representations but in essence boils down to finding nodes with asset ids that do not exist in the current project which could very well just be local meshes in your scene.**Note:**I've excluded logging the nodes themselves because that tends to be a very long list of nodes. Only downside to removing that is that it's unclear which nodes are related to that id
. If there are any ideas on how to still provide a concise informational message about that that'd be great so I could add it. Things I had considered:
- Report the containers, issue here is that it's about asset ids on nodes which don't HAVE to be in containers - it could be local geometry
- Report the namespaces, issue here is that it could be nodes without namespaces (plus potentially not about ALL nodes in a namespace)
- Report the short names of the nodes; it's shorter and readable but still likely a lot of nodes.@tokejepsen @LiborBatek any other ideas?
Photoshop: fixed blank Flatten image #5600
Flatten image is simplified publishing approach where all visible layers are "flatten" and published together. This image could be used as a reference etc.This is implemented by auto creator which wasn't updated after first publish. This would result in missing newly created layers after auto_image
instance was created.
Blender: Remove Hardcoded Subset Name for Reviews #5603
Fixes hardcoded subset name for Reviews in Blender.
🔀 Refactored code
Chore: Remove unused variables and cleanup #5588
Removing some unused variables. In some cases the unused variables seemed like they should've been used - maybe? so please double check the code whether it doesn't hint to an already existing bug.Also tweaked some other small bugs in code + tweaked logging levels.
Merged pull requests
Chore: Loader log deprecation warning for 'fname' attribute #5587
Since #4602 the fname
attribute on the LoaderPlugin
should've been deprecated and set for removal over time. However, no deprecation warning was logged whatsoever and thus one usage appears to have sneaked in (fixed with this PR) and a new one tried to sneak in with a recent PR
3.16.5
🆕 New features
🚀 Enhancements
Maya: Optimize validate plug-in path attributes #5522
- Optimize query (use
cmds.ls
once) - Add Select Invalid action
- Improve validation report
- Avoid "Unknown object type" errors
Maya: Remove Validate Instance Attributes plug-in #5525
Remove Validate Instance Attributes plug-in.
Enhancement: Tweak logging for artist facing reports #5537
Tweak the logging of publishing for global, deadline, maya and a fusion plugin to have a cleaner artist-facing report.
- Fix context being reported correctly from CollectContext
- Fix ValidateMeshArnoldAttributes: fix when arnold is not loaded, fix applying settings, fix for when ai attributes do not exist
AYON: Update settings #5544
Updated settings in AYON addons and conversion of AYON settings in OpenPype.
Nuke: Allow for knob values to be validated against multiple values. #5042
Knob values can now be validated against multiple values, so you can allow write nodes to be exr
and png
, or 16-bit
and 32-bit
.
Enhancement: Cosmetics for Higher version of publish already exists validation error #5190
Fix double spaces in message.Example output after the PR:
Nuke: publish existing frames on farm #5409
This PR proposes adding a fourth option in Nuke render publish called "Use Existing Frames - Farm". This would be useful when the farm is busy or when the artist lacks enough farm licenses. Additionally, some artists prefer rendering on the farm but still want to check frames before publishing.By adding the "Use Existing Frames - Farm" option, artists will have more flexibility and control over their render publishing process. This enhancement will streamline the workflow and improve efficiency for Nuke users.
Unreal: Create project in temp location and move to final when done #5476
Create Unreal project in local temporary folder and when done, move it to final destination.
TrayPublisher: adding audio product type into default presets #5489
Adding Audio product type into default presets so anybody can publish audio to their shots.
Global: avoiding cleanup of flagged representation #5502
Publishing folder can be flagged as persistent at representation level.
General: missing tag could raise error #5511
- avoiding potential situation where missing Tag key could raise error
Chore: Queued event system #5514
Implemented event system with more expected behavior of event system. If an event is triggered during other event callback, it is not processed immediately but waits until all callbacks of previous events are done. The event system also allows to not trigger events directly once emit_event
is called which gives option to process events in custom loops.
Publisher: Tweak log message to provide plugin name after "Plugin" #5521
Fix logged message for settings automatically applied to plugin attributes
Houdini: Improve VDB Selection #5523
Improves VDB selection if selection is SopNode
: return the selected sop nodeif selection is ObjNode
: get the output node with the minimum 'outputidx' or the node with display flag
Maya: Refactor/tweak Validate Instance In same Context plug-in #5526
- Chore/Refactor: Re-use existing select invalid and repair actions
- Enhancement: provide more elaborate PublishValidationError report
- Bugfix: fix "optional" support by using
OptionalPyblishPluginMixin
base class.
Enhancement: Update houdini main menu #5527
This PR adds two updates:
- dynamic main menu
- dynamic asset name and task
Houdini: Reset FPS when clicking Set Frame Range #5528
Similar to Maya, Make Set Frame Range
resets FPS, issue #5516
Enhancement: Deadline plugins optimize, cleanup and fix optional support for validate deadline pools #5531
- Fix optional support of validate deadline pools
- Query deadline webservice only once per URL for verification, and once for available deadline pools instead of for every instance
- Use
deadlineUrl
ininstance.data
when validating pools if it is set. - Code cleanup: Re-use existing
requests_get
implementation
Chore: Create plugin does not expect system settings #5553
System settings are not passed to initialization of create plugin initialization (and apply_settings
).
Chore: Allow custom Qt scale factor rounding policy #5555
Do not force PassThrough
rounding policy if different policy is defined via env variable.
Houdini: Fix outdated containers pop-up on opening last workfile on launch #5567
Fix Houdini not showing outdated containers pop-up on scene open when launching with last workfile argument
Houdini: Improve errors e.g. raise PublishValidationError or cosmetics #5568
Improve errors e.g. raise PublishValidationError or cosmeticsThis also fixes the Increment Current File plug-in since due to an invalid import it was previously broken
Fusion: Code updates #5569
Update fusion code which contains obsolete code. Removed switch_ui.py
script from fusion with related script in scripts.
🐛 Bug fixes
Maya: Validate Shape Zero fix repair action + provide informational artist-facing report #5524
Refactor to PublishValidationError to allow the RepairAction to work + provide informational report message
Maya: Fix attribute definitions for `CreateYetiCache` #5574
Fix attribute definitions for CreateYetiCache
Max: Optional Renderable Camera Validator for Render Instance #5286
Optional validation to check on renderable camera being set up correctly for deadline submission.If not being set up correctly, it wont pass the validation and user can perform repair actions.
3.16.4
🆕 New features
Feature: Download last published workfile specify version #4998
Setting workfile_version
key to hook's self.launch_context.data
allow you to specify the workfile version you want sync service to download if none is matched locally. This is helpful if the last version hasn't been correctly published/synchronized, and you want to recover the previous one (or some you'd like).Version could be set in two ways:
- OP's absolute version, matching the
version
index in DB. - Relative version in reverse order from the last one:
-2
,-3
...I don't know where I should write documentation about that.
🚀 Enhancements
Maya: allow not creation of group for Import loaders #5427
This PR enhances previous one. All ReferenceLoaders could not wrap imported products into explicit group.Also Import
Loaders have same options. Control for this is separate in Settings, eg. Reference might wrap loaded items in group, Import
might not.
General: Navigation to Folder from Launcher #5404
Adds an action in launcher to open the directory of the asset.
Chore: Default variant in create plugin #5429
Attribute default_variant
on create plugins always returns string and if default variant is not filled other ways how to get one are implemented.
Publisher: Thumbnail widget enhancements #5439
Thumbnails widget in Publisher has new 3 options to choose from: Paste (from clipboard), Take screenshot and Browse. Clear button and new options are not visible by default, user must expand options button to show them.
🐛 Bug fixes
AYON: Apply unknown ayon settings first #5435
Settings of custom addons are available in converted settings.
Maya: Fix wrong subset name of render family in deadline #5442
New Publisher is creating different subset names than previously which resulted in duplication of render
string in final subset name of render
family published on Deadline.This PR solves that, it also fixes issues with legacy instances from old publisher, it matches the subset name as was before.This solves same issue in Max implementation.
Maya: Fix setting of version to workfile instance #5452
If there are multiple instances of renderlayer published, previous logic resulted in unpredictable rewrite of instance family to 'workfile' if Sync render version with workfile
was on.
Maya: Context plugin shouldn't be tied to family #5464
Maya Current File
collector was tied to workfile
unnecessary. It should run even if workile
instance is not being published.
Unreal: Fix loading hero version for static and skeletal meshes #5393
Fixed a problem with loading hero versions for static ans skeletal meshes.
TVPaint: Fix 'repeat' behavior #5412
Calculation of frames for repeat behavior is working correctly.
AYON: Thumbnails cache and api prep #5437
Moved thumbnails cache from ayon python api to OpenPype and prepare AYON thumbnail resolver for new api functions. Current implementation should work with old and new ayon-python-api.
Nuke: Name of the Read Node should be updated correctly when switching versions or assets. #5444
Bug fixing of the read node's name not being updated correctly when setting version or switching asset.
Farm publishing: asymmetric handles fixed #5446
Handles are now set correctly on farm published product version if asymmetric were set to shot attributes.
Fix typo on Deadline OP plugin name #5453
Surprised that no one has hit this bug yet... but it seems like there was a typo on the name of the OP Deadline plugin when submitting jobs to it.
Merged pull requests
Added missing defaults for import_loader #5447
Bug: Local settings don't open on 3.14.7 #5220
Before posting a new ticket, have you looked through the documentation to find an answer?
Yes I have
Have you looked through the existing tickets to find any related issues ?
Not yet
Author of the bug
Version
3.15.11-nightly.3
What platform you are running OpenPype on?
Linux / Centos
Current Behavior:
Expected Behavior:
What type of bug is it ?
Happened only once in a particular configuration
Which project / workfile / asset / ...
open settings with 3.14.7
Steps To Reproduce:
- Run openpype on the 3.15.11-nightly.3 version
- Open settings in 3.14.7 version
Relevant log output:
No response
Additional context:
No response
Tests: Add automated targets for tests #5443
Without it plugins with 'automated' targets won't be triggered (eg CloseAE
etc.)
3.16.3
🆕 New features
AYON: 3rd party addon usage #5300
Prepare OpenPype code to be able use ayon-third-party
addon which supply ffmpeg and OpenImageIO executables. Because they both can support to define custom arguments (more than one) a new functions were needed to supply.New functions are get_ffmpeg_tool_args
and get_oiio_tool_args
. They work similar to previous but instead of string are returning list of strings. All places using previous functions get_ffmpeg_tool_path
and get_oiio_tool_path
are now using new ones. They should be backwards compatible and even with addon if returns single argument.
AYON: Addon settings in OpenPype #5347
Moved settings addons to OpenPype server addon. Modified create package to create zip files for server for each settings addon and for openpype addon.
AYON: Add folder to template data #5417
Added folder
to template data, so {folder[name]}
can be used in templates.
Option to start versioning from 0 #5262
This PR adds a settings option to start all versioning from 0.This PR will replace #4455.
Ayon: deadline implementation #5321
Quick implementation of deadline in Ayon. New Ayon plugin added for Deadline repository
AYON: Remove AYON launch logic from OpenPype #5348
Removed AYON launch logic from OpenPype. The logic is outdated at this moment and is replaced by ayon-launcher
.
🚀 Enhancements
Bug: Error on multiple instance rig with maya #5310
I change endswith method by startswith method because the set are automacaly name out_SET, out_SET1, out_SET2 ...
Applications: Use prelaunch hooks to extract environments #5387
Environment variable preparation is based on prelaunch hooks. This should allow to pass OCIO environment variables to farm jobs.
Applications: Launch hooks cleanup #5395
Use set
instead of list
for filtering attributes in launch hooks. Celaction hooks dir does not contain __init__.py
. Celaction prelaunch hook is reusing CELACTION_ROOT_DIR
. Launch hooks are using full import from openpype.lib.applications
.
Applications: Environment variables order #5245
Changed order of set environment variables. First are set context environment variables and then project environment overrides. Also asset and task environemnt variables are optional.
Autosave preferences can be read after Nuke opens the script #5295
Looks like I need to open the script in Nuke to be able to correctly load the autosave preferences.This PR reads the Nuke script in context, and offers owerwriting the current script with autosaved one if autosave exists.
Resolve: Update with compatible resolve version and latest docs #5317
Missing information about compatible Resolve version and latest docs from https://github.com/ynput/OpenPype/tree/develop/openpype/hosts/resolve
Chore: Remove deprecated functions #5323
Removed functions/classes that are deprecated and marked to be removed.
Nuke Render and Prerender nodes Process Order - OP-3555 #5332
This PR exposes control over the order of processing of the instances, by sorting the instances created. The sorting happens on the render_order
and subset name. If the knob render_order
is found on the instance, we'll sort by that first before sorting by subset name.render_order
instances are processed before nodes without render_order
. This could be extended in the future by querying other knobs but I dont know of a usecase for this.Hardcoded the creator order
attribute of the prerender
class to be before the render
. Could be exposed to the user/studio but dont know of a use case for this.
Unreal: Python Environment Improvements #5344
Automatically set UE_PYTHONPATH
as PYTHONPATH
when launching Unreal.
Unreal: Custom location for Unreal Ayon Plugin #5346
Added a new environment variable AYON_BUILT_UNREAL_PLUGIN
to set an already existing and built Ayon Plugin for Unreal.
Unreal: Better handling of Exceptions in UE Worker threads #5349
Implemented a new UEWorker
base class to handle exception during the execution of UE Workers.
Houdini: Add farm toggle on creation menu #5350
Deadline Farm publishing and Rendering for Houdini was possible with this PR #4825 farm publishing is enabled by default some ROP nodes which may surprise new users (like me).I think adding a toggle (on by default) on creation UI is better so that users will be aware that there's a farm option for this publish instance.ROPs Modified :
- Mantra ROP
- Karma ROP
- Arnold ROP
- Redshift ROP
- Vray ROP
Chore: Schemas inside OpenPype #5354
Moved/copied schemas from repository root inside openpype/pipeline.
AYON: Addons creation enhancements #5356
Enhanced AYON addons creation. Fix issue with Pattern
typehint. Zip filenames contain version. OpenPype package is skipping modules that are already separated in AYON. Updated settings of addons.
Enhancement: Houdini Update pointcache labels #5373
To me it's logical to find pointcaches types listed one after another, but they were named differentlySo, I made this PR to update their labels
nuke: split write node product instance features #5389
Improving Write node product instances by allowing precise activation of specific features.
Max: Use the empty modifiers in container to store AYON Parameter #5396
Instead of adding AYON/OP Parameter along with other attributes inside the container, empty modifiers would be created to store AYON/OP custom attributes
AfterEffects: Removed unused imports #5397
Removed unused import from extract local render plugin file.
Nuke: adding BBox knob type to settings #5405
Nuke knob types in settings having new Box
type for reposition nodes like Crop or Reformat.
SyncServer: Existence of module is optional #5413
Existence of SyncServer module is optional and not required. Added sync_server
module back to ignored modules when openpype addon is created for AYON. Command syncserver
is marked as deprecated and redirected to sync server cli.
Webpublisher: Self contain test publish logic #5414
Moved test logic of publishing to webpublisher. Simplified remote_publish
to remove webpublisher specific logic.
Webpublisher: Cleanup targets #5418
Removed remote
target from webpublisher and replaced it with 2 targets webpublisher
and ...
3.16.2
🆕 New features
Fusion - Set selected tool to active #5327
When you run the action to select a node, this PR makes the node-flow show the selected node + you'll see the nodes controls in the inspector.
🚀 Enhancements
Maya: All base create plugins #5326
Prepared base classes for each creator type in Maya. Extended MayaCreatorBase
to have default implementations of common logic with instances which is used in each type of plugin.
Windows: Support long paths on zip updates. #5265
Support long paths for version extract on Windows.Use case is when having long paths in for example an addon. You can install to the C drive but because the zip files are extracted in the local users folder, it'll add additional sub directories to the paths and quickly get too long paths for Windows to handle the zip updates.
Blender: Added setting to set resolution and start/end frames at startup #5338
This PR adds set_resolution_startup
and set_frames_startup
settings. They automatically set respectively the resolution and start/end frames and FPS in Blender when opening a file or creating a new one.
Blender: Support for ExtractBurnin #5339
This PR adds support for ExtractBurnin for Blender, when publishing a Review.
🐛 Bug fixes
Settings: Fix default settings #5311
Fixed defautl settings for shotgrid. Renamed FarmRootEnumEntity
to DynamicEnumEntity
and removed doubled ABC metaclass definition (all settings entities have abstract metaclass).
Qt UI: Multiselection combobox PySide6 compatibility #5314
- The check states are replaced with the values for PySide6
QtCore.Qt.ItemIsUserTristate
is used instead ofQtCore.Qt.ItemIsTristate
to avoid crashes on PySide6
Docker: handle openssl 1.1.1 for centos 7 docker build #5319
Move to python 3.9 has added need to use openssl 1.1.x - but it is not by default available on centos 7 image. This is fixing it.
houdini: fix typo in redshift proxy #5320
I believe there's a typo in create_redshift_proxy.py
( extra ` ) in filename, and I made this PR to suggest a fix
Houdini: fix wrong creator identifier in pointCache workflow #5324
FIxing a bug in publishing alembics, were invalid creator identifier caused missing family association.
Fix colorspace compatibility check #5334
for some reason a user may have PyOpenColorIO
installed to his machine, _in my case it came with renderman._it can trick the compatibility check as import PyOpenColorIO
won't raise an error however it may be an old version _like my case_Beforecompatibility check was true and It used wrapper directly After Fix It will use wrapper via subprocess instead
Merged pull requests
Remove forgotten dev logging #5315
3.16.1
🆕 New features
Royal Render: Maya and Nuke support #5191
Basic working implementation of Royal Render support in Maya.It expects New publisher implemented in Maya.
Blender: Blend File Family #4321
Implementation of the Blend File family analogue to the Maya Scene one.
___Houdini: simple bgeo publishing #4588
Support for simple publishing of bgeo files.
This is adding basic support for bgeo publishing in Houdini. It will allow publishing bgeo in all supported formats (selectable in the creator options). If selected node has output
on sop level, it will be used automatically as path in file node.
🚀 Enhancements
General: delivery action add renamed frame number in Loader #5024
Frame Offset options for delivery in Openpype loader
Enhancement/houdini add path action for abc validator #5237
Add a default path attribute Action.it's a helper action more than a repair action, which used to add a default single value.
Nuke: auto apply all settings after template build #5277
Adding auto run of Apply All Settings after template is builder is finishing its process. This will apply Frame-range, Image size, Colorspace found in context of a task shot.
Harmony:Removed loader settings for Harmony #5289
It shouldn't be configurable, it is internal logic. By adding additional extension it wouldn't start to work magically.
🐛 Bug fixes
AYON: Make appdirs case sensitive #5298
Appdirs for AYON are case sensitive for linux and mac so we needed to change them to match ayon launcher. Changed 'ayon' to 'AYON' and 'ynput' to 'Ynput'.
Traypublisher: Fix plugin order #5299
Frame range collector for traypublisher was moved to traypublisher plugins and changed order to make sure assetEntity
is filled in instance.data
.
Deadline: removing OPENPYPE_VERSION from some host submitters #5302
Removing deprecated method of adding OPENPYPE_VERSION to job environment. It was leftover and other hosts have already been cleared.
AYON: Fix args for workfile conversion util #5308
Workfile update conversion util function have right expected arguments.
🔀 Refactored code
Maya: Refactor imports to `lib.get_reference_node` since the other function… #5258
Refactor imports to lib.get_reference_node
since the other function is deprecated.
3.16.0
🆕 New features
General: Reduce usage of legacy io #4723
Replace usages of legacy_io
with getter methods or reuse already available information. Create plugins using CreateContext are using context from CreateContext object. Loaders are usign getter function from context tools. Publish plugin are using information instance.data or context.data. In some cases were pieces of code refactored a little e.g. fps getter in maya.
Documentation: API docs reborn - yet again #4419
Feature
Add functional base for API Documentation using Sphinx and AutoAPI.
After unsuccessful #2512, #834 and #210 this is yet another try. But this time without ambition to solve the whole issue. This is making Shinx script to work and nothing else. Any changes and improvements in API docs should be made in subsequent PRs.
How to use it
You can run:
cd .\docs
make.bat html
or
cd ./docs
make html
This will go over our code and generate .rst files in /docs/source/autoapi
and from those it will generate full html documentation in /docs/build/html
.
During the build you'll see tons of red errors that are pointing to our issues:
-
Wrong imports
Invalid import are usually wrong relative imports (too deep) or circular imports. -
Invalid doc-strings
Doc-strings to be processed into documentation needs to follow some syntax - this can be checked by running
pydocstyle
that is already included with OpenPype -
Invalid markdown/rst files
md/rst files can be included inside rst files using.. include::
directive. But they have to be properly formatted.
Editing rst templates
Everything starts with /docs/source/index.rst
- this file should be properly edited, Right now it just includes readme.rst
that in turn include and parse main README.md
. This is entrypoint to API documentation. All templates generated by AutoAPI are in /docs/source/autoapi
. They should be eventually commited to repository and edited too.
Steps for enhancing API documentation
- Run
/docs/make.bat html
- Read the red errors/warnings - fix it in the code
- Run
/docs/make.bat html
again until there are not red lines - Edit rst files and add some meaningfull content there
Note
This can (should) be merged as is without doc-string fixes in the code or changes in templates. All additional improvements on API documentation should be made in new PRs.
Warning
You need to add new dependencies to use it. Runcreate_venv
.
Connected to #2490
Global: custom location for OP local versions #4673
This provides configurable location to unzip Openpype version zips. By default, it was hardcoded to artist's app data folder, which might be problematic/slow with roaming profiles.Location must be accessible by user running OP Tray with write permissions (so Program Files
might be problematic)
AYON: Update settings conversion #4837
Updated conversion script of AYON settings to v3 settings. PR is related to changes in addons repository ynput/ayon-addons-settings#6 . Changed how the conversion happens -> conversion output does not start with openpype defaults but as empty dictionary.
AYON: Implement integrate links publish plugin #4842
Implemented entity links get/create functions. Added new integrator which replaces v3 integrator for links.
General: Version attributes integration #4991
Implemented unified integrate plugin to update version attributes after all integrations for AYON. The goal is to be able update attribute values in a unified way to a version when all addon integrators are done, so e.g. ftrack can add ftrack id to matching version in AYON server etc.The can be stored under "versionAttributes"
key.
AYON: Preparation for products #5038
Prepare ayon settings conversion script for product
settings conversion.
Loader: Hide inactive versions in UI #5101
Added support for active
argument to hide versions with active set to False in Loader UI when in AYON mode.
AYON: OpenPype as server addon #5199
OpenPype repository can be converted to AYON addon for distribution. Addon has defined dependencies that are required to use it and are not in base ayon-launcher (desktop application).
General: Runtime dependencies #5206
Defined runtime dependencies in pyproject toml. Moved python ocio and otio modules there.
AYON: Bundle distribution #5209
Since AYON server 0.3.0 are addon versions defined by bundles which affects how addons, dependency packages and installers are handled. Only source of truth, about any version of anything that should be used, is server bundle.
Feature/blender handle q application #5264
This edit is to change the way the QApplication is run for Blender. It calls in the singleton (QApplication) during the register. This is made so that other Qt applications and addons are able to run on Blender. In its current implementation, if a QApplication is already running, all functionality of OpenPype becomes unavailable.
🚀 Enhancements
Maya: Refactor to new publisher #4388
Refactor Maya to use the new publisher with new creators.General: Connect to AYON server (base) #3924
Initial implementation of being able use AYON server in current OpenPype client. Added ability to connect to AYON server and use base queries.
AYON mode has it's own executable (and start script). To start in AYON mode just replace start.py
with ayon_start.py
(added tray start script to tools). Added constant AYON_SERVER_ENABLED
to openpype/__init__.py
to know if ayon mode is enabled. In that case Mongo is not used at all and any attempts will cause crashes.I had to modify ~/openpype/client
content to be able do this switch. Mongo implementation was moved to mongo
subfolder and use "star imports" in files from where current imports are used. Logic of any tool or query in code was not changed at all. Since functions were based on mongo queries they don't use full potential of AYON server abilities.ATM implementation has login UI, distribution of files from server and replacement of mongo queries. For queries is used ayon_api
module. Which is in live development so the versions may change from day to day.
Enhancement kitsu note with exceptions #4537
Adding a setting to choose some exceptions to IntegrateKitsuNote task status changes.
General: Environment variable for default OCIO configs #4670
Define environment variable which lead to root of builtin ocio configs to be able change the root without changing settings. For the path in settings was used "{OPENPYPE_ROOT}/vendor/bin/ocioconfig/OpenColorIOConfig"
which disallow to change the root somewhere else. That will be needed in AYON where configs won't be part of desktop application but downloaded from server.
AYON: Editorial hierarchy creation #4699
Implemented extract hierarchy to AYON plugin which created entities in AYON using ayon api.
AYON: Vendorize ayon api #4753
Vendorize ayon api into openpype vendor directory. The reason is that ayon-python-api
is in live development and will fix/add features often in next few weeks/months, and because update of dependency requires new release -> new build, we want to avoid the need of doing that as it would af...
3.15.12
🆕 New features
Tray Publisher: User can set colorspace per instance explicitly #4901
With this feature a user can set/override the colorspace for the representations of an instance explicitly instead of relying on the File Rules from project settings or alike. This way you can ingest any file and explicitly say "this file is colorspace X".
Review Family in Max #5001
Review Feature by creating preview animation in 3dsmax(The code is still cleaning up so there is going to be some updates until it is ready for review)
AfterEffects: support for workfile template builder #5163
This PR add functionality of templated workfile builder. It allows someone to prepare AE workfile with placeholders as for automatically loading particular representation of particular subset of particular asset from context where workfile is opened.Selection from multiple prepared workfiles is provided with usage of templates, specific type of tasks could use particular workfile template etc.Artists then can build workfile from template when opening new workfile.
CreatePlugin: Get next version helper #5242
Implemented helper functions to get next available versions for create instances.
🚀 Enhancements
Maya: Improve Templates #4854
Use library method for fetching reference node and support parent in hierarchy.
Bug: Maya - xgen sidecar files arent moved when saving workfile as an new asset workfile changing context - OP-6222 #5215
This PR manages the Xgen files when switching context in the Workfiles app.
node references to check for duplicates in Max #5192
No duplicates for node references in Max when users trying to select nodes before publishing
Tweak profiles logging to debug level #5194
Tweak profiles logging to debug level since they aren't artist facing logs.
Enhancement: Reduce more visual clutter for artists in new publisher reports #5208
Got this from one of our artists' reports - figured some of these logs were definitely not for the artist, reduced those logs to debug level.
Cosmetics: Tweak pyblish repair actions (icon, logs, docstring) #5213
- Add icon to RepairContextAction
- logs to debug level
- also add attempt repair for RepairAction for consistency
- fix RepairContextAction docstring to mention correct argument name
Additional info
We should not forget to remove this "deprecated" actions.py file in 3.16 (next-minor)
Testing notes:
- Run some fabulous repairs!
Maya: fix save file prompt on launch last workfile with color management enabled + restructure `set_colorspace` #5225
- Only set
configFilePath
when OCIO env var is not set since it doesn't do anything if OCIO var is set anyway. - Set the Maya 2022+ default OCIO path using the resources path instead of "" to avoid Maya Save File on new file after launch
- Bugfix: This is what fixes the Save prompt on open last workfile feature with Global color management enabled
- Move all code related to applying the maya settings together after querying the settings
- Swap around the
if use_workfile_settings
since the check was reversed - Use
get_current_project_name()
instead of environment vars
Enhancement: More descriptive error messages for Loaders #5227
Tweak raised errors and error messages for loader errors.
Houdini: add select invalid action for ValidateSopOutputNode #5231
This PR adds SelectROPAction
action to houdini\api\action.py
and it's used in Validate Output Node``SelectROPAction
is used to select the associated ROPs with the errored instances.
Remove new lines from the delivery template string #5235
If the delivery template has a new line symbol at the end, say it was copied from the text editor, the delivery process will fail with OSError
due to incorrect destination path. To avoid that I added rstrip()
to the delivery_path
processing.
Houdini: better selection on pointcache creation #5250
Houdini allows ObjNode
path as sop_path
in the ROP
unlike OP/ Ayon require sop_path
to be set to a sop node path explicitly In this code, better selection is used to filter out invalid selections from OP/ Ayon point of viewValid selections are
SopNode
that has parent of typegeo
orsubnet
ObjNode
of typegeo
that hasSopNode
of typeoutput
SopNode
with render flagon
(if noSopnode
of typeoutput
)this effectively filter- empty
ObjNode
ObjNode
(s) of other types likecam
anddopnet
SopNode
(s) that thier parents of other types likecam
andsop solver
Update scene inventory even if any errors occurred during update #5252
When selecting many items in the scene inventory to update versions and one of the items would error out the updating stops. However, before this PR the scene inventory would also NOT refresh making you think it did nothing.Also implemented as method to allow some code deduplication.
🐛 Bug fixes
Maya: fix the register_event_callback correctly collecting workfile save after #5214
fixing the bug of register_event_callback not being able to collect action of "workfile_save_after" for lock file action
Maya: aligning default settings to distributed aces 1.2 config #5233
Maya colorspace setttings defaults are set the way they align our distributed ACES 1.2 config file set in global colorspace configs.
RepairAction and SelectInvalidAction filter instances failed on the exact plugin #5240
RepairAction and SelectInvalidAction actually filter to instances that failed on the exact plugin - not on "any failure"
Maya: Bugfix look update nodes by id with non-unique shape names (query with `fullPath`) #5257
Fixes a bug where updating attributes on nodes with assigned shader if shape name existed more than once in the scene due to cmds.listRelatives
call not being done with the fullPath=True
flag.Original error:
# Traceback (most recent call last):
# File "E:\openpype\OpenPype\openpype\tools\sceneinventory\view.py", line 264, in <lambda>
# lambda: self._show_version_dialog(items))
# File "E:\openpype\OpenPype\openpype\tools\sceneinventory\view.py", line 722, in _show_version_dialog
# self._update_containers(items, version)
# File "E:\openpype\OpenPype\openpype\tools\sceneinventory\view.py", line 849, in _update_containers
# update_container(item, item_version)
# File "E:\openpype\OpenPype\openpype\pipeline\load\utils.py", line 502, in update_container
# return loader.update(container, new_representation)
# File "E:\openpype\OpenPype\openpype\hosts\maya\plugins\load\load_look.py", line 119, in update
# nodes_by_id[lib.get_id(n)].append(n)
# File "E:\openpype\OpenPype\openpype\hosts\maya\api\lib.py", line 1420, in get_id
# sel.add(node)
Nuke: Create nodes with inpanel=False #5051
This PR is meant to remove the annoyance of the UI changing focus to the properties window just for the property window of the newly created node to disappear. Instead of using node.hideControlPanel I'm implementing the concealment during the creation of the node which will not change the focus of the current window.
Fix the reset frame range not sett...
3.15.11
🆕 New features
Ftrack: Task status during publishing #5123
Added option to change task status during publishing for 3 possible cases: "sending to farm", "local integration" and "on farm integration".
Nuke: Allow for more complex temp rendering paths #5132
When changing the temporary rendering template (i.e., add {asset}
to the path) to something a bit more complex the formatting was erroring due to missing keys.
Blender: Add support for custom path for app templates #5137
This PR adds support for a custom App Templates path in Blender by setting the BLENDER_USER_SCRIPTS
environment variable to the path specified in OPENPYPE_APP_TEMPLATES_PATH
. This allows users to use their own custom app templates in Blender.
TrayPublisher & StandalonePublisher: Specify version #5142
Simple creators in TrayPublisher can affect which version will be integrated. Standalone publisher respects the version change from UI.
🚀 Enhancements
Workfile Builder UI: Workfile builder window is not modal #5131
Workfile Templates Builder:
- Create dialog is not a modal dialog
- Create dialog remains open after create, so you can directly create a new placeholder with similar settings
- In Maya allow to create root level placeholders (no selection during create) - this felt more like a bugfix than anything else.
3dsmax: Use custom modifiers to hold instance members #4931
Moving logic to handle members of publishing instance from children/parent relationship on Container to tracking via custom attribute on modifier. This eliminates limitations where you couldn't have one node multiple times under one Container and because it stores those relationships as weak references, they are easily transferable even when original nodes are renamed.
Add height, width and fps setup to project manager #5075
Add Width, Height, FPS, Pixel Aspect and Frame Start/End to the Project creation dialogue in the Project Manager.I understand that the Project manager will be replaced in the upcoming Ayon, but for the time being I believe setting new project with these options available would be more fun.
Nuke: connect custom write node script to the OP setting #5113
Allows user to customize the values of knobs attribute in the OP setting and use it in custom write node
Keep `publisher.create_widget` variant when creating subsets #5119
Whenever a person is creating a subset to publish, the "creator" widget resets (where you choose the variant, product, etc.) so if the person is publishing several images of the a variant which is not the default one, they have to keep selecting the correct one after every "create".
This commit resets the original variant upon successful creation of a subset for publishing.
Demo:
Screencast from 2023-06-08 10-46-40.webm
Testing notes:
- Launch AYON/OP
- Launch the publisher (select a project, shot, etc.)
- Crete a publish type (any works)
- Choose a variant for the publish that is not the default
- "Create >>"
The Variant fields should still have the variant you choose.
Color Management- added color management support for simple expected files on Deadline #5122
Running of ExtractOIIOTranscode
during Deadline publish was previously implemented only on DCCs with AOVs (Maya, Max).This PR extends this for other DCCs with flat structure of expected files.
hide macos dock icon on build #5133
Set LSUIElement
to 1
in the Info.plist
to hide OP icon from the macos dock by default.
Pack project: Raise exception with reasonable message #5145
Pack project crashes with relevant message when destination directory is not set.
Allow "inventory" actions to be supplied by a Module/Addon. #5146
Adds "inventory" as a possible key to the plugin paths to be returned from a module.
3dsmax: make code compatible with 3dsmax 2022 #5164
Python 3.7 in 3dsmax 2022 is not supporting walrus operator. This is removing it from the code for the sake of compatibility
🐛 Bug fixes
Maya: Support same attribute names on different node types. #5054
When validating render settings attributes, support same attribute names on different node types.
Maya: bug fix the standin being not loaded when they are first loaded #5143
fix the bug of raising error when the first two standins are loaded through the loaderThe bug mentioned in the related issue: https://github.com/ynput/OpenPype/issues/5129For some reason, defaultArnoldRenderOptions.operator
is not listed in the connection node attribute even if cmds.loadPlugin("mtoa", quiet=True)
executed before loading the object as standins for the first time.But if you manually turn on mtoa through plugin preference and load the standins for the first time, it won't raise the related defaultArnoldRenderOptions.operator
error.
Maya: bug fix arnoldExportAss unable to export selected set members #5150
See #5108 fix the bug arnoldExportAss being not able to export and error out during extraction.
Maya: Xgen multiple descriptions on single shape - OP-6039 #5160
When having multiple descriptions on the same geometry, the extraction would produce redundant duplicate geometries.
Maya: Xgen export of Abc's during Render Publishing - OP-6206 #5167
Shading assignments was missing duplicating the setup for Xgen publishing and the exporting of patches was getting the end frame incorrectly.
OCIO: Support working with single frame renders #5053
When there is only 1 file, the datamember files
on the representation should be a string.
Burnins: Refactored burnins script #5094
Refactored list value for burnins and fixed command length limit by using temp file for filters string.
Nuke: open_file function can open autosave script #5107
Fix the bug of the workfile dialog being unable to open autosave nuke script
Maya: Xgen version mismatch after publish - OP-6204 #5161
Xgen was not updating correctly when for example adding or removing descriptions. This resolve the issue by overwritting the workspace xgen file.