Nuke Studio - Shotgun 感知导出

Shotgun 导出

此应用为 Nuke Studio 的镜头序列导出添加 Shotgun 感知功能。它添加了一个新的处理器,使用配置来确定 Nuke 脚本和图版的路径。它还会使用标记确定 Shotgun 镜头状态和任务模板,以便在 Shotgun 中创建/更新镜头。
最新版本:v0.5.1 (Prod)
我们的版本号遵循语义化版本标准。
系统名称:tk-hiero-export

请注意:本文档介绍仅当控制 Toolkit 配置时可用的功能。有关更多详细信息,请参见 Shotgun 集成用户手册
概述
文档
                  简介
                        概述视频和演示
                  Shotgun 镜头处理器
                  标记
                  整理
                  路径
                  自定义模板字段
                  Shotgun 任务
                  导出过程
                  Shotgun 中的镜头序列和镜头更新
                  镜头数据结构支持
                  交替镜头层次结构
安装、更新和开发
配置选项

此应用用于向 Nuke Studio 镜头序列导出添加 Shotgun 功能。它会注册一个新预设,该预设将使用模板确定镜头的输出路径,在审片室的发布图版中包含一个 Shotgun 感知转码步骤,并设置一个从 Nuke Studio 标记到 Shotgun 镜头状态和镜头任务模板的映射。进行导出时,将更新 Shotgun 中的镜头,并按照数据结构中的配置在磁盘上创建完整的目录结构。

文档

简介

此应用为 Hiero 的镜头序列导出对话框添加 Shogtun 感知功能。

概述视频和演示

如果您是刚刚接触 Shotgun Toolkit 或 Hiero 集成,请观看下面的视频,快速了解一下 Shotgun Toolkit Hiero 集成在您的工作流中能做些什么。

如果您已熟悉 Toolkit 和 Hiero,可以继续阅读下面的文档。

Shotgun 镜头处理器

此应用在激活时会为 Hiero 导出对话框注册一系列更改:

导出对话框

首先是注册的新处理器:

处理器

当您单击此处理器时,有一些新的变化值得注意。

在对话框顶部,有一个额外的用户界面,它可以帮助您控制导出镜头序列时如何在 Shotgun 中创建/更新镜头:

Shotgun 用户界面

标记

通过调整下拉列表,您可以将各种 Hiero 标记映射到 Shotgun 镜头状态和镜头任务模板。这样,通过 Hiero 的标记工作流,您可以将某个 Shotgun 镜头设置为正在进行中,或者为镜头设置绿屏、CG 额外奖励或任何对您的配置有意义的任务。此用户界面通过一个挂钩填充,并且很容易配置额外奖励功能。

整理

应用还提供选项,控制如何对照 Hiero 的内置逻辑将轨道项整理在一起。如果您的一个镜头由多个项构成(无论是重叠、在不同轨道上还是在多个轨道上具有相同的镜头名称),应开启这些选项。这样,Shotgun Toolkit 镜头更新程序会将匹配的整理项视为一个镜头。

路径

例如,假设我们有两个轨道项,分别代表镜头 010 和 020。010 在前,020 在不同的轨道上与 010 的结尾重叠。由于 010 在前,它是主镜头并启用了整理功能,Shotgun 会将这两个项视为一个镜头 (010)。这意味着,应用将在 Shotgun 中创建或更新镜头 010。镜头入点将匹配轨道项 010 的开头,镜头出点将匹配轨道项 020 的结尾。应用将为每个轨道项创建一个可供审片室审看的版本,但这两个版本都将链接至镜头 010。应用还将以发布文件的形式为每个轨道项创建一个图版,但二者都将链接至镜头 010。此外,应用将发布一个 Nuke 脚本,该脚本链接至镜头 010,包含 2 个读取节点,每个项各一个节点。请注意,在这种情况下,不会在 Shotgun 中创建或更新镜头 020,因为它已整理到镜头 010 中。

路径

路径

在 Shotgun 用户界面下面,是标准路径对话框。默认情况下,会通过 Hiero 向镜头添加三项内容,包括一个默认的 Nuke 脚本、一个默认的 Nuke 写入位置和一个默认的图版转码位置。这些项的位置由应用的配置决定,并可完全使用模板系统:

路径

此应用会向 Hiero 添加一个 {tk_version} 令牌,它将被替换为版本字符串,并采用 Shotgun Toolkit 要求的正确格式。

自定义模板字段

您在 custom_template_fields 设置中定义的由 resolve_custom_strings 挂钩解析的任何令牌都将自动添加到 Hiero 的有效替换令牌列表中,并被视为 Toolkit 模板路径中的有效替换项。

例如,在 Toolkit 的 templates.yml 文件中,假设您使用以下内容定义一个键:

    resolution: 
        type: str 
        filter_by: alphanumeric

tk-hiero-exportproject.yml 设置中,有以下设置:

  ...
  ...
  tk-hiero:
    apps:
      tk-hiero-export:
        custom_template_fields:
        - {description: Shot Resolution, keyword: resolution}
  ...
  ...

然后,您按如下所示修改 resolve_custom_strings 挂钩:

# Copyright (c) 2014 Shotgun Software Inc.
#
# CONFIDENTIAL AND PROPRIETARY
#
# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit
# Source Code License included in this distribution package. See LICENSE.
# By accessing, using, copying or modifying this work you indicate your
# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights
# not expressly granted therein are reserved by Shotgun Software Inc.

from tank import Hook

class HieroResolveCustomStrings(Hook):
    """Translates a keyword string into its resolved value for a given task."""

    RESOLUTION_TOKEN_NAME = "{resolution}"

    def execute(self, task, keyword, **kwargs):
        """
        """

        self.parent.log_debug("attempting to resolve custom keyword: %s" % keyword)
        if keyword == self.RESOLUTION_TOKEN_NAME:
            translated_value = self._clip_resolution_string(task)
        else:
            raise RuntimeError("No translation handler found for custom_template_field: %s" % keyword)

        self.parent.log_debug("Custom resolver: %s -> %s" % (keyword, translated_value))
        return translated_value

    # Handle the {resolution_fs} token 
    def _clip_resolution_string(self, task): 
        """ returns sequence resolution or task format override""" 
        width = "" 
        height = ""

        sequence_format = task._sequence.format()

        width = sequence_format.width() 
        height = sequence_format.height()

        if "reformat" in task._preset.properties(): 
            task_reformat_settings = task._preset.properties()["reformat"] 
            if task_reformat_settings['to_type'] != "None": 
                width = task_reformat_settings['width'] 
                height = task_reformat_settings['height']

        return "%sx%s" % (width, height)

现在,您不仅可以在 Hiero 中使用 resolution 令牌,而且它还会对照您在 Toolkit 中定义的任何模板路径进行验证,这样便可导出到一个类似如下的位置:

    hiero_plate_path: "sequences/{Sequence}/{Shot}/hiero_plates/{resolution}/v{version}/{project}_{Shot}.mov"

Shotgun 任务

注册的新任务类型有两个。

Shotgun 转码图像

这是标准 Hiero 转码任务的一个子类,它会在 Shotgun 中将转码结果注册为发布。另外,还将选择性地在 Shotgun 中创建一个版本。如果创建了版本,还会创建一个 QuickTime 影片,并将它上传为审片室媒体。

Shotgun Nuke 项目文件

这是标准 Hiero Nuke 脚本导出器的一个子类,它会在 Shotgun 中将生成的 Nuke 脚本注册为与镜头链接的发布文件。这些设置让您可指定导出时在文件中包含哪些支持 Toolkit 的写入节点。

Nuke 项目文件设置

plate_published_file_typenuke_script_published_file_type 这两项应用设置让您可控制发布文件注册的文件类型。此外,nuke_script_toolkit_write_nodes 让您可控制应在导出对话框中提供哪些写入节点设置。

导出过程

运行导出时,导出队列中会出现一些额外的任务:

导出队列

每个镜头会运行一个 ShotgunShotUpdater 任务,该任务负责在 Shotgun 中创建镜头,并创建数据结构配置中指定的完整镜头结构。

Finder

Shotgun 中的镜头序列和镜头更新

应用将使用 Hiero 镜头序列的名称作为镜头序列名称,并且会在镜头中填入它们的镜头信息(镜头顺序、剪辑序列开头入点、镜头入点、镜头出点、剪辑序列结尾出点、镜头时长和剪辑序列时长)。此外,如果选择了构成镜头的镜头序列或内容项中的某些帧作为海报帧,还会上传它们作为镜头的缩略图。

如果您的工作流使用不同于“镜头序列”(Sequence)的其他实体作为镜头的父对象(比如“集”(Episode)),可以改写 hook_get_shot 挂钩中的 get_shot_parent 方法。默认的执行会创建(如果有必要)并返回一个“镜头序列”(Sequence)实体。

镜头数据结构支持

如果您的 Shotgun 站点支持镜头数据结构(v7.0.0 或更高版本),此应用会自动在 Shotgun 中生成一个具有对应“镜头项”(CutItem)实体的“镜头”(Cut)实体。“镜头”(Cut)实体对应 Hiero 镜头序列,“镜头项”(CutItem)实体对应镜头序列中的项。“镜头”(Cut)实体将链接到 hook_get_shot 挂钩中的 get_shot_parent 方法返回的父实体(默认为“镜头序列”(Sequence))。“镜头项”(CutItem)将与一个“镜头”(Shot)实体关联,并链接到导出期间创建的可审看的“版本”(Version)实体。导出后,将可以在 Shotugn 的“媒体”(Media)选项卡和 RV 中播放该“镜头”(Cut)

所有与“镜头”(Cut)“镜头项”(CutItem)实体关联的元数据均从 Hiero 推算得出,但“Cut Type”字段除外,此字段可在导出用户界面中指定。

Cut Type

此处的值将显示在“镜头”(Cut)实体的“类型”(Type)字段中。

需要注意的是,选择了任意整理选项后,将不支持镜头数据结构,并会跳过“镜头”(Cut)“镜头项”(CutItem)项的创建。

此外,镜头数据结构并不处理重定时的视频片段。导出重定时的视频片段时,会记录一条调试警告消息。

交替镜头层次结构

对于不采用标准“镜头序列 > 镜头”层次结构、可能会使用“集”和/或“场景”的工作室,有一个 hiero_get_shot 挂钩可用来配置应用,使其支持您的工作室当前使用的任何镜头层次结构。

相关应用和文档

Flame 镜头导出

使用 Flame 镜头导出器可以轻松地开始您的 Shotgun 项目!只需在 Flame 中选择要导出的一个镜头序列,然后导出器将完成其余操作。导出器会在 Shogtun 中创建镜头、任务、设置镜头信息,在磁盘上生成文件夹,将图版渲染到磁盘,并将媒体发送至 Shotgun 审看功能。完成后,您可以直接跳转到其他工具(例如 Flare 或 Nuke)以继续您的工作。

Flame 审核导出

Flame 审核应用让您可简单轻松地将镜头序列发送至 Shotgun 进行审看。Flame 将生成一个 QuickTime 影片,并将它上传至 Shotgun,以便可在审片室、客户审核或 Shotgun iPhone 应用中进行审看。所有处理都在后台运行,以便您可以专注于手头的工作。

在 Shotgun 中打开

这是一个简单的应用,用于在 Shotgun 中查找与选定轨道项相关的镜头,然后在浏览器窗口中打开其详细信息页面。

安装和更新

将此应用添加到 Shotgun Pipeline Toolkit

如果您想将此应用添加到 Project XYZ 中名为 asset 的环境中,请执行以下命令:

> tank Project XYZ install_app asset tk-hiero tk-hiero-export

更新至最新版本

如果您已在某个项目中安装了此应用,要获取最新版本,可运行 update 命令。您可以导航到该特定项目随附的 tank 命令,并在该项目中运行它:

> cd /my_tank_configs/project_xyz
> ./tank updates

或者,也可以运行您的工作室的 tank 命令并指定项目名称,指示该命令要对哪个项目运行更新检查:

> tank Project XYZ updates

协作和代码演进

如果您可以获取 Shotgun Pipeline Toolkit,意味着也可以获取我们在 GitHub 中存储和管理的所有应用、插件和框架的源代码。欢迎根据实际需要演进和完善这些内容,以它们为基础做进一步的独立开发,修改它们(以及向我们提交 Pull 请求!),或者只是随手玩一玩,简单了解它们的构建方式和 Toolkit 的工作原理。您可以通过以下网址访问此代码库:https://github.com/shotgunsoftware/tk-hiero-export

特殊要求

  • 需要安装 Shotgun Pipeline Toolkit 核心 API 版本 v0.18.124 或更高版本才能使用此功能。

配置

下面是使用的所有配置设置的摘要。您需要在要启用此应用或插件的环境文件中定义这些设置。

hook_upload_thumbnail

类型:hook

默认值:hiero_upload_thumbnail

说明:当需要向 Shotgun 上传 Hiero 源的缩略图时,会调用此挂钩。第一个参数是词典,表示要为其上传缩略图的 Shotgun 实体。第二个参数是获取缩略图的 Hiero 源。第三个参数是提取源的 Hiero 轨道项 (TrackItem)。当缩略图不与时间线上的项对应时,轨道项可为 None。

hook_post_version_creation

类型:hook

默认值:hiero_post_version_creation

说明:创建版本实体后,会调用此挂钩。此挂钩将接受新实体数据词典,其中包含创建的实体的 ID 编号。

template_render_path

类型:template

可选模板键:***

说明:引用一个模板,该模板指定渲染内容的命名。转换模板挂钩必须知道如何将此模板转换为 Hiero 关键字。

hook_update_shot

类型:hook

默认值:hiero_update_shot

说明:在 Shotgun 镜头处理期间调用。提供方法来管理是否以及如何更新镜头的实体,是否以及如何在导出过程中创建镜头文件系统结构。

hook_update_cuts

类型:hook

默认值:hiero_update_cuts

说明:在 Shotgun 镜头处理期间调用。提供方法来管理是否以及如何创建和更新镜头和镜头项。

default_task_template

类型:str

默认值:Basic shot template

说明:应用在 Shotgun 中创建新镜头时使用的默认镜头任务模板。此设置位于“Custom Shotgun Export”用户界面中,您可以在运行导出前根据需要更改它。

hook_get_quicktime_settings

类型:hook

默认值:hiero_get_quicktime_settings

说明:生成用于创建 QuickTime 影片的默认设置时,会调用此挂钩。参数是一个布尔值,当生成的 QuickTime 影片仅用于上传至 Shotgun 时,值为 True;当设置用于默认的 Quicktime 转码时,值为 False。返回值是一个包含两个项的元祖。第一个项是将要生成的 Nuke 写入节点的 file_type 字符串。第二个项是一个词典,其中的键是写入节点的旋钮名称,值是对应的节点值。

nuke_script_published_file_type

类型:tank_type

默认值:Nuke Script

说明:用于 Nuke 脚本的发布文件/Tank 类型的字符串值。

hook_pre_export

类型:hook

默认值:hiero_pre_export

说明:启动 Shotgun 的镜头处理器前,会调用此挂钩。它可以用于清空缓存和执行其他特定的初始化任务。

audio_published_file_type

类型:tank_type

默认值:Hiero Audio

说明:发布的音频使用的发布文件/Tank 类型的字符串值。

nuke_script_toolkit_write_nodes

类型:list

说明:

plate_published_file_type

类型:tank_type

默认值:Hiero Plate

说明:发布的图版使用的发布文件/Tank 类型的字符串值。

hook_customize_export_ui

类型:hook

默认值:hiero_customize_export_ui

说明:初始化导出 UI 期间调用。提供方法来定义预设的自定义 UI 属性,将自定义控件初始化并注入导出器,以及设置自定义控件以使用属性 UI 控件。

template_plate_path

类型:template

可选模板键:***

说明:引用一个模板,该模板指定镜头图版的发布目录。转换模板挂钩必须知道如何将此模板转换为 Hiero 关键字。

default_task_filter

类型:str

默认值:[['step.Step.code', 'is', 'Comp']]

说明:这是一个过滤器,它将返回镜头中将会注册发布的任务。此值必须是一个可传递给 Shotgun API 的 find 方法的有效过滤器,且无实体条件(发布时会添加一个将实体链接到镜头的值)。如果此过滤器包含 ['step.Step.code', '是(is)', VALUE] 形式的条件,则无论 VALUE 是什么,默认的 translate_template 挂钩都将在发布模板中扩展 {Step} 时使用此值。如果过滤器得到一个任务,则应用创建的任何发布都将与该任务关联。否则,这些发布将只与镜头关联。

template_nuke_script_path

类型:template

可选模板键:***

说明:引用一个模板,该模板指定发布的 Nuke 脚本的命名。转换模板挂钩必须知道如何将此模板转换为 Hiero 关键字。

custom_template_fields

类型:list

说明:要添加到 Hiero 解析器的自定义字符串的列表。每个列表项是一个词典,指定要替换的关键字,以及将在导出树的工具提示中显示的对于该关键字的说明。有效条目的格式为:{keyword: a_keyword, description: This is a keyword}。每个关键字需要由 resolve_custom_strings 挂钩转换为解析字符串。

hook_get_extra_publish_data

类型:hook

默认值:hiero_get_extra_publish_data

说明:在 Shotgun 中为转码创建发布文件时,会调用此挂钩。此挂钩应返回 None(当没有额外的信息要与发布文件关联时)或与 Shotgun API 的 update 方法兼容的词典。

hook_resolve_custom_strings

类型:hook

默认值:hiero_resolve_custom_strings

说明:解析通过 custom_template_fields 设置添加到 Hiero 解析器的自定义项时,会调用此挂钩。第一个参数是进行解析的关键字,第二个参数是运行的 Hiero 任务。返回值是关键字解析出来的字符串值。

hook_translate_template

类型:hook

默认值:hiero_translate_template

说明:当需要将模板转换为 Hiero 样式的替代字符串时,会调用此挂钩。第一个参数是要转换的模板。第二个参数是对转换的模板类型进行描述的字符串。返回值是转换的字符串。

template_version

类型:template

必需模板键:version

可选模板键:***

说明:此字符串模板指定如何将 Hiero 的 tk_version 令牌格式化为 tk 的版本字符串。

hook_update_version_data

类型:hook

默认值:hiero_update_version_data

说明:在 Shotgun 中为转码创建版本之前,会调用此挂钩。版本的默认值已填入 version_data 词典中。修改此词典可更改将要作为参数传递给 Shotgun API 创建调用的内容。

hook_get_shot

类型:hook

默认值:hiero_get_shot

说明:调用此挂钩将返回要更新镜头信息的镜头。第一个参数是 Hiero 的导出任务对象。第二个参数是 hiero.core.TrackItem,由它驱动镜头的创建。第三个参数是一个数据词典,可用于在创建镜头的不同调用之间传递数据。返回值是 ID 将会更新的镜头的数据词典。镜头信息将在对镜头调用 Shotgun 更新命令前合并到此词典中。默认执行会创建或查找一个以要导出的 Hiero 镜头序列命名的镜头序列,并通过 sg_sequence 字段将该镜头序列链接到镜头。

关注

0 评论

登录写评论。