mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-27 06:12:19 +01:00
Merge pull request #5338 from ynput/enhancement/OP-4483_blender-configurable_startup_resolution_and_frames
This commit is contained in:
commit
e9cd50b1cf
4 changed files with 85 additions and 20 deletions
|
|
@ -20,6 +20,7 @@ from openpype.pipeline import get_current_asset_name, get_current_task_name
|
|||
from openpype.tools.utils import host_tools
|
||||
|
||||
from .workio import OpenFileCacher
|
||||
from . import pipeline
|
||||
|
||||
PREVIEW_COLLECTIONS: Dict = dict()
|
||||
|
||||
|
|
@ -344,6 +345,26 @@ class LaunchWorkFiles(LaunchQtApp):
|
|||
self._window.refresh()
|
||||
|
||||
|
||||
class SetFrameRange(bpy.types.Operator):
|
||||
bl_idname = "wm.ayon_set_frame_range"
|
||||
bl_label = "Set Frame Range"
|
||||
|
||||
def execute(self, context):
|
||||
data = pipeline.get_asset_data()
|
||||
pipeline.set_frame_range(data)
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
class SetResolution(bpy.types.Operator):
|
||||
bl_idname = "wm.ayon_set_resolution"
|
||||
bl_label = "Set Resolution"
|
||||
|
||||
def execute(self, context):
|
||||
data = pipeline.get_asset_data()
|
||||
pipeline.set_resolution(data)
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
class TOPBAR_MT_avalon(bpy.types.Menu):
|
||||
"""Avalon menu."""
|
||||
|
||||
|
|
@ -381,9 +402,11 @@ class TOPBAR_MT_avalon(bpy.types.Menu):
|
|||
layout.operator(LaunchManager.bl_idname, text="Manage...")
|
||||
layout.operator(LaunchLibrary.bl_idname, text="Library...")
|
||||
layout.separator()
|
||||
layout.operator(SetFrameRange.bl_idname, text="Set Frame Range")
|
||||
layout.operator(SetResolution.bl_idname, text="Set Resolution")
|
||||
layout.separator()
|
||||
layout.operator(LaunchWorkFiles.bl_idname, text="Work Files...")
|
||||
# TODO (jasper): maybe add 'Reload Pipeline', 'Set Frame Range' and
|
||||
# 'Set Resolution'?
|
||||
# TODO (jasper): maybe add 'Reload Pipeline'
|
||||
|
||||
|
||||
def draw_avalon_menu(self, context):
|
||||
|
|
@ -399,6 +422,8 @@ classes = [
|
|||
LaunchManager,
|
||||
LaunchLibrary,
|
||||
LaunchWorkFiles,
|
||||
SetFrameRange,
|
||||
SetResolution,
|
||||
TOPBAR_MT_avalon,
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -113,22 +113,21 @@ def message_window(title, message):
|
|||
_process_app_events()
|
||||
|
||||
|
||||
def set_start_end_frames():
|
||||
def get_asset_data():
|
||||
project_name = get_current_project_name()
|
||||
asset_name = get_current_asset_name()
|
||||
asset_doc = get_asset_by_name(project_name, asset_name)
|
||||
|
||||
return asset_doc.get("data")
|
||||
|
||||
|
||||
def set_frame_range(data):
|
||||
scene = bpy.context.scene
|
||||
|
||||
# Default scene settings
|
||||
frameStart = scene.frame_start
|
||||
frameEnd = scene.frame_end
|
||||
fps = scene.render.fps / scene.render.fps_base
|
||||
resolution_x = scene.render.resolution_x
|
||||
resolution_y = scene.render.resolution_y
|
||||
|
||||
# Check if settings are set
|
||||
data = asset_doc.get("data")
|
||||
|
||||
if not data:
|
||||
return
|
||||
|
|
@ -139,26 +138,47 @@ def set_start_end_frames():
|
|||
frameEnd = data.get("frameEnd")
|
||||
if data.get("fps"):
|
||||
fps = data.get("fps")
|
||||
if data.get("resolutionWidth"):
|
||||
resolution_x = data.get("resolutionWidth")
|
||||
if data.get("resolutionHeight"):
|
||||
resolution_y = data.get("resolutionHeight")
|
||||
|
||||
scene.frame_start = frameStart
|
||||
scene.frame_end = frameEnd
|
||||
scene.render.fps = round(fps)
|
||||
scene.render.fps_base = round(fps) / fps
|
||||
|
||||
|
||||
def set_resolution(data):
|
||||
scene = bpy.context.scene
|
||||
|
||||
# Default scene settings
|
||||
resolution_x = scene.render.resolution_x
|
||||
resolution_y = scene.render.resolution_y
|
||||
|
||||
if not data:
|
||||
return
|
||||
|
||||
if data.get("resolutionWidth"):
|
||||
resolution_x = data.get("resolutionWidth")
|
||||
if data.get("resolutionHeight"):
|
||||
resolution_y = data.get("resolutionHeight")
|
||||
|
||||
scene.render.resolution_x = resolution_x
|
||||
scene.render.resolution_y = resolution_y
|
||||
|
||||
|
||||
def on_new():
|
||||
set_start_end_frames()
|
||||
|
||||
project = os.environ.get("AVALON_PROJECT")
|
||||
settings = get_project_settings(project)
|
||||
settings = get_project_settings(project).get("blender")
|
||||
|
||||
unit_scale_settings = settings.get("blender").get("unit_scale_settings")
|
||||
set_resolution_startup = settings.get("set_resolution_startup")
|
||||
set_frames_startup = settings.get("set_frames_startup")
|
||||
|
||||
data = get_asset_data()
|
||||
|
||||
if set_resolution_startup:
|
||||
set_resolution(data)
|
||||
if set_frames_startup:
|
||||
set_frame_range(data)
|
||||
|
||||
unit_scale_settings = settings.get("unit_scale_settings")
|
||||
unit_scale_enabled = unit_scale_settings.get("enabled")
|
||||
if unit_scale_enabled:
|
||||
unit_scale = unit_scale_settings.get("base_file_unit_scale")
|
||||
|
|
@ -166,12 +186,20 @@ def on_new():
|
|||
|
||||
|
||||
def on_open():
|
||||
set_start_end_frames()
|
||||
|
||||
project = os.environ.get("AVALON_PROJECT")
|
||||
settings = get_project_settings(project)
|
||||
settings = get_project_settings(project).get("blender")
|
||||
|
||||
unit_scale_settings = settings.get("blender").get("unit_scale_settings")
|
||||
set_resolution_startup = settings.get("set_resolution_startup")
|
||||
set_frames_startup = settings.get("set_frames_startup")
|
||||
|
||||
data = get_asset_data()
|
||||
|
||||
if set_resolution_startup:
|
||||
set_resolution(data)
|
||||
if set_frames_startup:
|
||||
set_frame_range(data)
|
||||
|
||||
unit_scale_settings = settings.get("unit_scale_settings")
|
||||
unit_scale_enabled = unit_scale_settings.get("enabled")
|
||||
apply_on_opening = unit_scale_settings.get("apply_on_opening")
|
||||
if unit_scale_enabled and apply_on_opening:
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
"apply_on_opening": false,
|
||||
"base_file_unit_scale": 0.01
|
||||
},
|
||||
"set_resolution_startup": true,
|
||||
"set_frames_startup": true,
|
||||
"imageio": {
|
||||
"activate_host_color_management": true,
|
||||
"ocio_config": {
|
||||
|
|
|
|||
|
|
@ -31,6 +31,16 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "set_resolution_startup",
|
||||
"type": "boolean",
|
||||
"label": "Set Resolution on Startup"
|
||||
},
|
||||
{
|
||||
"key": "set_frames_startup",
|
||||
"type": "boolean",
|
||||
"label": "Set Start/End Frames and FPS on Startup"
|
||||
},
|
||||
{
|
||||
"key": "imageio",
|
||||
"type": "dict",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue