mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-02 00:44:52 +01:00
consider handleStart and End when collecting frames
This commit is contained in:
parent
4bcad094e2
commit
b908665d4c
4 changed files with 35 additions and 58 deletions
|
|
@ -548,7 +548,7 @@ def get_template_from_value(key, value):
|
|||
return parm
|
||||
|
||||
|
||||
def get_frame_data(node):
|
||||
def get_frame_data(self, node, asset_data={}):
|
||||
"""Get the frame data: start frame, end frame and steps.
|
||||
|
||||
Args:
|
||||
|
|
@ -561,16 +561,27 @@ def get_frame_data(node):
|
|||
data = {}
|
||||
|
||||
if node.parm("trange") is None:
|
||||
|
||||
self.log.debug(
|
||||
"Node has no 'trange' parameter: {}".format(node.path())
|
||||
)
|
||||
return data
|
||||
|
||||
if node.evalParm("trange") == 0:
|
||||
self.log.debug("trange is 0")
|
||||
self.log.debug(
|
||||
"Node '{}' has 'Render current frame' set. "
|
||||
"Time range data ignored.".format(node.path())
|
||||
)
|
||||
return data
|
||||
|
||||
data["frameStart"] = node.evalParm("f1")
|
||||
data["frameEnd"] = node.evalParm("f2")
|
||||
data["steps"] = node.evalParm("f3")
|
||||
data["frameStartHandle"] = node.evalParm("f1")
|
||||
data["frameStart"] = node.evalParm("f1") + asset_data.get("handleStart", 0)
|
||||
data["handleStart"] = asset_data.get("handleStart", 0)
|
||||
|
||||
data["frameEndHandle"] = node.evalParm("f2")
|
||||
data["frameEnd"] = node.evalParm("f2") - asset_data.get("handleEnd", 0)
|
||||
data["handleEnd"] = asset_data.get("handleEnd", 0)
|
||||
|
||||
data["byFrameStep"] = node.evalParm("f3")
|
||||
|
||||
return data
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
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."""
|
||||
|
|
@ -15,42 +15,16 @@ class CollectInstanceNodeFrameRange(pyblish.api.InstancePlugin):
|
|||
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))
|
||||
self.log.debug(
|
||||
"No instance node found for instance: {}".format(instance)
|
||||
)
|
||||
return
|
||||
|
||||
frame_data = self.get_frame_data(node)
|
||||
asset_data = instance.context.data["assetEntity"]["data"]
|
||||
frame_data = lib.get_frame_data(self, node, asset_data)
|
||||
|
||||
if not frame_data:
|
||||
return
|
||||
|
||||
self.log.info("Collected time data: {}".format(frame_data))
|
||||
instance.data.update(frame_data)
|
||||
|
||||
def get_frame_data(self, node):
|
||||
"""Get the frame data: start frame, end frame and steps
|
||||
Args:
|
||||
node(hou.Node)
|
||||
|
||||
Returns:
|
||||
dict
|
||||
|
||||
"""
|
||||
|
||||
data = {}
|
||||
|
||||
if node.parm("trange") is None:
|
||||
self.log.debug("Node has no 'trange' parameter: "
|
||||
"{}".format(node.path()))
|
||||
return data
|
||||
|
||||
if node.evalParm("trange") == 0:
|
||||
# Ignore 'render current frame'
|
||||
self.log.debug("Node '{}' has 'Render current frame' set. "
|
||||
"Time range data ignored.".format(node.path()))
|
||||
return data
|
||||
|
||||
data["frameStart"] = node.evalParm("f1")
|
||||
data["frameEnd"] = node.evalParm("f2")
|
||||
data["byFrameStep"] = node.evalParm("f3")
|
||||
|
||||
return data
|
||||
|
|
|
|||
|
|
@ -102,16 +102,4 @@ class CollectInstances(pyblish.api.ContextPlugin):
|
|||
|
||||
"""
|
||||
|
||||
data = {}
|
||||
|
||||
if node.parm("trange") is None:
|
||||
return data
|
||||
|
||||
if node.evalParm("trange") == 0:
|
||||
return data
|
||||
|
||||
data["frameStart"] = node.evalParm("f1")
|
||||
data["frameEnd"] = node.evalParm("f2")
|
||||
data["byFrameStep"] = node.evalParm("f3")
|
||||
|
||||
return data
|
||||
return lib.get_frame_data(self, node)
|
||||
|
|
|
|||
|
|
@ -19,16 +19,20 @@ class CollectRopFrameRange(pyblish.api.InstancePlugin):
|
|||
return
|
||||
|
||||
ropnode = hou.node(node_path)
|
||||
frame_data = lib.get_frame_data(ropnode)
|
||||
|
||||
asset_data = instance.context.data["assetEntity"]["data"]
|
||||
frame_data = lib.get_frame_data(self, ropnode, asset_data)
|
||||
|
||||
if "frameStart" in frame_data and "frameEnd" in frame_data:
|
||||
|
||||
# Log artist friendly message about the collected frame range
|
||||
message = (
|
||||
"Frame range {0[frameStart]} - {0[frameEnd]}"
|
||||
).format(frame_data)
|
||||
if frame_data.get("step", 1.0) != 1.0:
|
||||
message += " with step {0[step]}".format(frame_data)
|
||||
.format(frame_data)
|
||||
)
|
||||
if frame_data.get("byFrameStep", 1.0) != 1.0:
|
||||
message += " with step {0[byFrameStep]}".format(frame_data)
|
||||
|
||||
self.log.info(message)
|
||||
|
||||
instance.data.update(frame_data)
|
||||
|
|
@ -36,6 +40,6 @@ class CollectRopFrameRange(pyblish.api.InstancePlugin):
|
|||
# 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)
|
||||
"{0} [{1[frameStart]} - {1[frameEnd]}]"
|
||||
.format(label,frame_data)
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue