Releases: ynput/OpenPype
3.15.9
🆕 New features
Blender: Implemented Loading of Alembic Camera #4990
Implemented loading of Alembic cameras in Blender.
Unreal: Implemented Creator, Loader and Extractor for Levels #5008
Creator, Loader and Extractor for Unreal Levels have been implemented.
🚀 Enhancements
Blender: Added setting for base unit scale #4987
A setting for the base unit scale has been added for Blender.The unit scale is automatically applied when opening a file or creating a new one.
Unreal: Changed naming and path of Camera Levels #5010
The levels created for the camera in Unreal now include _camera
in the name, to be better identifiable, and are placed in the camera folder.
Settings: Added option to nest settings templates #5022
It is possible to nest settings templates in another templates.
Enhancement/publisher: Remove "hit play to continue" label on continue #5029
Remove "hit play to continue" message on continue so that it doesn't show anymore when play was clicked.
Ftrack: Limit number of ftrack events to query at once #5033
Limit the amount of ftrack events received from mongo at once to 100.
Global: collect frames to fix with settings #5036
Settings for Collect Frames to Fix
will allow disable per project the plugin. Also Rewriting latest version
attribute is hiddable from settings.
General: Publish plugin apply settings can expect only project settings #5037
Only project settings are passed to optional apply_settings
method, if the method expects only one argument.
🐛 Bug fixes
Maya: Skipping rendersetup for members. #4973
When publishing a rendersetup
, the objectset is and should be empty.
Maya: Validate Rig Output IDs #5016
Absolute names of node were not used, so plugin did not fetch the nodes properly.Also missed pymel command.
Deadline: escape rootless path in publish job #4910
If the publish path on Deadline job contains spaces or other characters, command was failing because the path wasn't properly escaped. This is fixing it.
General: Company name and URL changed #4974
The current records were obsolete in inno_setup, changed to the up-to-date.
Unreal: Fix usage of 'get_full_path' function #5014
This PR changes all the occurrences of get_full_path
functions to alternatives to get the path of the objects.
Unreal: Fix sequence frames validator to use correct data #5021
Fix sequence frames validator to use clipIn and clipOut data instead of frameStart and frameEnd.
Unreal: Fix render instances collection to use correct data #5023
Fix render instances collection to use frameStart
and frameEnd
from the Project Manager, instead of the sequence's ones.
Resolve: loader is opening even if no timeline in project #5025
Loader is opening now even no timeline is available in a project.
nuke: callback for dirmapping is on demand #5030
Nuke was slowed down on processing due this callback. Since it is disabled by default it made sense to add it only on demand.
Publisher: UI works with instances without label #5032
Publisher UI does not crash if instance don't have filled 'label' key in instance data.
Publisher: Call explicitly prepared tab methods #5044
It is not possible to go to Create tab during publishing from OpenPype menu.
Ftrack: Role names are not case sensitive in ftrack event server status action #5058
Event server status action is not case sensitive for role names of user.
Publisher: Fix border widget #5063
Fixed border lines in Publisher UI to be painted correctly with correct indentation and size.
Unreal: Fix Commandlet Project and Permissions #5066
Fix problem when creating an Unreal Project when Commandlet Project is in a protected location.
Unreal: Added verification for Unreal app name format #5070
The Unreal app name is used to determine the Unreal version folder, so it is necessary that if follows the format x-x
, where x
is any integer. This PR adds a verification that the app name follows that format.
📃 Documentation
Docs: Display wrong image in ExtractOIIOTranscode #5045
Wrong image display in https://openpype.io/docs/project_settings/settings_project_global#extract-oiio-transcode
.
Merged pull requests
Drop-down menu to list all families in create placeholder #4928
Currently in the create placeholder window, we need to write the family manually. This replace the text field by an enum field with all families for the current software.
add sync to specific projects or listen only #4919
Extend kitsu sync service with additional arguments to sync specific projects.
3.15.8
🆕 New features
Publisher: Show instances in report page #4915
Show publish instances in report page. Also added basic log view with logs grouped by instance. Validation error detail now have 2 colums, one with erro details second with logs. Crashed state shows fast access to report action buttons. Success will show only logs. Publish frame is shrunked automatically on publish stop.
Fusion - Loader plugins updates #4920
Update to some Fusion loader plugins:The sequence loader can now load footage from the image and online family.The FBX loader can now import all formats Fusions FBX node can read.You can now import the content of another workfile into your current comp with the workfile loader.
AfterEffects: set frame range and resolution #4983
Frame information (frame start, duration, fps) and resolution (width and height) is applied to selected composition from Asset Management System (Ftrack or DB) automatically when published instance is created.It is also possible explicitly propagate both values from DB to selected composition by newly added menu buttons.
Publish: Enhance automated publish plugin settings #4986
Added plugins option to define settings category where to look for settings of a plugin and added public helper functions to apply settings get_plugin_settings
and apply_plugin_settings_automatically
.
🚀 Enhancements
Load Rig References - Change Rig to Animation in Animation instance #4877
We are using the template builder to build an animation scene. All the rig placeholders are imported correctly, but the automatically created animation instances retain the rig family in their names and subsets. In our example, we need animationMain instead of rigMain, because this name will be used in the following steps like lighting.Here is the result we need. I checked, and it's not a template builder problem, because even if I load a rig as a reference, the result is the same. For me, since we are in the animation instance, it makes more sense to have animation instead of rig in the name. The naming is just fine if we use create from the Openpype menu.
Enhancement: Resolve prelaunch code refactoring and update defaults #4916
The main reason of this PR is wrong default settings in openpype/settings/defaults/system_settings/applications.json
for Resolve host. The bin
folder should not be a part of the macos and Linux RESOLVE_PYTHON3_PATH
variable.The rest of this PR is some code cleanups for Resolve prelaunch hook to simplify further development.Also added a .gitignore for vscode workspace files.
Unreal: 🚚 move Unreal plugin to separate repository #4980
To support Epic Marketplace have to move AYON Unreal integration plugins to separate repository. This is replacing current files with git submodule, so the change should be functionally without impact.New repository lives here: https://github.com/ynput/ayon-unreal-plugin
Allow to open with djv by extension instead of representation name #5004
Filter open in djv action by extension instead of representation.
Nuke: extract thumbnail with multiple reposition nodes #5011
Added support for multiple reposition nodes.
Enhancement: Improve logging levels and messages for artist facing publish reports #5018
Tweak the logging levels and messages to try and only show those logs that an artist should see and could understand. Move anything that's slightly more involved into a "debug" message instead.
🐛 Bug fixes
Bugfix/frame variable fix #4978
Renamed variables to match OpenPype terminology to reduce confusion and add consistency.
Global: plugins cleanup plugin will leave beauty rendered files #4790
Attempt to mark more files to be cleaned up explicitly in intermediate renders
folder in work area for farm jobs.
Fix: Download last workfile doesn't work if not already downloaded #4942
Some optimization condition is messing with the feature: if the published workfile is not already downloaded, it won't download it...
Unreal: Fix transform when loading layout to match existing assets #4972
Fixed transform when loading layout to match existing assets.
fix the bug of fbx loaders in Max #4977
bug fix of fbx loaders for not being able to parent to the CON instances while importing cameras(and models) which is published from other DCCs such as Maya.
AfterEffects: allow returning stub with not saved workfile #4984
Allows to use Workfile app to Save first empty workfile.
Blender: Fix Alembic loading #4985
Fixed problem occurring when trying to load an Alembic model in Blender.
Nuke: fixed missing files key in representation #4999
Issue with missing keys once rendering target set to existing frames is fixed. Instance has to be evaluated in validation for missing files.
Unreal: Fix the frame range when loading camera #5002
The keyframes of the camera, when loaded, were not using the correct frame range.
Fusion: fixing frame range targeting #5013
Frame range targeting at Rendering instances is now following configured options.
Deadline: fix selection from multiple webservices #5015
Multiple different DL webservice could be configured. First they must by configured in System Settings., then they could be configured per project in project_settings/deadline/deadline_servers
.Only single webservice could be a target of publish though.
Merged pull requests
3dsmax: Refactored publish plugins to use proper implementation of pymxs #4988
3.15.7
🆕 New features
Addons directory #4893
This adds a directory for Addons, for easier distribution of studio specific code.
Kitsu - Add "image", "online" and "plate" to review families #4923
This PR adds "image", "online" and "plate" to the review families so they also can be uploaded to Kitsu.It also adds the Add review to Kitsu
tag to the default png review. Without it the user would manually need to add it for single image uploads to Kitsu and might confuse users (it confused me first for a while as movies did work).
Feature/remove and load inv action #4930
Added the ability to remove and load a container, as a way to reset it.This can be useful in cases where a container breaks in a way that can be fixed by removing it, then reloading it.Also added the ability to add InventoryAction
plugins by placing them in openpype/plugins/inventory
.
🚀 Enhancements
Maya template builder - preserve all references when importing a template #4797
When building a template with Maya template builder, we import the template and also the references inside the template file. This causes some problems:
- We cannot use the references to version assets imported by the template.
- When we import the file, the internal reference files are also imported. As a side effect, Maya complains about a reference that no longer exists.
// Error: file: /xxx/maya/2023.3/linux/scripts/AETemplates/AEtransformRelated.mel line 58: Reference node 'turntable_mayaSceneMain_01_RN' is not associated with a reference file.
Unreal: Renaming the integration plugin to Ayon. #4646
Renamed the .h, and .cpp files to Ayon. Also renamed the classes to with the Ayon keyword.
3dsMax: render dialogue needs to be closed #4729
Make sure the render setup dialog is in a closed state for the update of resolution and other render settings
Maya Template Builder - Remove default cameras from renderable cameras #4815
When we build an asset workfile with build workfile from template inside Maya, we load our turntable camera. But then we end up with 2 renderables camera : persp the one imported from the template.We need to remove the persp camera (or any other default camera) from renderable cameras when building the work file.
Validators for Frame Range in Max #4914
Switch Render Frame Range Type to 3 for specific ranges (initial setup for the range type is 4)Reset Frame Range will also set the frame range for render settingsRender Collector won't take the frame range from context data but take the range directly from render settingAdd validators for render frame range type and frame range respectively with repair action
Fusion: Saver creator settings #4943
Adding Saver creator settings and enhanced rendering path with template.
General: Project Anatomy on creators #4962
Anatomy object of current project is available on CreateContext
and create plugins.
🐛 Bug fixes
Maya: Validate shader name - OP-5903 #4971
Running the plugin would error with:
// TypeError: 'str' object cannot be interpreted as an integer
Fixed and added setting active
.
Houdini: Fix slow Houdini launch due to shelves generation #4829
Shelf generation during Houdini startup would add an insane amount of delay for the Houdini UI to launch correctly. By deferring the shelf generation this takes away the 5+ minutes of delay for the Houdini UI to launch.
Fusion - Fixed "optional validation" #4912
Added OptionalPyblishPluginMixin and is_active checks for all publish tools that should be optional
Bug: add missing `pyblish.util` import #4937
remote publishing was missing import of remote_publish
. This is adding it back.
Unreal: Fix missing 'object_path' property #4938
Epic removed the object_path
property from AssetData
. This PR fixes usages of that property.Fixes #4936
Remove obsolete global validator #4939
Removing Validate Sequence Frames
validator from global plugins as it wasn't handling correctly many things and was by mistake enabled, breaking functionality on Deadline.
General: fix build_workfile get_linked_assets missing project_name arg #4940
Linked assets collection don't work within build_workfile
because get_linked_assets
function call has a missing project_name
argument.
- Added the
project_name
arg to theget_linked_assets
function call.
General: fix Scene Inventory switch version error dialog missing parent arg on init #4941
QuickFix for the switch version error dialog to set inventory widget as parent.
Unreal: Fix camera frame range #4956
Fix the frame range of the level sequence for the Camera in Unreal.
Unreal: Fix missing parameter when updating Alembic StaticMesh #4957
Fix an error when updating an Alembic StaticMesh in Unreal, due to a missing parameter in a function call.
Ftrack: Fix editorial task creation #4966
Fix key assignment on instance data during editorial publishing in ftrack hierarchy integration.
Merged pull requests
Add "shortcut" to Scripts Menu Definition #4927
Add the possibility to associate a shorcut for an entry in the script menu definition with the key "shortcut"
3.15.6
🆕 New features
Substance Painter Integration #4283
This implements a part of #4205 by implementing a Substance Painter integration
Status:
- Implement Host
- start substance with last workfile using
AddLastWorkfileToLaunchArgs
prelaunch hook - Implement Qt tools
- Implement loaders
- Implemented a Set project mesh loader (this is relatively special case because a Project will always have exactly one mesh - a Substance Painter project cannot exist without a mesh).
- Implement project open callback
- On project open it notifies the user if the loaded model is outdated
- Implement publishing logic
- Workfile publishing
- Export Texture Sets
- Support OCIO using #4195 (draft brach is set up - see comment)
- Likely needs more testing on the OCIO front
- Validate all outputs of the Export template are exported/generated
- Allow validation to be optional (issue: there's no API method to detect what maps will be exported without doing an actual export to disk)
- Support extracting/integration if not all outputs are generated
- Support multiple materials/texture sets per instance
- Add validator that can enforce only a single texture set output if studio prefers that.
- Implement Export File Format (extensions) override in Creator
- Add settings so Admin can choose which extensions are available.
Data Exchange: Geometry in 3dsMax #4555
Introduces and updates a creator, extractors and loaders for model family
Introduces new creator, extractors and loaders for model family while adding model families into the existing max scene loader and extractor
- creators
- adding model family into max scene loader and extractor
- fbx loader
- fbx extractor
- usd loader
- usd extractor
- validator for model family
- obj loader(update function)
- fix the update function of the loader as #4675
- Add documentation
AfterEffects: add review flag to each instance #4884
Adds mark_for_review
flag to the Creator to allow artists to disable review if necessary.Exposed this flag in Settings, by default set to True (eg. same behavior as previously).
🚀 Enhancements
Houdini: Fix Validate Output Node (VDB) #4819
- Removes plug-in that was a duplicate of this plug-in.
- Optimize logging of many prims slightly
- Fix error reporting like #4818 did
Houdini: Add null node as output indicator when using TAB search #4834
Houdini: Don't error in collect review if camera is not set correctly #4874
Do not raise an error in collector when invalid path is set as camera path. Allow camera path to not be set correctly in review instance until validation so it's nicely shown in a validation report.
Project packager: Backup and restore can store only database #4879
Pack project functionality have option to zip only project database without project files. Unpack project can skip project copy if the folder is not found.Added helper functions to openpype.client.mongo
that can be also used for tests as replacement of mongo dump.
Houdini: ExtractOpenGL for Review instance not optional #4881
Don't make ExtractOpenGL optional for review instance optional.
Fusion: Simplify creator icons code #4899
Simplify code for setting the icons for the Fusion creators
🐛 Bug fixes
Maya: Validate Attributes #4917
This plugin was broken due to bad fetching of data and wrong repair action.
Fix: Locally copied version of last published workfile is not incremented #4722
Fix 1
When copied, the local workfile version keeps the published version number, when it must be +1 to follow OP's naming convention.
Fix 2
Local workfile version's name is built from anatomy. This avoids to get workfiles with their publish template naming.
Fix 3
In the case a subset has at least two tasks with published workfiles, for example Modeling
and Rigging
, launching Rigging
was getting the first one with the next
and trying to find representations, therefore workfileModeling
and trying to match the current task_name
(Rigging
) with the representation["context"]["task"]["name"]
of a Modeling representation, which was ending up to a workfile_representation
to None
, and exiting the process.
Trying to find the task_name
in the subset['name']
fixes it.
Fix 4
Fetch input dependencies of workfile.
Replacing #4102 for changes to bring this home.
Maya: soft-fail when pan/zoom locked on camera when playblasting #4929
When pan/zoom enabled attribute on camera is locked, playblasting with pan/zoom fails because it is trying to restore it. This is fixing it by skipping over with warning.
Merged pull requests
Maya Load References - Add Display Handle Setting #4904
When we load a reference in Maya using OpenPype loader, display handle is checked by default and prevent us to select easily the object in the viewport. I understand that some productions like to keep this option, so I propose to add display handle to the reference loader settings.
Photoshop: add autocreators for review and flat image #4871
Review and flatten image (produced when no instance of image
family was created) were created somehow magically. This PRintroduces two new auto creators which allow artists to disable review or flatten image.For all image
instances Review
flag was added to provide functionality to create separate review per image
instance. Previously was possible only to have separate instance of review
family.Review is not enabled on image
family by default. (Eg. follows original behavior)Review auto creator is enabled by default as it was before.Flatten image creator must be set in Settings in project_settings/photoshop/create/AutoImageCreator
.
3.15.5
🚀 Enhancements
Maya: Playblast profiles #4777
Support playblast profiles.This enables studios to customize what playblast settings should be on a per task and/or subset basis. For example modeling
should have Wireframe On Shaded
enabled, while all other tasks should have it disabled.
Maya: Support .abc files directly for Arnold standin look assignment #4856
If .abc
file is loaded into arnold standin support look assignment through the cbId
attributes in the alembic file.
Maya: Hide animation instance in creator #4872
- Hide animation instance in creator
- Add inventory action to recreate animation publish instance for loaded rigs
Unreal: Render Creator enhancements #4477
Improvements to the creator for render family
This PR introduces some enhancements to the creator for the render family in Unreal Engine:
- Added the option to create a new, empty sequence for the render.
- Added the option to not include the whole hierarchy for the selected sequence.
- Improvements of the error messages.
Unreal: Added settings for rendering #4575
Added settings for rendering in Unreal Engine.
Two settings has been added:
- Pre roll frames, to set how many frames are used to load the scene before starting the actual rendering.
- Configuration path, to allow to save a preset of settings from Unreal, and use it for rendering.
Global: Optimize anatomy formatting by only formatting used templates instead #4784
Optimization to not format full anatomy when only a single template is used. Instead format only the single template instead.
Patchelf version locked #4853
For Centos dockerfile it is necessary to lock the patchelf version to the older, otherwise the build process fails.
Code: Tweak docstrings and return type hints #4875
Tweak docstrings and return type hints for functions in openpype.client.entities
.
Publisher: Clear comment on successful publish and on window close #4885
Clear comment text field on successful publish and on window close.
Publisher: Make sure to reset asset widget when hidden and reshown #4886
Make sure to reset asset widget when hidden and reshown. Without this the asset list would never refresh in the set asset widget when changing context on an existing instance and thus would not show new assets from after the first time launching that widget.
🐛 Bug fixes
Maya: Fix nested model instances. #4852
Fix nested model instance under review instance, where data collection was not including "Display Lights" and "Focal Length".
Maya: Make default namespace naming backwards compatible #4873
Namespaces of loaded references are now by default back to what they were before #4511
Nuke: Legacy convertor skips deprecation warnings #4846
Nuke legacy convertor was triggering deprecated function which is causing a lot of logs which slows down whole process. Changed the convertor to skip all nodes without AVALON_TAB
to avoid the warnings.
3dsmax: move startup script logic to hook #4849
Startup script for OpenPype was interfering with Open Last Workfile feature. Moving this loggic from simple command line argument in the Settings to pre-launch hook is solving the order of command line arguments and making both features work.
Maya: Don't change time slider ranges in `get_frame_range` #4858
Don't change time slider ranges in get_frame_range
Maya: Looks - calculate hash for tx texture #4878
Texture hash is calculated for textures used in published look and it is used as key in dictionary. In recent changes, this hash is not calculated for TX files, resulting in None
value as key in dictionary, crashing publishing. This PR is adding texture hash for TX files to solve that issue.
Houdini: Collect `currentFile` context data separate from workfile instance #4883
Fix publishing without an active workfile instance due to missing currentFile
data.Now collect currentFile
into context in houdini through context plugin no matter the active instances.
Nuke: fixed broken slate workflow once published on deadline #4887
Slate workflow is now working as expected and Validate Sequence Frames is not raising the once slate frame is included.
Add fps as instance.data in collect review in Houdini. #4888
fix the bug of failing to publish extract review in HoudiniOriginal error:
File "OpenPype\build\exe.win-amd64-3.9\openpype\plugins\publish\extract_review.py", line 516, in prepare_temp_data
"fps": float(instance.data["fps"]),
KeyError: 'fps'
TrayPublisher: Fill missing data for instances with review #4891
Fill required data to instance in traypublisher if instance has review family. The data are required by ExtractReview and it would be complicated to do proper fix at this moment! The collector does for review instances what did #4383
Publisher: Keep track about current context and fix context selection widget #4892
Change selected context to current context on reset. Fix bug when context widget is re-enabled.
Scene inventory: Model refresh fix with cherry picking #4895
Fix cherry pick issue in scene inventory.
Nuke: Pre-render and missing review flag on instance causing crash #4897
If instance created in nuke was missing review
flag, collector crashed.
Merged pull requests
After Effects: fix handles KeyError #4727
Sometimes when publishing with AE (we only saw this error on AE 2023), we got a KeyError for the handles in the "Collect Workfile" step. So I did get the handles from the context if ther's no handles in the asset entity.
3.15.4
🆕 New features
Maya: Cant assign shaders to the ass file - OP-4859 #4460
Support AiStandIn nodes for look assignment.
Using operators we assign shaders and attribute/parameters to nodes within standins. Initially there is only support for a limited mount of attributes but we can add support as needed;
primaryVisibility
castsShadows
receiveShadows
aiSelfShadows
aiOpaque
aiMatte
aiVisibleInDiffuseTransmission
aiVisibleInSpecularTransmission
aiVisibleInVolume
aiVisibleInDiffuseReflection
aiVisibleInSpecularReflection
aiSubdivUvSmoothing
aiDispHeight
aiDispPadding
aiDispZeroValue
aiStepSize
aiVolumePadding
aiSubdivType
aiSubdivIterations
Houdini: Implement review family with opengl node #3839
Implements a first pass for Reviews publishing in Houdini. Resolves #2720
Uses the opengl
ROP node to produce PNG images.
Maya: Camera focal length visible in review - OP-3278 #4531
Camera focal length visible in review.
Support camera focal length in review; static and dynamic.Resolves #3220
Maya: Defining plugins to load on Maya start - OP-4994 #4714
Feature to define plugins to load on Maya launch.
Nuke, DL: Returning Suspended Publishing attribute #4715
Old Nuke Publisher's feature for suspended publishing job on render farm was added back to the current Publisher.
Settings UI: Allow setting a size hint for text fields #4821
Text entity have minimum_lines_count
which allows to change minimum size hint of UI input.
TrayPublisher: Move 'BatchMovieCreator' settings to 'create' subcategory #4827
Moved settings for BatchMoviewCreator
into subcategory create
in settings. Changes are made to match other hosts settings chema and structure.
🚀 Enhancements
Maya looks: support for native Redshift texture format #2971
Add support for native Redshift textures handling. Closes #2599
Uses Redshift's Texture Processor executable to convert textures being used in renders to the Redshift ".rstexbin" format.
Maya: custom namespace for references #4511
Adding an option in Project Settings > Maya > Loader plugins to set custom namespace. If no namespace is set, the default one is used.
___Maya: Set correct framerange with handles on file opening #4664
Set the range of playback from the asset data, counting handles, to get the correct data when calling the "collect_animation_data" function.
Maya: Fix camera update #4751
Fix resetting any modelPanel to a different camera when loading a camera and updating.
Maya: Remove single assembly validation for animation instances #4840
Rig groups may now be parented to others groups when includeParentHierarchy
attribute on the instance is "off".
Maya: Optional control of display lights on playblast. #4145
Optional control of display lights on playblast.
Giving control to what display lights are on the playblasts.
Kitsu: note family requirements #4551
Allowing to add family requirements to IntegrateKitsuNote
task status change.
Adds a Family requirements
setting to Integrate Kitsu Note
, so you can add requirements to determine if kitsu task status should be changed based on which families are published or not. For instance you could have the status change only if another subset than workfile is published (but workfile can still be included) by adding an item set to Not equal
and workfile
.
Deactivate closed Kitsu projects on OP #4619
Deactivate project on OP when the project is closed on Kitsu.
Houdini: Change node type for OpenPypeContext `null` -> `subnet` #4745
Change the node type for OpenPype's hidden context node in Houdini from null
to subnet
. This fixes #4734
General: Extract burnin hosts filters #4749
Removed hosts filter from ExtractBurnin plugin. Instance without representations won't cause crash but just skip the instance. We've discovered because Blender already has review but did not create burnins.
Global: Improve speed of Collect Custom Staging Directory #4768
Improve speed of Collect Custom Staging Directory.
General: Anatomy templates formatting #4773
Added option to format only single template from anatomy instead of formatting all of them all the time. Formatting of all templates is causing slowdowns e.g. during publishing of hundreds of instances.
Harmony: Handle zip files with deeper structure #4782
External Harmony zip files might contain one additional level with scene name.
Unreal: Use common logic to configure executable #4788
Unreal Editor location and version was autodetected. This easied configuration in some cases but was not flexible enought. This PR is changing the way Unreal Editor location is set, unifying it with the logic other hosts are using.
Github: Grammar tweaks + uppercase issue title #4813
Tweak some of the grammar in the issue form templates.
Houdini: Allow creation of publish instances via Houdini TAB menu #4831
Register the available Creator's as houdini tools so an artist can add publish instances via the Houdini TAB node search menu from within the network editor.
🐛 Bug fixes
Maya: Fix Collect Render for V-Ray, Redshift and Renderman for missing colorspace #4650
Fix Collect Render not working for Redshift, V-Ray and Renderman due to missing colorspace
argument to RenderProduct
dataclass.
Maya: Xgen fixes #4707
Fix for Xgen extraction of world parented nodes and validation for required namespace.
Maya: Fix extract review and thumbnail for Maya 2020 #4744
Fix playblasting in Maya 2020 with override viewport options enabled. Fixes #4730.
Maya: local variable 'arnold_standins' referenced before assignment - OP-5542 #4778
MayaLookAssigner erroring when MTOA is not loaded:
# Traceback (most recent call last):
# File "\openpype\hosts\maya\tools\mayalookassigner\app.py", line 272, in on_process_selected
# nodes = list(set(item["nodes"]).difference(arnold_standins))
# UnboundLocalError: local variable 'arnold_standins' referenced before assignment
3.15.3
🆕 New features
Blender: Extract Review #3616
Added Review to Blender.
This implementation is based on #3508 but made compatible for the current implementation of OpenPype for Blender.
Data Exchanges: Point Cloud for 3dsMax #4532
Publish PRT format with tyFlow in 3dsmax
Publish PRT format with tyFlow in 3dsmax and possibly set up loader to load the format too.
- creator
- extractor
- validator
- loader
Global: persistent staging directory for renders #4583
Allows configure if staging directory (stagingDir
) should be persistent with use of profiles.
With this feature, users can specify a transient data folder path based on presets, which can be used during the creation and publishing stages. In some cases, these DCCs automatically add a rendering path during the creation stage, which is then used in publishing.One of the key advantages of this feature is that it allows users to take advantage of faster storages for rendering, which can help improve workflow efficiency. Additionally, this feature allows users to keep their rendered data persistent, and use their own infrastructure for regular cleaning.However, it should be noted that some productions may want to use this feature without persistency. Furthermore, there may be a need for retargeting the rendering folder to faster storages, which is also not supported at the moment.It is studio responsibility to clean up obsolete folders with data.Location of the folder is configured in project_anatomy/templates/others
. ('transient' key is expected, with 'folder' key, could be more templates)Which family/task type/subset is applicable is configured in:project_settings/global/tools/publish/transient_dir_profiles
Kitsu custom comment template #4599
Kitsu allows to write markdown in its comment field. This can be something very powerful to deliver dynamic comments with the help the data from the instance.This feature is defaults to off so the admin have to manually set up the comment field the way they want.I have added a basic example on how the comment can look like as the comment-fields default value.To this I want to add some documentation also but that's on its way when the code itself looks good for the reviewers.
🚀 Enhancements
Maya: Multiple values on single render attribute - OP-4131 #4631
When validating render attributes, this adds support for multiple values. When repairing first value in list is used.
Maya: enable 2D Pan/Zoom for playblasts - OP-5213 #4687
Setting for enabling 2D Pan/Zoom on reviews.
Copy existing or generate new Fusion profile on prelaunch #4572
Fusion preferences will be copied to the predefined ~/.openpype/hosts/fusion/prefs
folder (or any other folder set in system settings) on launch.
The idea is to create a copy of existing Fusion profile, adding an OpenPype menu to the Fusion instance.By default the copy setting is turned off, so no file copying is performed. Instead the clean Fusion profile is created by Fusion in the predefined folder. The default locaion is set to ~/.openpype/hosts/fusion/prefs
, to better comply with the other os platforms. After creating the default profile, some modifications are applied:
- forced Python3
- forced English interface
- setup Openpype specific path maps.If the
copy_prefs
checkbox is toggled, a copy of existing Fusion profile folder will be placed in the mentioned location. Then they are altered the same way as described above. The operation is run only once, on the first launch, unless theforce_sync [Resync profile on each launch]
is toggled.English interface is forced because theFUSION16_PROFILE_DIR
environment variable is not read otherwise (seems to be a Fusion bug).
Houdini: Create button open new publisher's "create" tab #4601
During a talk with @maxpareschi he mentioned that the new publisher in Houdini felt super confusing due to "Create" going to the older creator but now being completely empty and the publish button directly went to the publish tab.This resolves that by fixing the Create button to now open the new publisher but on the Create tab.Also made publish button enforce going to the "publish" tab for consistency in usage.@antirotor I think changing the Create button's callback was just missed in this commit or was there a specific reason to not change that around yet?
Clockify: refresh and fix the integration #4607
Due to recent API changes, Clockify requires user_id
to operate with the timers. I updated this part and currently it is a WIP for making it fully functional. Most functions, such as start and stop timer, and projects sync are currently working. For the rate limiting task new dependency is added: https://pypi.org/project/ratelimiter/
Fusion publish existing frames #4611
This PR adds the function to publish existing frames instead of having to re-render all of them for each new publish.I have split the render_locally plugin so the review-part is its own plugin now.I also change the saver-creator-plugin's label from Saver to Render (saver) as I intend to add a Prerender creator like in Nuke.
Resolution settings referenced from DB record for 3dsMax #4652
- Add Callback for setting the resolution according to DB after the new scene is created.
- Add a new Action into openpype menu which allows the user to reset the resolution in 3dsMax
3dsmax: render instance settings in Publish tab #4658
Allows user preset the pools, group and use_published settings in Render Creator in the Max Hosts.User can set the settings before or after creating instance in the new publisher
scene length setting referenced from DB record for 3dsMax #4665
Setting the timeline length based on DB record in 3dsMax Hosts
Publisher: Windows reduce command window pop-ups during Publishing #4672
Reduce the command line pop-ups that show on Windows during publishing.
Publisher: Explicit save #4676
Publisher have explicit button to save changes, so reset can happen without saving any changes. Save still happens automatically when publishing is started or on publisher window close. But a popup is shown if context of host has changed. Important context was enhanced by workfile path (if host integration supports it) so workfile changes are captured too. In that case a dialog with confirmation is shown to user. All callbacks that may require save of context were moved to main window to be able handle dialog show at one place. Save changes now returns success so the rest of logic is skipped -> publishing won't start, when save of instances fails.Save and reset buttons have shortcuts (Ctrl + s and Ctrls + r).
CelAction: conditional workfile parameters from settings #4677
Since some productions were requesting excluding some workfile parameters from publishing submission, we needed to move them to settings so those could be altered per project.
Improve logging of used app + tool envs on application launch #4682
Improve logging of what apps + tool environments got loaded for an application launch.
Fix name and docstring for Create Workdir Extra Folders prelaunch hook #4683
Fix class name and docstring for Create Workdir Extra Folders prelaunch hookThe class name and docstring were originally copied from another plug-in and didn't match the plug-in logic.This also fixes potentially seeing this twice in your logs. Before:After:Where it was actually running both this prelaunch hook and the actual AddLastWorkfileToLaunchArgs
plugin.
Application launch context: Include app group name in logger
3.15.2
🆕 New features
maya gltf texture convertor and validator #4261
Continuity of the gltf extractor implementation
Continuity of the gltf extractor https://github.com/pypeclub/OpenPype/pull/4192UPDATE:**Validator for GLSL Shader**: Validate whether the mesh uses GLSL Shader. If not it will error out. The user can choose to perform the repair action and it will help to assign glsl shader. If the mesh with Stringray PBS, the repair action will also check to see if there is any linked texture such as Color, Occulsion, and Normal Map. If yes, it will help to relink the related textures to the glsl shader.*****If the mesh uses the PBS Shader,
Unreal: New Publisher #4370
Implementation of the new publisher for Unreal.
The implementation of the new publisher for Unreal. This PR includes the changes for all the existing creators to be compatible with the new publisher.The basic creator has been split in two distinct creators:
UnrealAssetCreator
, works with assets in the Content Browser.UnrealActorCreator
that works with actors in the scene.
Implementation of a new splash screen #4592
Implemented a new splash screen widget to reflect a process running in the background. This widget can be used for other tasks than UE. Also fixed the compilation error of the AssetContainer.cpp when trying to build the plugin in UE 5.0
Deadline for 3dsMax #4439
Setting up deadline for 3dsmax
Setting up deadline for 3dsmax by setting render outputs and viewport camera
Nuke: adding nukeassist #4494
Adding support for NukeAssist
For support of NukeAssist we had to limit some Nuke features since NukeAssist itself Nuke with limitations. We do not support Creator and Publisher. User can only Load versions with version control. User can also set Framerange and Colorspace.
🚀 Enhancements
Default Ftrack Family on RenderLayer #4458
With default settings, renderlayers in Maya were not being tagged with the Ftrack family leading to confusion when doing reviews.
___Maya: Maya Playblast Options - OP-3783 #4487
Replacement PR for #3912. Adds more options for playblasts to preferences/settings.
Adds the following as options in generating playblasts, matching viewport settings.
- Use default material
- Wireframe on shaded
- X-ray
- X-ray Joints
- X-ray active component
Maya: Passing custom attributes to alembic - OP-4111 #4516
Passing custom attributes to alembic
This PR makes it possible to pass all user defined attributes along to the alembic representation.
Maya: Options for VrayProxy output - OP-2010 #4525
Options for output of VrayProxy.
Client requested more granular control of output from VrayProxy instance. Exposed options on the instance and settings for vrmesh and alembic.
Maya: Validate missing instance attributes #4559
Validate missing instance attributes.
New attributes can be introduced as new features come in. Old instances will need to be updated with these attributes for the documentation to make sense, and users do not have to recreate the instances.
Refactored Generation of UE Projects, installation of plugins moved to the engine #4369
Improved the way how OpenPype works with generation of UE projects. Also the installation of the plugin has been altered to install into the engine
OpenPype now uses the appropriate tools to generate UE projects. Unreal Build Tool (UBT) and a "Commandlet Project" is needed to properly generate a BP project, or C++ code in case that dev_mode = True
, folders, the .uproject file and many other resources.On the plugin's side, it is built seperately with the UnrealAutomationTool (UAT) and then it's contents are moved under the Engine/Plugins/Marketplace/OpenPype
directory.
Unreal: Use client functions in Layout loader #4578
Use 'get_representations' instead of 'legacy_io' query in layout loader.
This is removing usage of find_one
called on legacy_io
and use rather client functions as preparation for AYON connection. Also all representations are queried at once instead of one by one.
General: Support for extensions filtering in loaders #4492
Added extensions filtering support to loader plugins.
To avoid possible backwards compatibility break is filtering exactly the same and filtering by extensions is enabled only if class attribute 'extensions' is set.
Nuke: multiple reformat in baking review profiles #4514
Added support for multiple reformat nodes in baking profiles.
Old settings for single reformat node is supported and prioritised just in case studios are using it and backward compatibility is needed. Warnings in Nuke terminal are notifying users to switch settings to new workflow. Settings are also explaining the migration way.
Nuke: Add option to use new creating system in workfile template builder #4545
Nuke workfile template builder can use new creators instead of legacy creators.
Modified workfile template builder to have option to say if legacy creators should be used or new creators. Legacy creators are disabled by default, so Maya has changed the value.
Global, Nuke: Workfile first version with template processing #4579
Supporting new template workfile builder with toggle for creation of first version of workfile in case there is none yet.
___Fusion: New Publisher #4523
This is an updated PR for @BigRoy 's old PR (#3892 have merged it with code from OP 3.15.1-nightly.6 and made sure it works as expected.This converts the old publishing system to the new one. It implements Fusion as a new host addon.
- Create button removed in OpenPype menu in favor of the new Publisher - Draft refactor validations to raise PublishValidationError - Implement Creator for New Publisher - Implement Fusion as Host addonTVPaint: Use Publisher tool #4471
Use Publisher tool and new creation system in TVPaint integration.
Using new creation system makes TVPaint integration a little bit easier to maintain for artists. Removed unneeded tools Creator and Subset Manager tools. Goal is to keep the integration work as close as possible to previous integration. Some changes were made but primarilly because they were not right using previous system.All creators create instance with final family instead of changing the family during extraction. Render passes are not related to group id but to render layer instance. Render layer is still related to group. Workfile, review and scene render instances are created using autocreators instead of auto-collection during publishing. Subset names are fully filled during publishing but instance labels are filled on refresh with the last known right value. Implemented basic of legacy convertor which should convert render layers and render passes.
TVPaint: Auto-detect render creation #4496
Create plugin which will create Render Layer and Render Pass instances based on information in the scene.
Added new creator that must be triggered by artist. The create plugin will first create Render Layer instances if were not created yet. For variant is used color group name. The creator has option to rename color groups by template defined in settings -> Template may use index of group by it's usage in scene (from botto...
3.15.1
3.15.1
🆕 New features
Maya: Xgen (3d / maya ) - #4256
Brief description
Initial Xgen implementation.
Description
Client request of Xgen pipeline.
Data exchange cameras for 3d Studio Max (3d / 3dsmax ) - #4376
Brief description
Add Camera Family into the 3d Studio Max
Description
Adding Camera Extractors(extract abc camera and extract fbx camera) and validators(for camera contents) into 3dMaxAlso add the extractor for exporting 3d max raw scene (which is also related to 3dMax Scene Family) for camera family
🚀 Enhancements
Adding path validator for non-maya nodes (3d / maya ) - #4271
Brief description
Adding a path validator for filepaths from non-maya nodes, which are created by plugins such as Renderman, Yeti and abcImport.
Description
As File Path Editor cannot catch the wrong filenpaths from non-maya nodes such as AlembicNodes, It is neccessary to have a new validator to ensure the existence of the filepaths from the nodes.
Deadline: Allow disabling strict error check in Maya submissions (3d / maya / deadline ) - #4420
Brief description
DL by default has Strict error checking, but some errors are not fatal.
Description
This allows to set profile based on Task and Subset values to temporarily disable Strict Error Checks.Subset and task names should support regular expressions. (not wildcard notation though).
Houdini: New publisher code tweak (3d / houdini ) - #4374
Brief description
This is cosmetics only - the previous code to me felt quite unreadable due to the lengthy strings being used.
Description
Code should do roughly the same, but just be reformatted.
3dsmax: enhance alembic loader update function (3d / 3dsmax ) - #4387
Enhancement
This PR is adding update/switch ability to pointcache/alembic loader in 3dsmax and fixing wrong tool shown when clicking on "Manage" item on OpenPype menu, that is now correctly Scene Inventory (but was Subset Manager).
Alembic update has still one caveat - it doesn't cope with changed number of object inside alembic, since loading alembic in max involves creating all those objects as first class nodes. So it will keep the objects in scene, just update path to alembic file on them.
Global: supporting `OPENPYPE_TMPDIR` in staging dir maker (editorial / hiero ) - #4398
Brief description
Productions can use OPENPYPE_TMPDIR for staging temp publishing directory
Description
Studios were demanding to be able to configure their own shared storages as temporary staging directories. Template formatting is also supported with optional keys formatting and following anatomy keys: - root[work | ] - project[name | code]
General: Functions for current context (other ) - #4324
Brief description
Defined more functions to receive current context information and added the methods to host integration so host can affect the result.
Description
This is one of steps to reduce usage of legacy_io.Session
. This change define how to receive current context information -> call functions instead of accessing legacy_io.Session
or os.environ
directly. Plus, direct access on session or environments is unfortunatelly not enough for some DCCs where multiple workfiles can be opened at one time which can heavily affect the context but host integration sometimes can't affect that at all.HostBase
already had implemented get_current_context
, that was enhanced by adding more specific methods get_current_project_name
, get_current_asset_name
and get_current_task_name
. The same functions were added to ~/openpype/pipeline/cotext_tools.py
. The functions in context tools are calling host integration methods (if are available) otherwise are using environent variables as default implementation does. Also was added get_current_host_name
to receive host name from registered host if is available or from environment variable.
Houdini: Do not visualize the hidden OpenPypeContext node (other / houdini ) - #4382
Brief description
Using the new publisher UI would generate a visible 'null' locator at the origin. It's confusing to the user since it's supposed to be 'hidden'.
Description
Before this PR the user would see a locator/null at the origin which was the 'hidden' /obj/OpenPypeContext
node. This null would suddenly appear if the user would've ever opened the Publisher UI once.After this PR it will not show:Nice and tidy.
Maya + Blender: Pyblish plugins removed unused `version` and `category` attributes (other ) - #4402
Brief description
Once upon a time in a land far far away there lived a few plug-ins who felt like they didn't belong in generic boxes and felt they needed to be versioned well above others. They tried, but with no success.
Description
Even though they now lived in a universe with elaborate version
and category
attributes embedded into their tiny little plug-in DNA this particular deviation has been greatly unused. There is nothing special about the version, nothing special about the category.It does nothing.
General: Fix original basename frame issues (other ) - #4452
Brief description
Treat {originalBasename}
in different way then standard files processing. In case template should use {originalBasename}
the transfers will use them as they are without any changes or handling of frames.
Description
Frames handling is problematic with original basename because their padding can't be defined to match padding in source filenames. Also it limits the usage of functionality to "must have frame at end of fiename". This is proposal how that could be solved by simply ignoring frame handling and using filenames as are on representation. First frame is still stored to representation context but is not used in formatting part. This way we don't have to care about padding of frames at all.
Publisher: Report also crashed creators and convertors (other ) - #4473
Brief description
Added crashes of creators and convertos discovery (lazy solution).
Description
Report in Publisher also contains information about crashed files caused during creator plugin discovery and convertor plugin discovery. They're not separated into categroies and there is no other information in the report about them, but this helps a lot during development. This change does not need to change format/schema of the report nor UI logic.
🐛 Bug fixes
Maya: Fix Validate Attributes plugin (3d / maya ) - #4401
Brief description
Code was broken. So either plug-in was unused or it had gone unnoticed.
Description
Looking at the commit history of the plug-in itself it seems this might have been broken somewhere between two to three years. I think it's broken since two years since this commit.Should this plug-in be removed completely?@tokejepsen Is there still a use case where we should have this plug-in? (You created the original one)
Maya: Ignore workfile lock in Untitled scene (3d
3.15.0
3.15.0
Deprecated:
- General: Fill default values of new publish template profiles #4245
📖 Documentation
- documentation: Split tools into separate entries #4342
- Documentation: Fix harmony docs #4301
- Remove staging logic set by OpenPype version #3979
🆕 New features
- General: Push to studio library #4284
- Colorspace Management and Distribution #4195
- Nuke: refactor to latest publisher workfow #4006
- Update to Python 3.9 #3546
🚀 Enhancements
- Unreal: Don't use mongo queries in 'ExistingLayoutLoader' #4356
- General: Loader and Creator plugins can be disabled #4310
- General: Unbind poetry version #4306
- General: Enhanced enum def items #4295
- Git: add pre-commit hooks #4289
- Tray Publisher: Improve Online family functionality #4263
- General: Update MacOs to PySide6 #4255
- Build: update to Gazu in toml #4208
- Global: adding imageio to settings #4158
- Blender: added project settings for validator no colons in name #4149
- Dockerfile for Debian Bullseye #4108
- AfterEffects: publish multiple compositions #4092
- AfterEffects: make new publisher default #4056
- Photoshop: make new publisher default #4051
- Feature/multiverse #4046
- Tests: add support for deadline for automatic tests #3989
- Add version to shortcut name #3906
- TrayPublisher: Removed from experimental tools #3667
🐛 Bug fixes
- Houdini: Fix loader not working in Houdini #4372
- change 3.7 to 3.9 in folder name #4354
- PushToProject: Fix hierarchy of project change #4350
- Fix photoshop workfile save-as #4347
- Nuke Input process node sourcing improvements #4341
- New publisher: Some validation plugin tweaks #4339
- Harmony: fix unable to change workfile on Mac #4334
- Global: fixing in-place source publishing for editorial #4333
- General: Use class constants of QMessageBox #4332
- TVPaint: Fix plugin for TVPaint 11.7 #4328
- Exctract OTIO review has improved quality #4325
- Ftrack: fix typos causing bugs in sync #4322
- General: Python 2 compatibility of instance collector #4320
- Slack: user groups speedup #4318
- Maya: Bug - Multiverse extractor executed on plain animation family #4315
- Fix run_documentation.ps1 #4312
- Nuke: new creators fixes #4308
- General: missing comment on standalone and tray publisher #4303
- AfterEffects: Fix for audio from mp4 layer #4296
- General: Update gazu in poetry lock #4247
- Bug: Fixing version detection and filtering in Igniter #3914
- Bug: Create missing version dir #3903
🔀 Refactored code
Merged pull requests: