mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-02 00:44:52 +01:00
allow reseting handles, and remove the redundant collector
This commit is contained in:
parent
0c63b26915
commit
c8f6fb209b
4 changed files with 58 additions and 62 deletions
|
|
@ -564,20 +564,20 @@ def get_frame_data(node, asset_data=None, log=None):
|
|||
if log is None:
|
||||
log = self.log
|
||||
|
||||
data = {}
|
||||
|
||||
if node.parm("trange") is None:
|
||||
log.debug(
|
||||
"Node has no 'trange' parameter: {}".format(node.path())
|
||||
)
|
||||
return data
|
||||
return
|
||||
|
||||
if node.evalParm("trange") == 0:
|
||||
log.debug(
|
||||
"Node '{}' has 'Render current frame' set. "
|
||||
"Time range data ignored.".format(node.path())
|
||||
)
|
||||
return data
|
||||
return
|
||||
|
||||
data = {}
|
||||
|
||||
data["frameStartHandle"] = node.evalParm("f1")
|
||||
data["handleStart"] = asset_data.get("handleStart", 0)
|
||||
|
|
|
|||
|
|
@ -1,30 +0,0 @@
|
|||
import hou
|
||||
|
||||
import pyblish.api
|
||||
from openpype.hosts.houdini.api import lib
|
||||
|
||||
class CollectInstanceNodeFrameRange(pyblish.api.InstancePlugin):
|
||||
"""Collect time range frame data for the instance node."""
|
||||
|
||||
order = pyblish.api.CollectorOrder + 0.001
|
||||
label = "Instance Node Frame Range"
|
||||
hosts = ["houdini"]
|
||||
|
||||
def process(self, instance):
|
||||
|
||||
node_path = instance.data.get("instance_node")
|
||||
node = hou.node(node_path) if node_path else None
|
||||
if not node_path or not node:
|
||||
self.log.debug(
|
||||
"No instance node found for instance: {}".format(instance)
|
||||
)
|
||||
return
|
||||
|
||||
asset_data = instance.context.data["assetEntity"]["data"]
|
||||
frame_data = lib.get_frame_data(node, asset_data, self.log)
|
||||
|
||||
if not frame_data:
|
||||
return
|
||||
|
||||
self.log.info("Collected time data: {}".format(frame_data))
|
||||
instance.data.update(frame_data)
|
||||
|
|
@ -91,15 +91,3 @@ class CollectInstances(pyblish.api.ContextPlugin):
|
|||
context[:] = sorted(context, key=sort_by_family)
|
||||
|
||||
return context
|
||||
|
||||
def get_frame_data(self, node):
|
||||
"""Get the frame data: start frame, end frame and steps
|
||||
Args:
|
||||
node(hou.Node)
|
||||
|
||||
Returns:
|
||||
dict
|
||||
|
||||
"""
|
||||
|
||||
return lib.get_frame_data(node)
|
||||
|
|
|
|||
|
|
@ -2,12 +2,17 @@
|
|||
"""Collector plugin for frames data on ROP instances."""
|
||||
import hou # noqa
|
||||
import pyblish.api
|
||||
from openpype.lib import BoolDef
|
||||
from openpype.hosts.houdini.api import lib
|
||||
from openpype.pipeline import OptionalPyblishPluginMixin
|
||||
|
||||
|
||||
class CollectRopFrameRange(pyblish.api.InstancePlugin):
|
||||
class CollectRopFrameRange(pyblish.api.InstancePlugin,
|
||||
OptionalPyblishPluginMixin):
|
||||
|
||||
"""Collect all frames which would be saved from the ROP nodes"""
|
||||
|
||||
hosts = ["houdini"]
|
||||
order = pyblish.api.CollectorOrder
|
||||
label = "Collect RopNode Frame Range"
|
||||
|
||||
|
|
@ -16,30 +21,63 @@ class CollectRopFrameRange(pyblish.api.InstancePlugin):
|
|||
node_path = instance.data.get("instance_node")
|
||||
if node_path is None:
|
||||
# Instance without instance node like a workfile instance
|
||||
self.log.debug(
|
||||
"No instance node found for instance: {}".format(instance)
|
||||
)
|
||||
return
|
||||
|
||||
ropnode = hou.node(node_path)
|
||||
|
||||
asset_data = instance.context.data["assetEntity"]["data"]
|
||||
|
||||
attr_values = self.get_attr_values_from_data(instance.data)
|
||||
if attr_values.get("reset_handles"):
|
||||
asset_data["handleStart"] = 0
|
||||
asset_data["handleEnd"] = 0
|
||||
|
||||
frame_data = lib.get_frame_data(ropnode, asset_data, self.log)
|
||||
|
||||
if "frameStart" in frame_data and "frameEnd" in frame_data:
|
||||
if not frame_data:
|
||||
return
|
||||
|
||||
# Log artist friendly message about the collected frame range
|
||||
message = (
|
||||
"Frame range {0[frameStart]} - {0[frameEnd]}"
|
||||
# Log artist friendly message about the collected frame range
|
||||
message = ""
|
||||
|
||||
if attr_values.get("reset_handles"):
|
||||
message += (
|
||||
"Reset frame handles is activated for this instance, "
|
||||
"start and end handles are set to 0.\n"
|
||||
)
|
||||
else:
|
||||
message += (
|
||||
"Full Frame range with Handles "
|
||||
"{0[frameStartHandle]} - {0[frameEndHandle]}\n"
|
||||
.format(frame_data)
|
||||
)
|
||||
if frame_data.get("byFrameStep", 1.0) != 1.0:
|
||||
message += " with step {0[byFrameStep]}".format(frame_data)
|
||||
|
||||
self.log.info(message)
|
||||
message += (
|
||||
"Frame range {0[frameStart]} - {0[frameEnd]}"
|
||||
.format(frame_data)
|
||||
)
|
||||
|
||||
instance.data.update(frame_data)
|
||||
if frame_data.get("byFrameStep", 1.0) != 1.0:
|
||||
message += "\nFrame steps {0[byFrameStep]}".format(frame_data)
|
||||
|
||||
# Add frame range to label if the instance has a frame range.
|
||||
label = instance.data.get("label", instance.data["name"])
|
||||
instance.data["label"] = (
|
||||
"{0} [{1[frameStart]} - {1[frameEnd]}]"
|
||||
.format(label, frame_data)
|
||||
)
|
||||
self.log.info(message)
|
||||
|
||||
instance.data.update(frame_data)
|
||||
|
||||
# Add frame range to label if the instance has a frame range.
|
||||
label = instance.data.get("label", instance.data["name"])
|
||||
instance.data["label"] = (
|
||||
"{0} [{1[frameStart]} - {1[frameEnd]}]"
|
||||
.format(label, frame_data)
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def get_attribute_defs(cls):
|
||||
return [
|
||||
BoolDef("reset_handles",
|
||||
tooltip="Set frame handles to zero",
|
||||
default=False,
|
||||
label="Reset frame handles")
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue