mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 12:54:40 +01:00
add hierarchical option for playblasts
This commit is contained in:
parent
1c4648d6ee
commit
5bfacad2a3
7 changed files with 144 additions and 99 deletions
|
|
@ -28,6 +28,7 @@ class IntegrateFtrackApi(pyblish.api.InstancePlugin):
|
|||
queries = []
|
||||
for key, value in data.iteritems():
|
||||
if not isinstance(value, (basestring, int)):
|
||||
self.log.info(value)
|
||||
if "id" in value.keys():
|
||||
queries.append(
|
||||
"{0}.id is \"{1}\"".format(key, value["id"])
|
||||
|
|
|
|||
|
|
@ -24,7 +24,8 @@ class IntegrateFtrackInstance(pyblish.api.InstancePlugin):
|
|||
'setdress': 'setdress',
|
||||
'pointcache': 'cache',
|
||||
'write': 'img',
|
||||
'render': 'render'}
|
||||
'render': 'render',
|
||||
'review': 'mov'}
|
||||
|
||||
def process(self, instance):
|
||||
|
||||
|
|
@ -43,9 +44,7 @@ class IntegrateFtrackInstance(pyblish.api.InstancePlugin):
|
|||
dst_list = instance.data['destination_list']
|
||||
|
||||
ft_session = instance.context.data["ftrackSession"]
|
||||
location = ft_session.query(
|
||||
'Location where name is "ftrack.unmanaged"').one()
|
||||
self.log.debug('location {}'.format(location))
|
||||
|
||||
|
||||
for file in instance.data['destination_list']:
|
||||
self.log.debug('file {}'.format(file))
|
||||
|
|
@ -53,18 +52,34 @@ class IntegrateFtrackInstance(pyblish.api.InstancePlugin):
|
|||
for file in dst_list:
|
||||
filename, ext = os.path.splitext(file)
|
||||
self.log.debug('dest ext: ' + ext)
|
||||
thumbnail = False
|
||||
|
||||
if family == 'review':
|
||||
component_name = "ftrackreview-mp4"
|
||||
if ext in ['.mov']:
|
||||
location = ft_session.query(
|
||||
'Location where name is "ftrack.server"').one()
|
||||
metadata = {'ftr_meta': json.dumps({
|
||||
'frameIn': int(instance.data["startFrame"]),
|
||||
'frameOut': int(instance.data["startFrame"]),
|
||||
'frameRate': 25})}
|
||||
'Location where name is "ftrack.server"').one()
|
||||
component_data = {
|
||||
"name": "ftrackreview-mp4", # Default component name is "main".
|
||||
"metadata": {'ftr_meta': json.dumps({
|
||||
'frameIn': int(instance.data["startFrame"]),
|
||||
'frameOut': int(instance.data["startFrame"]),
|
||||
'frameRate': 25})}
|
||||
}
|
||||
elif ext in [".jpg"]:
|
||||
component_data = {
|
||||
"name": "thumbnail" # Default component name is "main".
|
||||
}
|
||||
thumbnail = True
|
||||
location = ft_session.query(
|
||||
'Location where name is "ftrack.server"').one()
|
||||
else:
|
||||
component_name = ext[1:]
|
||||
metadata = None
|
||||
component_data = {
|
||||
"name": ext[1:] # Default component name is "main".
|
||||
}
|
||||
|
||||
location = ft_session.query(
|
||||
'Location where name is "ftrack.unmanaged"').one()
|
||||
|
||||
self.log.debug('location {}'.format(location))
|
||||
|
||||
componentList.append({"assettype_data": {
|
||||
"short": asset_type,
|
||||
|
|
@ -75,13 +90,11 @@ class IntegrateFtrackInstance(pyblish.api.InstancePlugin):
|
|||
"assetversion_data": {
|
||||
"version": version_number,
|
||||
},
|
||||
"component_data": {
|
||||
"name": component_name, # Default component name is "main".
|
||||
"metadata": metadata
|
||||
},
|
||||
"component_data": component_data,
|
||||
"component_path": file,
|
||||
'component_location': location,
|
||||
"component_overwrite": False
|
||||
"component_overwrite": False,
|
||||
"thumbnail": thumbnail
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import clique
|
|||
import json
|
||||
|
||||
|
||||
class IntegrateFtrackInstance(pyblish.api.InstancePlugin):
|
||||
class IntegrateFtrackReview(pyblish.api.InstancePlugin):
|
||||
"""Collect ftrack component data
|
||||
|
||||
Add ftrack component list to instance.
|
||||
|
|
@ -13,75 +13,73 @@ class IntegrateFtrackInstance(pyblish.api.InstancePlugin):
|
|||
"""
|
||||
|
||||
order = pyblish.api.IntegratorOrder + 0.48
|
||||
label = 'Integrate Ftrack Component'
|
||||
label = 'Integrate Ftrack Review'
|
||||
families = ['review', 'ftrack']
|
||||
|
||||
family_mapping = {'camera': 'cam',
|
||||
'look': 'look',
|
||||
'mayaAscii': 'scene',
|
||||
'model': 'geo',
|
||||
'rig': 'rig',
|
||||
'setdress': 'setdress',
|
||||
'pointcache': 'cache',
|
||||
'review': 'mov',
|
||||
'write': 'img',
|
||||
'render': 'render'}
|
||||
family_mapping = {'review': 'mov'
|
||||
}
|
||||
|
||||
def process(self, instance):
|
||||
|
||||
self.log.debug('instance {}'.format(instance))
|
||||
|
||||
assumed_data = instance.data["assumedTemplateData"]
|
||||
assumed_version = assumed_data["version"]
|
||||
version_number = int(assumed_version)
|
||||
family = instance.data['family'].lower()
|
||||
asset_type = ''
|
||||
|
||||
asset_type = self.family_mapping[family]
|
||||
|
||||
componentList = []
|
||||
|
||||
dst_list = instance.data['destination_list']
|
||||
|
||||
ft_session = instance.context.data["ftrackSession"]
|
||||
|
||||
|
||||
for file in instance.data['destination_list']:
|
||||
self.log.debug('file {}'.format(file))
|
||||
|
||||
for file in dst_list:
|
||||
filename, ext = os.path.splitext(file)
|
||||
self.log.debug('dest ext: ' + ext)
|
||||
|
||||
component_name = "ftrackreview-mp4"
|
||||
location = ft_session.query(
|
||||
'Location where name is "ftrack.server"').one()
|
||||
metadata = {'ftr_meta': json.dumps({
|
||||
'frameIn': int(instance.data["startFrame"]),
|
||||
'frameOut': int(instance.data["startFrame"]),
|
||||
'frameRate': 25})}
|
||||
|
||||
|
||||
componentList.append({"assettype_data": {
|
||||
"short": asset_type,
|
||||
},
|
||||
"asset_data": {
|
||||
"name": instance.data["subset"],
|
||||
},
|
||||
"assetversion_data": {
|
||||
"version": version_number,
|
||||
},
|
||||
"component_data": {
|
||||
"name": component_name, # Default component name is "main".
|
||||
"metadata": metadata
|
||||
},
|
||||
"component_path": file,
|
||||
'component_location': location,
|
||||
"component_overwrite": False
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
|
||||
self.log.debug('componentsList: {}'.format(str(componentList)))
|
||||
instance.data["ftrackComponentsList"] = componentList
|
||||
#
|
||||
# assumed_data = instance.data["assumedTemplateData"]
|
||||
# assumed_version = assumed_data["version"]
|
||||
# version_number = int(assumed_version)
|
||||
# family = instance.data['family'].lower()
|
||||
# asset_type = ''
|
||||
#
|
||||
# asset_type = self.family_mapping[family]
|
||||
#
|
||||
# componentList = []
|
||||
#
|
||||
# dst_list = instance.data['destination_list']
|
||||
#
|
||||
# ft_session = instance.context.data["ftrackSession"]
|
||||
#
|
||||
#
|
||||
# for file in instance.data['destination_list']:
|
||||
# self.log.debug('file {}'.format(file))
|
||||
#
|
||||
# for file in dst_list:
|
||||
# filename, ext = os.path.splitext(file)
|
||||
# self.log.debug('dest ext: ' + ext)
|
||||
#
|
||||
# if ext == '.mov':
|
||||
# component_name = "ftrackreview-mp4"
|
||||
# metadata = {'ftr_meta': json.dumps({
|
||||
# 'frameIn': int(instance.data["startFrame"]),
|
||||
# 'frameOut': int(instance.data["startFrame"]),
|
||||
# 'frameRate': 25})}
|
||||
# thumbnail = False
|
||||
#
|
||||
# else:
|
||||
# component_name = "thumbnail"
|
||||
# thumbnail = True
|
||||
#
|
||||
# location = ft_session.query(
|
||||
# 'Location where name is "ftrack.server"').one()
|
||||
#
|
||||
# componentList.append({"assettype_data": {
|
||||
# "short": asset_type,
|
||||
# },
|
||||
# "asset_data": {
|
||||
# "name": instance.data["subset"],
|
||||
# },
|
||||
# "assetversion_data": {
|
||||
# "version": version_number,
|
||||
# },
|
||||
# "component_data": {
|
||||
# "name": component_name, # Default component name is "main".
|
||||
# "metadata": metadata
|
||||
# },
|
||||
# "component_path": file,
|
||||
# 'component_location': location,
|
||||
# "component_overwrite": False,
|
||||
# "thumbnail": thumbnail
|
||||
# }
|
||||
# )
|
||||
#
|
||||
#
|
||||
# self.log.debug('componentsList: {}'.format(str(componentList)))
|
||||
# instance.data["ftrackComponentsList"] = componentList
|
||||
|
|
|
|||
|
|
@ -46,6 +46,8 @@ class CollectInstances(pyblish.api.ContextPlugin):
|
|||
|
||||
objectset = cmds.ls("*.id", long=True, type="objectSet",
|
||||
recursive=True, objectsOnly=True)
|
||||
|
||||
context.data['objectsets'] = objectset
|
||||
for objset in objectset:
|
||||
|
||||
if not cmds.attributeQuery("id", node=objset, exists=True):
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
from maya import cmds
|
||||
import pymel.core as pm
|
||||
|
||||
import pyblish.api
|
||||
import avalon.api
|
||||
|
||||
class CollectReviewData(pyblish.api.InstancePlugin):
|
||||
"""Collect Review data
|
||||
|
|
@ -15,3 +17,36 @@ class CollectReviewData(pyblish.api.InstancePlugin):
|
|||
|
||||
# make ftrack publishable
|
||||
instance.data["families"] = ['ftrack']
|
||||
context = instance.context
|
||||
|
||||
task = avalon.api.Session["AVALON_TASK"]
|
||||
# pseudo code
|
||||
|
||||
# get cameras
|
||||
members = instance.data['setMembers']
|
||||
cameras = cmds.ls(members, long=True,
|
||||
dag=True, cameras=True)
|
||||
self.log.debug('members: {}'.format(members))
|
||||
|
||||
# validate required settings
|
||||
assert len(cameras) == 1, "Not a single camera found in extraction"
|
||||
camera = cameras[0]
|
||||
self.log.debug('camera: {}'.format(camera))
|
||||
|
||||
objectset = context.data['objectsets']
|
||||
|
||||
reviewable_subset = None
|
||||
reviewable_subset = list(set(members) & set(objectset))
|
||||
assert len(reviewable_subset) == 1, "Multiple subsets for review"
|
||||
self.log.debug('subset for review: {}'.format(reviewable_subset))
|
||||
|
||||
for inst in context:
|
||||
self.log.debug('instance: {}'.format(instance))
|
||||
if inst.name == reviewable_subset[0]:
|
||||
inst.data['families'].append('review')
|
||||
inst.data['review_camera'] = camera
|
||||
self.log.info('adding review family to {}'.format(reviewable_subset))
|
||||
cmds.setAttr(str(instance) + '.active', 0)
|
||||
|
||||
instance.data['subset'] = task + 'Review'
|
||||
instance.data['review_camera'] = camera
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ class ExtractQuicktime(pype.api.Extractor):
|
|||
label = "Quicktime"
|
||||
hosts = ["maya"]
|
||||
families = ["review"]
|
||||
optional = True
|
||||
|
||||
def process(self, instance):
|
||||
self.log.info("Extracting capture..")
|
||||
|
|
@ -53,12 +54,13 @@ class ExtractQuicktime(pype.api.Extractor):
|
|||
|
||||
# get cameras
|
||||
members = instance.data['setMembers']
|
||||
cameras = cmds.ls(members, leaf=True, shapes=True, long=True,
|
||||
dag=True, type="camera")
|
||||
camera = instance.data['review_camera']
|
||||
# cameras = cmds.ls(members, leaf=True, shapes=True, long=True,
|
||||
# dag=True, type="camera")
|
||||
|
||||
# validate required settings
|
||||
assert len(cameras) == 1, "Not a single camera found in extraction"
|
||||
camera = cameras[0]
|
||||
# # validate required settings
|
||||
# assert len(cameras) == 1, "Not a single camera found in extraction"
|
||||
# camera = cameras[0]
|
||||
|
||||
|
||||
# project_code = ftrack_data['Project']['code']
|
||||
|
|
|
|||
|
|
@ -47,14 +47,8 @@ class ExtractThumbnail(pype.api.Extractor):
|
|||
end = cmds.currentTime(query=True)
|
||||
self.log.info("start: {}, end: {}".format(start, end))
|
||||
|
||||
# get cameras
|
||||
members = instance.data['setMembers']
|
||||
cameras = cmds.ls(members, leaf=True, shapes=True, long=True,
|
||||
dag=True, type="camera")
|
||||
|
||||
# validate required settings
|
||||
assert len(cameras) == 1, "Not a single camera found in extraction"
|
||||
camera = cameras[0]
|
||||
camera = instance.data['review_camera']
|
||||
|
||||
|
||||
# project_code = ftrack_data['Project']['code']
|
||||
|
|
@ -134,9 +128,9 @@ class ExtractThumbnail(pype.api.Extractor):
|
|||
with maintained_time():
|
||||
playblast = capture_gui.lib.capture_scene(preset)
|
||||
|
||||
thumbnail = filename + ".jpg"
|
||||
_, thumbnail = os.path.split(playblast)
|
||||
|
||||
self.log.info("file list {}".format(playblast))
|
||||
self.log.info("file list {}".format(thumbnail))
|
||||
# self.log.info("Calculating HUD data overlay")
|
||||
|
||||
# stagingdir = "C:/Users/milan.kolar/AppData/Local/Temp/pyblish_tmp_ucsymm"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue