mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
Merge branch 'develop' into bugfix/OP-6359_Maya-camera-state-beforeafter-publish
This commit is contained in:
commit
18c1d4a2b4
12 changed files with 171 additions and 20 deletions
4
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
4
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
|
|
@ -35,6 +35,8 @@ body:
|
|||
label: Version
|
||||
description: What version are you running? Look to OpenPype Tray
|
||||
options:
|
||||
- 3.18.5-nightly.1
|
||||
- 3.18.4
|
||||
- 3.18.4-nightly.1
|
||||
- 3.18.3
|
||||
- 3.18.3-nightly.2
|
||||
|
|
@ -133,8 +135,6 @@ body:
|
|||
- 3.15.7
|
||||
- 3.15.7-nightly.3
|
||||
- 3.15.7-nightly.2
|
||||
- 3.15.7-nightly.1
|
||||
- 3.15.6
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
|
|
|
|||
145
CHANGELOG.md
145
CHANGELOG.md
|
|
@ -1,6 +1,151 @@
|
|||
# Changelog
|
||||
|
||||
|
||||
## [3.18.4](https://github.com/ynput/OpenPype/tree/3.18.4)
|
||||
|
||||
|
||||
[Full Changelog](https://github.com/ynput/OpenPype/compare/3.18.3...3.18.4)
|
||||
|
||||
### **🚀 Enhancements**
|
||||
|
||||
|
||||
<details>
|
||||
<summary>multiple render camera supports for 3dsmax <a href="https://github.com/ynput/OpenPype/pull/5124">#5124</a></summary>
|
||||
|
||||
Supports for rendering with multiple cameras in 3dsmax
|
||||
- [x] Add Batch Render Layers functions
|
||||
- [x] Rewrite lib.rendersetting and lib.renderproduct
|
||||
- [x] Add multi-camera options in creator.
|
||||
- [x] Collector with batch render-layer when multi-camera enabled.
|
||||
- [x] Add instance plugin for saving scene files with different cameras respectively by using subprocess
|
||||
- [x] Refactor submit_max_deadline
|
||||
- [x] Check with metadata.json in submit publish job
|
||||
|
||||
|
||||
___
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
<details>
|
||||
<summary>Fusion: new creator for image product type <a href="https://github.com/ynput/OpenPype/pull/6057">#6057</a></summary>
|
||||
|
||||
In many DCC `render` product type is expected to be sequence of files. This PR adds new explicit creator for `image` product type which is focused on single frame image. Workflows for both product types might be a bit different, this gives artists more granularity to choose better workflow.
|
||||
|
||||
|
||||
___
|
||||
|
||||
</details>
|
||||
|
||||
### **🐛 Bug fixes**
|
||||
|
||||
|
||||
<details>
|
||||
<summary>Maya: Account and ignore free image planes. <a href="https://github.com/ynput/OpenPype/pull/5993">#5993</a></summary>
|
||||
|
||||
Free image planes do not have the `->` path separator, so we need to account for that.
|
||||
|
||||
|
||||
___
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
<details>
|
||||
<summary>Blender: Fix long names for instances <a href="https://github.com/ynput/OpenPype/pull/6070">#6070</a></summary>
|
||||
|
||||
Changed naming for instances to use only final part of the `folderPath`.
|
||||
|
||||
|
||||
___
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
<details>
|
||||
<summary>Traypublisher & Chore: Instance version on follow workfile version <a href="https://github.com/ynput/OpenPype/pull/6117">#6117</a></summary>
|
||||
|
||||
If `follow_workfile_version` is enabled but context does not have filled workfile version, a version on instance is used instead.
|
||||
|
||||
|
||||
___
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
<details>
|
||||
<summary>Substance Painter: Thumbnail errors with PBR Texture Set <a href="https://github.com/ynput/OpenPype/pull/6127">#6127</a></summary>
|
||||
|
||||
When publishing with PBR Metallic Roughness as Output Template, Emissive Map errors out because of the missing channel in the material and the map can't be generated in Substance Painter. This PR is to make sure `imagestance.data["publish"] = False` so that the related "empty" texture instance would be skipped to generate the output.
|
||||
|
||||
|
||||
___
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
<details>
|
||||
<summary>Transcoding: Fix reading image sequences through oiiotool <a href="https://github.com/ynput/OpenPype/pull/6129">#6129</a></summary>
|
||||
|
||||
When transcoding image sequences, the second image onwards includes the invalid xml line of `Reading path/to/file.exr` of the oiiotool output.This is most likely not the best solution, but it fixes the issue and illustrates the problem.Error:
|
||||
```
|
||||
ERROR:pyblish.plugin:Traceback (most recent call last):
|
||||
File "C:\Users\tokejepsen\AppData\Local\Ynput\AYON\dependency_packages\ayon_2310271602_windows.zip\dependencies\pyblish\plugin.py", line 527, in __explicit_process
|
||||
runner(*args)
|
||||
File "C:\Users\tokejepsen\OpenPype\openpype\plugins\publish\extract_color_transcode.py", line 152, in process
|
||||
File "C:\Users\tokejepsen\OpenPype\openpype\lib\transcoding.py", line 1136, in convert_colorspace
|
||||
input_info = get_oiio_info_for_input(input_path, logger=logger)
|
||||
File "C:\Users\tokejepsen\OpenPype\openpype\lib\transcoding.py", line 124, in get_oiio_info_for_input
|
||||
output.append(parse_oiio_xml_output(xml_text, logger=logger))
|
||||
File "C:\Users\tokejepsen\OpenPype\openpype\lib\transcoding.py", line 276, in parse_oiio_xml_output
|
||||
tree = xml.etree.ElementTree.fromstring(xml_string)
|
||||
File "xml\etree\ElementTree.py", line 1347, in XML
|
||||
xml.etree.ElementTree.ParseError: syntax error: line 1, column 0
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\tokejepsen\AppData\Local\Ynput\AYON\dependency_packages\ayon_2310271602_windows.zip\dependencies\pyblish\plugin.py", line 527, in __explicit_process
|
||||
runner(*args)
|
||||
File "<string>", line 152, in process
|
||||
File "C:\Users\tokejepsen\OpenPype\openpype\lib\transcoding.py", line 1136, in convert_colorspace
|
||||
input_info = get_oiio_info_for_input(input_path, logger=logger)
|
||||
File "C:\Users\tokejepsen\OpenPype\openpype\lib\transcoding.py", line 124, in get_oiio_info_for_input
|
||||
output.append(parse_oiio_xml_output(xml_text, logger=logger))
|
||||
File "C:\Users\tokejepsen\OpenPype\openpype\lib\transcoding.py", line 276, in parse_oiio_xml_output
|
||||
tree = xml.etree.ElementTree.fromstring(xml_string)
|
||||
File "xml\etree\ElementTree.py", line 1347, in XML
|
||||
xml.etree.ElementTree.ParseError: syntax error: line 1, column 0
|
||||
```
|
||||
|
||||
|
||||
|
||||
___
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
<details>
|
||||
<summary>AYON: Remove 'IntegrateHeroVersion' conversion <a href="https://github.com/ynput/OpenPype/pull/6130">#6130</a></summary>
|
||||
|
||||
Remove settings conversion for `IntegrateHeroVersion`.
|
||||
|
||||
|
||||
___
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
<details>
|
||||
<summary>Chore tools: Make sure style object is not garbage collected <a href="https://github.com/ynput/OpenPype/pull/6136">#6136</a></summary>
|
||||
|
||||
Minor fix in tool utils to make sure style C++ object is not garbage collected when not stored into variable.
|
||||
|
||||
|
||||
___
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
|
||||
|
||||
## [3.18.3](https://github.com/ynput/OpenPype/tree/3.18.3)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -265,13 +265,16 @@ def transfer_image_planes(source_cameras, target_cameras,
|
|||
try:
|
||||
for source_camera, target_camera in zip(source_cameras,
|
||||
target_cameras):
|
||||
image_planes = cmds.listConnections(source_camera,
|
||||
image_plane_plug = "{}.imagePlane".format(source_camera)
|
||||
image_planes = cmds.listConnections(image_plane_plug,
|
||||
source=True,
|
||||
destination=False,
|
||||
type="imagePlane") or []
|
||||
|
||||
# Split of the parent path they are attached - we want
|
||||
# the image plane node name.
|
||||
# the image plane node name if attached to a camera.
|
||||
# TODO: Does this still mean the image plane name is unique?
|
||||
image_planes = [x.split("->", 1)[1] for x in image_planes]
|
||||
image_planes = [x.split("->", 1)[-1] for x in image_planes]
|
||||
|
||||
if not image_planes:
|
||||
continue
|
||||
|
|
@ -282,7 +285,7 @@ def transfer_image_planes(source_cameras, target_cameras,
|
|||
if source_camera == target_camera:
|
||||
continue
|
||||
_attach_image_plane(target_camera, image_plane)
|
||||
else: # explicitly dettaching image planes
|
||||
else: # explicitly detach image planes
|
||||
cmds.imagePlane(image_plane, edit=True, detach=True)
|
||||
originals[source_camera].append(image_plane)
|
||||
yield
|
||||
|
|
|
|||
|
|
@ -110,8 +110,9 @@ def get_oiio_info_for_input(filepath, logger=None, subimages=False):
|
|||
if line == "</ImageSpec>":
|
||||
subimages_lines.append(lines)
|
||||
lines = []
|
||||
xml_started = False
|
||||
|
||||
if not xml_started:
|
||||
if not subimages_lines:
|
||||
raise ValueError(
|
||||
"Failed to read input file \"{}\".\nOutput:\n{}".format(
|
||||
filepath, output
|
||||
|
|
|
|||
|
|
@ -542,7 +542,8 @@ def _load_modules():
|
|||
module_dirs.insert(0, current_dir)
|
||||
|
||||
addons_dir = os.path.join(os.path.dirname(current_dir), "addons")
|
||||
module_dirs.append(addons_dir)
|
||||
if os.path.exists(addons_dir):
|
||||
module_dirs.append(addons_dir)
|
||||
|
||||
ignored_host_names = set(IGNORED_HOSTS_IN_AYON)
|
||||
ignored_current_dir_filenames = set(IGNORED_DEFAULT_FILENAMES)
|
||||
|
|
|
|||
|
|
@ -200,9 +200,15 @@ class CollectAnatomyInstanceData(pyblish.api.ContextPlugin):
|
|||
self._fill_task_data(instance, project_task_types, anatomy_data)
|
||||
|
||||
# Define version
|
||||
version_number = None
|
||||
if self.follow_workfile_version:
|
||||
version_number = context.data("version")
|
||||
else:
|
||||
|
||||
# Even if 'follow_workfile_version' is enabled, it may not be set
|
||||
# because workfile version was not collected to 'context.data'
|
||||
# - that can happen e.g. in 'traypublisher' or other hosts without
|
||||
# a workfile
|
||||
if version_number is None:
|
||||
version_number = instance.data.get("version")
|
||||
|
||||
# use latest version (+1) if already any exist
|
||||
|
|
|
|||
|
|
@ -1291,12 +1291,6 @@ def _convert_global_project_settings(ayon_settings, output, default_settings):
|
|||
for extract_burnin_def in extract_burnin_defs
|
||||
}
|
||||
|
||||
ayon_integrate_hero = ayon_publish["IntegrateHeroVersion"]
|
||||
for profile in ayon_integrate_hero["template_name_profiles"]:
|
||||
if "product_types" not in profile:
|
||||
break
|
||||
profile["families"] = profile.pop("product_types")
|
||||
|
||||
if "IntegrateProductGroup" in ayon_publish:
|
||||
subset_group = ayon_publish.pop("IntegrateProductGroup")
|
||||
subset_group_profiles = subset_group.pop("product_grouping_profiles")
|
||||
|
|
|
|||
|
|
@ -91,7 +91,8 @@ def set_style_property(widget, property_name, property_value):
|
|||
if cur_value == property_value:
|
||||
return
|
||||
widget.setProperty(property_name, property_value)
|
||||
widget.style().polish(widget)
|
||||
style = widget.style()
|
||||
style.polish(widget)
|
||||
|
||||
|
||||
def paint_image_with_color(image, color):
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Package declaring Pype version."""
|
||||
__version__ = "3.18.4-nightly.1"
|
||||
__version__ = "3.18.5-nightly.1"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[tool.poetry]
|
||||
name = "OpenPype"
|
||||
version = "3.18.3" # OpenPype
|
||||
version = "3.18.4" # OpenPype
|
||||
description = "Open VFX and Animation pipeline with support."
|
||||
authors = ["OpenPype Team <info@openpype.io>"]
|
||||
license = "MIT License"
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ class MayaSubmitDeadlineModel(BaseSettingsModel):
|
|||
title="Disable Strict Error Check profiles"
|
||||
)
|
||||
|
||||
@validator("limit", "scene_patches")
|
||||
@validator("scene_patches")
|
||||
def validate_unique_names(cls, value):
|
||||
ensure_unique_names(value)
|
||||
return value
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
__version__ = "0.1.6"
|
||||
__version__ = "0.1.7"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue