mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 12:54:40 +01:00
Merge pull request #179 from r42-chun/retain-viewport-layout-for-max-after-review
3dsMax: Retaining Viewport Layout during Preview
This commit is contained in:
commit
19ef5c1fce
2 changed files with 43 additions and 11 deletions
|
|
@ -31,23 +31,26 @@ def viewport_layout_and_camera(camera, layout="layout_1"):
|
|||
layout (str): layout to use in viewport, defaults to `layout_1`
|
||||
Use None to not change viewport layout during context.
|
||||
"""
|
||||
needs_maximise = 0
|
||||
# Set to first active non extended viewport
|
||||
rt.viewport.activeViewportEx(1)
|
||||
original_camera = rt.viewport.getCamera()
|
||||
original_layout = rt.viewport.getLayout()
|
||||
if not original_camera:
|
||||
# if there is no original camera
|
||||
# use the current camera as original
|
||||
original_camera = rt.getNodeByName(camera)
|
||||
original_type = rt.viewport.getType()
|
||||
review_camera = rt.getNodeByName(camera)
|
||||
|
||||
try:
|
||||
if layout is not None:
|
||||
layout = rt.Name(layout)
|
||||
if rt.viewport.getLayout() != layout:
|
||||
rt.viewport.setLayout(layout)
|
||||
if rt.viewport.getLayout() != rt.name(layout):
|
||||
rt.execute("max tool maximize")
|
||||
needs_maximise = 1
|
||||
rt.viewport.setCamera(review_camera)
|
||||
yield
|
||||
finally:
|
||||
rt.viewport.setLayout(original_layout)
|
||||
rt.viewport.setCamera(original_camera)
|
||||
if needs_maximise == 1:
|
||||
rt.execute("max tool maximize")
|
||||
if original_type == rt.Name("view_camera"):
|
||||
rt.viewport.setCamera(original_camera)
|
||||
else:
|
||||
rt.viewport.setType(original_type)
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import pyblish.api
|
||||
from ayon_core.pipeline import PublishValidationError
|
||||
from pymxs import runtime as rt
|
||||
|
||||
|
||||
class ValidateExtendedViewport(pyblish.api.ContextPlugin):
|
||||
"""Validate if the first viewport is an extended viewport."""
|
||||
|
||||
order = pyblish.api.ValidatorOrder
|
||||
families = ["review"]
|
||||
hosts = ["max"]
|
||||
label = "Validate Extended Viewport"
|
||||
|
||||
def process(self, context):
|
||||
try:
|
||||
rt.viewport.activeViewportEx(1)
|
||||
except RuntimeError:
|
||||
raise PublishValidationError(
|
||||
"Please make sure one viewport is not an extended viewport",
|
||||
description = (
|
||||
"Please make sure at least one viewport is not an "
|
||||
"extended viewport but a 3dsmax supported viewport "
|
||||
"i.e camera/persp/orthographic view.\n\n"
|
||||
"To rectify it, please go to view in the top menubar, "
|
||||
"go to Views -> Viewports Configuration -> Layout and "
|
||||
"right click on one of the panels to change it."
|
||||
))
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue