Shotgun 面板

Shotgun 面板

通过面板用户界面提供有关您的场景、您自己以及周围环境的 Shotgun 信息。
最新版本:v1.5.4 (Prod)
我们的版本号遵循语义化版本标准。
系统名称:tk-multi-shotgunpanel

请注意:本文档介绍仅当控制 Toolkit 配置时可用的功能。有关更多详细信息,请参见 Shotgun 集成用户手册
概述
文档
            配置 Shotgun 面板
                  配置显示的内容
                  配置动作
安装、更新和开发
配置选项

通过 Shotgun 面板可以快速访问某个嵌入式面板中的 Shotgun 信息。可以使用它轻松访问有关用户当前正在处理的任务的信息,并且您可以即时访问活动流、注释、任务、版本和发布。可播放您团队中的其他成员发送以进行审核的版本。可在您的应用程序中直接回复注释。如果您的工作流跟踪依存关系信息,您也可以直接从 Shotgun 面板浏览此信息。

概述视频

下面的视频对特性和功能进行了简要的介绍。

文档

本文档介绍仅当控制 Toolkit 配置时可用的功能。有关详细信息,请参见 Shotgun 集成用户手册

配置 Shotgun 面板

Shotgun 面板中有两个主要区域可进行大量配置:一个是用户界面文字的外观,另一个是要与数据关联的动作。以下部分概述如何控制这两个系统的配置。

配置显示的内容

详细信息区域和列表中的值都可以通过 shotgun_fields 挂钩进行配置。您可以为此挂钩创建子类,并更改执行,以便显示您需要的值:

模板系统

此挂钩支持简单的模板语言,可提供出色的灵活性。它还支持 Qt 所支持的 HTML 子集,因此您可以控制显示的值的颜色、字体大小、粗细等。模板语言用法如下:

  • Shotgun 的值括在 {brackets} 中,例如 <b>Description:</b> {description}。此模板呈现时,{description} 部分将替换为 description 字段的值。

  • 如果您想为值添加一个仅当值不为空时才显示的可选前缀或后缀,可使用 {[Prefix]sg_field[suffix]} 语法。对于模板 {[Start: ]start_date} {[End: ]end_date},如果同时填充了两个值,将显示 Start: 12 July 2009 End: 14 July 2012,如果未设置结束日期,则显示 Start: 12 July 2009

  • 您可以定义回退机制,在某些值未设置的情况下进行回退。对于 Shotgun 版本而言,artist 字段优先于 created_by 字段,这是为了支持由制作人员代表美工人员提交版本的工作流。在这种情况下,版本将由制作人员创建,但 artist 字段会设置为美工人员。不过,情况并非总是如此。有时,在由美工人员自己提交工作的工作流中,artist 字段会留空。因此,在显示版本时,能够首先检查 artist 字段是一项有用的功能,如果发现此字段未设置,则回退到 created_by 字段。我们使用 {field1|field2} 语法实现这个机制,例如:Created By: {artist|created_by}。您可以将此语法与可选字段结合使用,例如 {[Created By: ]artist|created_by}

此挂钩包含以下方法:

控制列表中显示的列表项

get_list_item_definition() 方法接受 Shotgun 实体类型,会返回一个词典,该词典控制各种列表中列表项的外观。它返回的词典具有 top_lefttop_rightbody 键,例如:

{
 "top_left": "<big>{code}</big>",
 "top_right": "{updated_at}",
 "body": "By: {created_by}<br>Description: {description}"
}

控制顶部详细信息区域

get_main_view_definition() 方法接受 Shotgun 实体类型,会返回一个具有 titlebody 键的词典。这些值控制详细信息区域中对象的外观,例如:

{
 "title": "{type} {code}",
 "body": "By: {created_by}<br>Description: {description}"
}

控制“信息”(Info)选项卡中显示的字段

get_all_fields() 方法返回给定实体在“信息”(Info)选项卡上呈现时要显示的字段列表。

配置动作

动作是对一段 Shotgun 数据执行操作的代码片段。例如:

  • 一个为给定 Shotgun 版本启动 RV 的动作
  • 一个让用户可指派自己执行给定任务的动作
  • 一个将 Shotgun 发布加载到 Maya 中作为 Maya 参考的动作。

动作的实际负载在“动作挂钩”中定义。定义动作逻辑后,您可以在应用配置中将该动作映射到 Shotgun 对象。这些动作的映射关系可能类似如下:

action_mappings:
  PublishedFile:
  - actions: [reference, import]
    filters: {published_file_type: Maya Scene}
  - actions: [texture_node]
    filters: {published_file_type: Rendered Image}
  Task:
  - actions: [assign_task]
    filters: {}
  Version:
  - actions: [play_in_rv]
    filters: {}

在上面的示例中,我们使用了 referenceimporttexture_nodeassign_taskplay_in_rv 动作。然后,我们将这些动作映射到各种 Shotgun 对象和条件。例如,我们让所有 Maya 场景类型的发布都显示 import 动作。

将对象加载到面板中时,会读入并分析上面的动作配置。接下来确定当前对象适合的动作列表,然后执行 generate_actions() 挂钩方法。给定实体的 Shotgun 数据将在此时传递给挂钩,这样挂钩代码便可判断是否可以为这个特定的 Shotgun 对象运行该动作。这种方法让每个挂钩可在显示前运行检查。例如,play_in_rv 挂钩可能只有在本地有可用媒体时才有意义 - 配置中设置的动作映射会告诉面板为给定 Shotgun 实体启用哪些动作,但是这些动作可能不会全部显示,因为 generate_actions() 方法可能会判定某些动作不适合这个给定对象。

generate_actions() 方法返回的动作将显示在动作菜单上,当用户单击该菜单时,会调用 execute_action() 挂钩方法运行动作。

对于面板支持的每个应用程序,都有一个动作挂钩来执行合适的动作。例如,在 Maya 这样的应用程序中,默认挂钩将执行 referenceimporttexture_node 动作,每个动作执行特定的 Maya 命令,将发布导入当前的 Maya 场景中。与所有挂钩一样,我们完全可以改写和更改这些设置,还可根据内置挂钩创建派生挂钩,这样不必复制大量代码就能轻松向内置挂钩中添加其他动作。

面板使用 Toolkit 第二代挂钩界面,具有更强的灵活性。此挂钩的格式采用经过改进的语法。您可以在默认配置设置中查看,语法类似如下:

actions_hook: '{self}/tk-maya_actions.py'

{self} 关键字指示 Toolkit 在应用的 hooks 文件夹中查找挂钩。如果您要使用自己的执行改写此挂钩,请将值更改为 {config}/panel/maya_actions.py。这将指示 Toolkit 使用您的配置文件夹中称为 hooks/panel/maya_actions.py 的挂钩。

有关详细信息,请参见应用随附的挂钩文件。挂钩还会利用继承性,这意味着您不需要改写挂钩中的所有内容,而是可以更轻松地用各种方式对默认挂钩进行扩展或补充,使挂钩更易于管理。

通过在挂钩中运用继承性,您可以像下面这样向默认挂钩中添加附加动作:

import sgtk
import os

# toolkit will automatically resolve the base class for you
# this means that you will derive from the default hook that comes with the app
HookBaseClass = sgtk.get_hook_baseclass()

class MyActions(HookBaseClass):

    def generate_actions(self, sg_data, actions, ui_area):
        """
        Returns a list of action instances for a particular object.
        The data returned from this hook will be used to populate the 
        actions menu.

        The mapping between Shotgun objects and actions are kept in a different place
        (in the configuration) so at the point when this hook is called, the app
        has already established *which* actions are appropriate for this object.

        This method needs to return detailed data for those actions, in the form of a list
        of dictionaries, each with name, params, caption and description keys.

        Because you are operating on a particular object, you may tailor the output 
        (caption, tooltip etc) to contain custom information suitable for this publish.

        The ui_area parameter is a string and indicates where the publish is to be shown. 

        - If it will be shown in the main browsing area, "main" is passed. 
        - If it will be shown in the details area, "details" is passed.

        :param sg_data: Shotgun data dictionary with all the standard publish fields.
        :param actions: List of action strings which have been defined in the app configuration.
        :param ui_area: String denoting the UI Area (see above).
        :returns List of dictionaries, each with keys name, params, caption, group and description
        """

        # get the actions from the base class first
        action_instances = super(MyActions, self).generate_actions(sg_data, actions, ui_area)

        if "my_new_action" in actions:
            action_instances.append( {"name": "my_new_action",
                                      "params": None,
                                      "group": "Pipeline Utils",
                                      "caption": "My New Action",
                                      "description": "My New Action."} )

        return action_instances

    def execute_action(self, name, params, sg_data):
        """
        Execute a given action. The data sent to this be method will
        represent one of the actions enumerated by the generate_actions method.

        :param name: Action name string representing one of the items returned by generate_actions.
        :param params: Params data, as specified by generate_actions.
        :param sg_data: Shotgun data dictionary with all the standard publish fields.
        :returns: No return value expected.
        """

        if name == "my_new_action":
            # do some stuff here!

        else:
            # call base class implementation
            super(MyActions, self).execute_action(name, params, sg_data)

然后,我们可以在配置中将这个新动作绑定到一组发布类型:

action_mappings:
  PublishedFile:
  - actions: [reference, import, my_new_action]
    filters: {published_file_type: Maya Scene}
  Version:
  - actions: [play_in_rv]
    filters: {}

按上面所示从挂钩派生的自定义挂钩代码只需要包含实际添加的业务逻辑,因此维护和更新起来更加简单。

相关应用和文档

加载器

使用 Shotgun 加载器可以快速简要了解和浏览已发布到 Shotgun 的文件。通过一个可搜索的树视图导航系统可以轻松快速地到达您要查找的任务、镜头或资产,之后,加载器显示相应项目的所有发布的缩略图式概况。通过可配置的挂钩,您便可以轻松地在您的当前场景中引用或导入发布。

发布

通过发布应用,美工人员可以发布他们的作品,以便其可供下游的美工人员使用。它支持在美工人员的内容创建软件中以传统方式发布工作流,以及在磁盘上单独发布任何文件。在内容创建软件中操作并使用基本 Shotgun 集成时,该应用将自动发现并显示项目以供美工人员发布。对于较复杂的生产需求,工作室可以编写自定义发布插件来推动美工人员工作流。

Shotgun 工作文件

此应用程序构成了在 Shotgun Pipeline Toolkit 中进行文件管理的基础。它允许您在各种 Shotgun 实体之间快速跳转,并让您快速开始工作。由于该应用程序在后台管理路径,因此无需指定路径。该应用程序会帮助您管理工作区中的工作文件,这样,您可以轻松地与其他人共享您的工作内容。

管理员手册

这是 Shotgun 集成的管理员手册。

开发手册

这是 Shotgun 集成的开发手册。

用户手册

这是 Shotgun 集成的用户手册。

安装和更新

将此应用添加到 Shotgun Pipeline Toolkit

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

> tank Project XYZ install_app asset tk-maya tk-multi-shotgunpanel

更新至最新版本

如果您已在某个项目中安装了此应用,要获取最新版本,可运行 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-multi-shotgunpanel

特殊要求

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

配置

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

action_mappings

类型:dict

默认值:{u'PublishedFile': [{u'filters': {}, u'actions': [u'publish_clipboard']}], u'Task': [{u'filters': {}, u'actions': [u'assign_task', u'task_to_ip']}], u'Version': [{u'filters': {}, u'actions': [u'quicktime_clipboard', u'sequence_clipboard', u'add_to_playlist']}]}

说明:将 Shotgun 对象与动作关联。动作全部在动作挂钩内定义,有些动作默认即可使用,除此以外,您也可以根据需要添加自己的动作。

enable_context_switch

类型:bool

说明:此标志控制是否显示上下文切换用户界面。

actions_hook

类型:hook

默认值:{self}/general_actions.py

说明:此挂钩包含用于动作管理的所有方法。

shotgun_fields_hook

类型:hook

默认值:{self}/shotgun_fields.py

说明:此挂钩控制值的呈现方式。

关注

0 评论

登录写评论。