应用程序启动器

启动应用程序

启动应用程序并初始化 Shotgun Pipeline Toolkit。
最新版本:v0.10.0 (Prod)
我们的版本号遵循语义化版本标准。
系统名称:tk-multi-launchapp

请注意:本文档介绍仅当控制 Toolkit 配置时可用的功能。有关更多详细信息,请参见 Shotgun 集成用户手册
概述
文档
      工作方式
            在启动时使用命令行参数
            设置环境变量并自动化启动时的行为
            启动尚无插件的应用程序
      技术细节
            3DSMax
                  额外配置
            Hiero
            Maya
                  额外配置
            MotionBuilder
                  额外配置
            Nuke
                  额外配置
            Photoshop
                  额外配置
安装、更新和开发
配置选项

通过启动应用可以轻松地从 Shotgun 或其他环境跳转到某个应用程序中。它支持许多常见的应用程序,例如 Maya、Nuke 和 Photoshop 等。请参见相应文档了解完整列表。我们在构建适用于新应用程序的插件的同时,定期为这些应用程序添加支持。启动应用程序时,会设置 Shotgun 上下文(当前工作区),以及初始化并启动 Shotgun Pipeline Toolkit。如果您在使用用户工作沙盒,它也会在磁盘上创建文件夹。该应用启动后,将显示一个 Shotgun 菜单,焦点置于您在 Shotgun 中选择的上下文,此时您可以在文件系统的适当部分立即开始工作。

文档

此应用提供了一个快捷方式,让您可轻松从 Shotgun 跳转至任何支持的应用程序。它会根据您的配置选择为 Shotgun 中的各种实体创建 Shotgun 动作项。

工作方式

当您在实体上单击鼠标右键或使用 Shotgun 动作菜单或配置齿轮菜单时,Shotgun 会根据您的配置选项显示菜单项。

例如,下面这张屏幕截图来自一个站点,该站点的配置使用此应用三次,分别实现 Maya、Nuke 和 Photoshop 的菜单。

Tank 动作菜单

目前支持的应用程序和插件包括:

  • 3DSMax
  • Hiero
  • Maya
  • MotionBuilder
  • Nuke
  • Photoshop
  • Mari
  • Houdini
  • Softimage
  • Flame

启动时使用命令行参数

许多应用程序具有可调用的命令行选项,用于选择不同的应用程序版本(例如 Nuke 与 NukeX)或指定其他各种用法。启动器应用针对每个操作系统有一个可进行这种配置的“args”设置。例如,如果您在此设置中加入“--nukex”,启动器会将它添加到命令行启动,并运行 NukeX 而不是常规的 Nuke:

示例:启动 NukeX

launch_nuke:
  engine: tk-nuke
  extra: {}
  hook_app_launch: default
  hook_before_app_launch: default
  linux_args: '--nukex'
  linux_path: '@nuke_linux'
  location: {name: tk-multi-launchapp, type: app_store, version: v0.2.15}
  mac_args: '--nukex'
  mac_path: '@nuke_mac'
  menu_name: Launch Nuke
  windows_args: '--nukex'
  windows_path: '@nuke_windows'

设置环境变量并自动化启动时的行为

应用程序常常需要设置某些环境变量、插件路径等,以便能在工作室的工作流中正常工作。启动器应用可通过“before_app_launch”这个挂钩帮助解决此问题。使用此挂钩,您可以定义一段代码,让它在应用程序每次启动时运行。默认情况下,“before_app_launch”这个挂钩只是一个简单的通道,不执行任何操作,但我们可以按照此文档中的说明改写它。

例如,如果您使用 Zync Render,需要同时在 $PYTHONPATH 和 $XBMLANGPATH 中都包含 Zync Maya 插件目录。要让启动器应用设置这些环境变量,请按如下所示为“before_app_launch”挂钩更新几行代码:

示例:设置环境变量

def execute(self, **kwargs):
    """
    The execute functon of the hook will be called to start the required application        
    """

    # Example to show how to set env vars on Maya launch

    # Append the desired path to the existing $PYTHONPATH to ensure
    # everything upstream still works
    os.environ["PYTHONPATH"] = os.environ["PYTHONPATH"] + os.pathsep + "~/Library/zync/zync-maya"

    # Set $XBMLANGPATH to the desired path, may need to append it as
    # with $PYTHONPATH if already defined in your pipeline
    os.environ["XBMLANGPATH"] = "~/Library/zync/zync-maya"

您还可以使用“before_app_launch”自动化其他行为,包括 Shotgun 更新。例如,您可以按如下所示,配置启动器应用在每次启动时(当然前提是从任务进行启动)更新任务状态(在本例中更新为“正在进行”):

示例:自动化任务状态更新

def execute(self, **kwargs):
    """
    The execute functon of the hook will be called to start the required application        
    """

    # If there is a Task in the context, set its status to 'ip'

    if self.parent.context.task:
        task_id = self.parent.context.task['id']
        data = {
            'sg_status_list':'ip'
        }
        self.parent.shotgun.update("Task", task_id, data)

您可以想象到,这其中有许多可能性,而启动器应用的目的在于提供工作流所需的灵活性。

启动尚无插件的应用程序

您还可以使用启动器应用启动尚无 Toolkit 插件的应用程序。在这种情况下,会在磁盘上为执行启动的镜头、任务或资产创建文件夹,然后启动应用程序。但是,应用程序启动后不会运行代码,应用程序内也不会出现 Shotgun 菜单。这意味着,您可以从 Shotgun 内启动 Toolkit 尚不支持的应用程序。

为此,需要为应用配置要启动的应用程序的路径,但保留插件选项为空字符串。

技术细节

3DSMax

此应用会自动向 3DSMax 命令行添加一个名为 init_tank.ms 的 MaxScript,3DSMax 会在引导过程中运行它。

3DSMax 引导时,会发生以下情况:

  1. 3DSMax 将在启动时运行 init_tank.ms
  2. init_tank.ms 确保有可用的 Python 解释器并运行 tank_startup.py
  3. 使用 Shotgun Toolkit 上下文 API,从 Shotgun 传递的实体 ID 将被转换为 Toolkit 上下文。
  4. 启动适当的插件(通过 tank.system.start_engine())并传入该上下文。插件将处理剩下的事情。

额外配置

3DSMax 插件不需要额外配置

Hiero

Maya

此应用会向 Maya 注册一个 userSetup.py 自动启动脚本,Maya 会在引导过程中调用它。

Maya 引导时,会发生以下情况:

  1. Maya 开始执行 userSetup.py 启动脚本
  2. 使用 Shotgun Toolkit 上下文 API,从 Shotgun 传递的实体 ID 将被转换为 Toolkit 上下文。
  3. 启动适当的插件(通过 tank.system.start_engine())并传入该上下文。插件将处理剩下的事情。

额外配置

Maya 插件不需要额外配置

MotionBuilder

此应用会向 MotionBuilder 注册一个 init_tank.py 自动启动脚本,MotionBuilder 会在引导过程中调用它。

MotionBuilder 引导时,会发生以下情况:

  1. MotionBuilder 开始执行 init_tank.py 启动脚本
  2. 使用 Shotgun Toolkit 上下文 API,从 Shotgun 传递的实体 ID 将被转换为 Toolkit 上下文。
  3. 启动适当的插件(通过 tank.system.start_engine())并传入该上下文。插件将处理剩下的事情。

额外配置

MotionBuilder 插件不需要额外配置

Nuke

此应用会向 Nuke 注册一个 menu.py 自动启动脚本,Nuke 会在引导过程中调用它。

Nuke 引导时,会发生以下情况:

  1. Nuke 开始执行 menu.py 启动脚本
  2. 使用 Shotgun Toolkit 上下文 API,从 Shotgun 传递的实体 ID 将被转换为 Toolkit 上下文。
  3. 启动适当的插件(通过 tank.system.start_engine())并传入该上下文。插件将处理剩下的事情。

额外配置

Nuke 插件不需要额外配置

Photoshop

此应用会使用 Adobe Extension Manager 安装或确保已安装 Tank 插件。

Photoshop 引导时,会发生以下情况:

  1. Photoshop 将开始执行 Tank 插件
  2. 使用 Shotgun Toolkit 上下文 API,从 Shotgun 传递的实体 ID 将被转换为 Toolkit 上下文。
  3. 启动适当的插件(通过 tank.system.start_engine())并传入该上下文。插件将处理剩下的事情。

额外配置

如果您想使用此应用启动 Photoshop,需要在“extra”部分提供四个配置值。下面是需要根据您的系统和安装位置做出调整的配置和合理的默认值:

mac_python_path: "/usr/bin/python"
windows_python_path: "C:\\Python27\\python.exe"
mac_extension_manager_path: "/Applications/Adobe Extension Manager CS6/Adobe Extension Manager CS6.app"
windows_extension_manager_path: "C:\\Program Files (x86)\\Adobe\\Adobe Extension Manager CS6\\XManCommand.exe"

相关应用和文档

启动已发布的文件

此应用与启动器应用结合使用,并允许您右键单击已发布的文件以便在其宿主应用程序中启动它。Shotgun 将通过启动器应用启动相关的应用程序并初始化 Shotgun Pipeline Toolkit,然后最终载入文件。

管理员手册

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

用户手册

这是 Shotgun 集成的用户手册。

安装和更新

将此应用添加到 Shotgun Pipeline Toolkit

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

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

更新至最新版本

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

特殊要求

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

配置

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

linux_args

类型:str

说明:在 Linux 上要传递给应用程序的参数(字符串)。

engine

类型:str

说明:要启动的 Shotgun 插件的名称。这通常是应用程序名称加上前缀 tk,例如 tk-maya、tk-nuke、tk-photoshop 等。如果将此选项设置为空字符串,将不会启动 Toolkit 插件,这意味着您可以启动未设置 Toolkit 插件的应用程序。

mac_args

类型:str

说明:在 Mac OS X 上要传递给应用程序的参数(字符串)。

windows_path

类型:str

说明:Windows 上的应用程序可执行文件的路径。

group

类型:str

说明:此命令应归属的组的名称。

hook_before_app_launch

类型:hook

默认值:before_app_launch

说明:此挂钩在使用 hook_app_launch 之前调用。如果您不想修改应用程序的启动方式(这是一项高级用法,可通过改写 app_launch 挂钩来实现),只是想在应用启动前修改环境,可以使用此挂钩。您可能需要向设置中添加另外的工作流路径、API 或其他内容,或者指定其他要运行的脚本等。

linux_path

类型:str

说明:Linux 上的应用程序可执行文件的路径。

mac_path

类型:str

说明:Mac OS X 上的应用程序可执行文件的路径。

skip_engine_instances

类型:list

说明:要对其跳过注册软件启动器命令的插件实例的字符串名称列表。例如,如果此设置的值为 ['tk-nukestudio'],则将停止向插件注册参照相应环境中的“tk-nukestudio”插件实例的任何软件实体启动器命令。这可用于允许在给定环境没有启动器的情况下为该环境配置插件实例。这在使用 Nuke Studio 的情况下很有用,此时我们希望允许对特定环境进行上下文更改,但我们仅希望可从项目环境中启动应用程序。此设置仅影响软件实体启动器。

extra

类型:dict

说明:特定于 Shotgun 插件的额外值。这些值按 Shotgun 插件定义。请查看应用文档了解详细信息。

defer_keyword

类型:str

说明:高级参数。通过它,可对延迟文件夹的创建进行高级自定义。延迟文件夹创建功能让您可基于特定关键字创建部分子文件夹结构(请参见主文档了解详细信息)。应用启动前,默认会自动创建文件夹(例如,如果将此设置留空的话),启动器应用会传递插件的名称,作为用来创建延迟文件夹的关键字。这样做易于在文件夹创建配置中为 tk-maya、tk-nuke 等设置延迟规则。但是,如果您想为 Nuke 和 Nuke X(二者均运行 nuke 插件)设置特定的延迟文件夹结构,则需要更精细的粒度。这种情况下,就可以使用此设置改写原来只是传递插件名称的默认行为。您可以在创建延迟文件夹时传入任意字符串(例如上例中的“nuke”和“nuke_x”)。另外,如果您想在启动未定义 Toolkit 插件的应用时配合使用延迟文件夹创建功能,此参数也可派上用场 - 对于这些应用的启动实例来说,插件设置会留空,因此不会在创建延迟文件夹时传入任何插件名称。在这种情况下,您可以利用此参数控制延迟文件夹的创建。您可以使用逗号作为分隔符指定多个关键字(例如,'nuke, nuke_x')。这将为您的数据结构中延迟文件夹创建设置含有任意这些值的文件夹触发文件夹创建命令。

menu_name

类型:str

说明:Shotgun 菜单上显示的名称。

hook_app_launch

类型:hook

默认值:app_launch

说明:调用此挂钩可启动应用程序。此挂钩包含实际执行启动命令和参数的代码。如果您的工作室有自定义的启动器系统,可以很方便地改写 Tank 的默认启动行为。

versions

类型:list

说明:一个字符串列表,用于替换此应用示例的其他设置值中的 {version} 令牌。例如,如果此设置的值为 ['2012', '2013', '2014'],menu_name 的值为 'Launch Maya {version}',将会注册以下命令菜单名称:Launch Maya 2012、Launch Maya 2013 和 Launch Maya 2014。如果运行应用的插件支持的话,列表中的第一个版本将被视为默认版本。您可以使用几段版本拼在一起,像 ['(7.0)v3', '(8.0)v1'] 这样将各部分放在括号中。这几段版本字符串可通过 {v0}、{v1}、{v2}... 这样的替换令牌用在其他设置中。

scan_all_projects

类型:bool

说明:当此选项设置为 True 时,如果 use_software_entity 也为 True,将为所有项目(而不只是当前环境的项目)注册启动器。

hook_before_register_command

类型:hook

默认值:before_register_command

说明:在注册启动器命令之前调用此挂钩。它可以用于更改与启动器关联的插件实例名称(如果需要)。仅当在使用软件实体启动器时,才调用此挂钩的方法。

windows_args

类型:str

说明:在 Windows 上要传递给应用程序的参数(字符串)。

use_software_entity

类型:bool

说明:是否使用 Shotgun 软件实体注册可用 DCC 的启动命令。

group_default

类型:bool

说明:布尔值,表示此命令是否代表整个组。如果此值设置为“True”,表示这是在每个命名组只显示一个按钮的应用程序中运行和显示的命令。

icon

类型:str

默认值:{target_engine}/icon_256.png

说明:为应用程序显示的图标的路径。如果此值以 '{target_engine}' 开头,路径的其余部分将相对于插件安装的根目录。如果此值以 '{config_path}' 开头,路径的其余部分将相对于配置的根目录。路径应使用正斜杠,当您使用路径时,它们将被替换为正确的操作系统分隔符。

关注

0 评论

登录写评论。