게시된 파일 로드

로더

게시된 파일을 찾아 씬에 참조합니다.
최신 버전: v1.19.2(prod)
버전 번호의 경우 유의적 버전 표준을 따릅니다.
시스템 이름: tk-multi-loader2

참고: 이 문서에서는 툴킷 구성에 대한 제어 권한이 있는 경우에만 사용할 수 있는 기능에 대해 설명합니다. 자세한 정보는 Shotgun 통합 사용자 안내서를 참조하십시오.
개요 요약
설명서
            구성
                  트리 뷰
                  게시 필터링
                  액션이 표시되지 않을 경우
                  액션 관리
            참조
                  open_publish()
설치, 업데이트 및 개발
구성 옵션

Shotgun Loader를 사용하면 Shotgun에 게시한 파일을 신속하게 확인하고 탐색할 수 있습니다. 검색 가능한 트리 뷰 네비게이션 시스템 덕분에 원하는 태스크, 샷 또는 에셋을 빠르고 쉽게 찾을 수 있고, 찾고 나면 로더가 해당 항목의 모든 게시에 대한 개요를 기반으로 썸네일을 보여 줍니다. 그러면 구성 가능한 후크를 통해 쉽게 게시를 참조하거나 현재 씬으로 가져올 수 있습니다.

개요 동영상

다음 동영상은 해당 기능에 대한 간략한 개요를 보여 줍니다.

설명서

이 문서에서는 툴킷 구성에 대한 제어 권한이 있는 경우에만 사용할 수 있는 기능에 대해 설명합니다. 자세한 정보는 Shotgun 통합 사용자 안내서를 참조하십시오.

구성

로더는 상세하게 구성할 수 있으며 여러 가지 방법으로 설정할 수 있습니다. 다음 두 가지 주요 구성 영역이 있습니다.

  • 왼쪽 트리 뷰에 표시할 탭과 컨텐츠를 설정하는 영역
  • 다른 게시에 표시할 액션을 제어하고 실제로 수행할 액션을 제어하는 영역

다음 섹션에서는 로더를 구성할 수 있는 방법을 개괄적으로 설명합니다. 구성과 관련된 기술적 세부 사항은 이 문서에서 자세히 설명하는 별도 섹션을 참조하십시오.

트리 뷰

트리 뷰는 상세하게 구성할 수 있으며 표준 Shotgun 필터 구문을 사용하여 다양한 탭의 컨텐츠를 제어할 수 있습니다. 각 탭은 계층으로 그룹 지정된 단일 Shotgun API 쿼리로 구성됩니다. 임의의 필터를 추가하여 표시할 항목을 제어할 수 있으며 특수 키워드 {context.entity}, {context.project}, {context.project.id}, {context.step}, {context.task}{context.user}를 사용하여 현재 컨텍스트를 기반으로 쿼리의 범위를 지정할 수 있습니다. 이러한 각 키워드는 관련 컨텍스트 정보로 대체되거나 컨텍스트의 해당 부분이 입력되지 않은 경우 또는 id, type 및 name 키가 포함된 표준 Shotgun 링크 사전인 경우에는 None으로 대체됩니다.

기본적으로 로더는 현재 프로젝트에 속한 에셋 및 샷을 표시합니다. 다시 구성하면 다른 프로젝트 또는 특정 에셋 라이브러리 프로젝트 등의 항목을 표시하는 등 쉽게 확장할 수 있습니다. 예를 들어 필터를 사용하여 특정 승인 상태의 항목만 표시하거나 상태별 또는 다른 Shotgun 필드별로 그룹 항목을 표시할 수도 있습니다. 다음은 트리 뷰 탭을 설정할 수 있는 방법을 보여 주는 몇 가지 샘플 구성 설정입니다.

# An asset library tab which shows assets from a specific
# Shotgun project
caption: Asset Library
entity_type: Asset
hierarchy: [sg_asset_type, code]
filters:
- [project, is, {type: Project, id: 123}]

# Approved shots from the current project
caption: Shots
hierarchy: [project, sg_sequence, code]
entity_type: Shot
filters:
- [project, is, '{context.project}']
- [sg_status_list, is, fin]

# All assets for which the current user has tasks assigned
caption: Assets
entity_type: Task
hierarchy: [entity.Asset.sg_asset_type, entity, content]
filters:
- [entity, is_not, null]
- [entity, type_is, Asset]
- [task_assignees, is, '{context.user}']
- [project, is, '{context.project}']

게시 필터링

Shotgun에서 게시 데이터를 로드할 때 로더가 수행하는 게시 쿼리에 Shotgun 필터를 적용할 수 있습니다. 이 필터는 publish_filters 매개변수를 통해 제어되며 승인되지 않은 게시 또는 연결된 리뷰 버전이 승인되지 않은 게시를 숨기는 작업 등에 사용할 수 있습니다.

액션이 표시되지 않을 경우

로더는 각 엔진별로 다양한 액션이 제공됩니다. 예를 들어 Nuke의 경우 "스크립트 가져오기"와 "읽기 노드 만들기"의 두 가지 액션이 있습니다. 액션은 후크에 정의됩니다. 즉, 원하는 경우 동작을 수정하거나 액션을 추가할 수 있습니다. 그런 다음 로더의 구성에서 이러한 액션을 특정 게시 유형에 바인딩합니다. 액션을 게시 유형에 바인딩하는 것은 기본적으로 액션이 로더 내부의 모든 해당 유형의 항목에 대한 액션 메뉴에 표시됨을 의미합니다.

예를 들어 기본적으로 Nuke의 매핑은 다음과 같이 설정됩니다.

action_mappings:
  Nuke Script: [script_import]
  Rendered Image: [read_node]

액션 메뉴가 표시되지 않을 경우 사용 중인 게시 유형에 다른 이름을 선택했기 때문일 수 있습니다. 이 경우 구성으로 이동하고 해당 유형이 로더 내부에 표시되도록 추가합니다.

액션 관리

로더가 지원하는 각 응용프로그램에는 해당 응용프로그램에 대해 지원되는 액션을 구현하는 액션 후크가 있습니다. 예를 들어 Maya를 사용하면 기본 후크는 각각 특정 Maya 명령을 수행하는 reference, importtexture_node 액션을 구현하여 현재 Maya 씬으로 컨텐츠를 가져옵니다. 모든 후크와 마찬가지로 재정의 및 변경이 완벽히 가능하고, 기본 제공 후크로부터 파생되는 후크를 생성하는 것 역시 가능하기 때문에 많은 코드를 복제할 필요 없이 기본 제공 후크에 다른 액션을 쉽게 추가할 수 있습니다.

액션 후크에서 액션 목록을 정의한 후에는 이러한 액션을 게시 파일 유형에 바인딩할 수 있습니다. 예를 들어 이름이 "Maya Scene"인 파이프라인에 게시 파일 유형이 있는 경우 구성에서 이 유형을 후크에 정의된 referenceimport 액션에 바인딩할 수 있습니다. 이를 통해 툴킷은 표시되는 각 Maya Scene 게시에 참조 및 가져오기 액션을 추가합니다. 이렇게 게시 유형을 실제 후크에서 분리하면 기본 구성과 함께 제공되는 설정이 아닌 다른 게시 유형 설정을 사용할 수 있도록 로더를 쉽게 재구성할 수 있습니다.

로더는 툴킷의 2세대 후크 인터페이스를 사용하기 때문에 그 유연성이 뛰어납니다. 이 후크 형식은 향상된 구문을 사용합니다. 로더용으로 설치된 기본 구성 설정에서 다음과 같은 후크를 볼 수 있습니다.

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

{self} 키워드를 통해 툴킷은 앱 hooks 폴더에서 후크를 찾을 수 있습니다. 이 후크를 사용자 구현으로 재지정하려면 값을 {config}/loader/my_hook.py로 변경합니다. 이렇게 하면 툴킷이 구성 폴더에 있는 hooks/loader/my_hook.py라는 후크를 사용하게 됩습니다.

로더가 사용하고 있는 또 다른 2세대 후크 기능은 더 이상 execute() 메서드를 필요로 하지 않습니다. 대신, 후크는 일반 클래스와 더 비슷하며 함께 그룹으로 지정하는 데 유용한 메서드 컬렉션을 포함할 수 있습니다. 로더의 경우 액션 후크는 다음 두 가지 메서드를 구현해야 합니다.

def generate_actions(self, sg_publish_data, actions, ui_area)
def execute_multiple_actions(self, actions)

자세한 정보는 앱과 함께 제공되는 후크 파일을 참조하십시오. 후크는 또한 상속을 이용합니다. 즉, 후크의 모든 사항을 재지정할 필요는 없지만 다양한 방식으로 기본 후크를 좀 더 쉽게 확장하거나 확대하여 보다 쉽게 후크를 관리할 수 있습니다.

v1.12.0 이전 버전에서는 응용프로그램이 execute_action 후크를 호출하여 액션을 실행했습니다. 최신 버전에서는 execute_multiple_actions 후크를 호출합니다. 기존 후크와의 호환성을 제공하기 위해 execute_multiple_actions 후크는 실제로 제공된 각각의 액션에 대해 execute_action을 호출합니다. 응용프로그램이 v1.12.0 이상으로 업그레이드 후 execute_multiple_actions 후크가 정의되지 않았다고 보고하는 경우 환경의 actions_hook 설정이 기본 제공 후크 {self}/{engine_name}_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_publish_data, actions, ui_area):
        """
        Returns a list of action instances for a particular publish.
        This method is called each time a user clicks a publish somewhere in the UI.
        The data returned from this hook will be used to populate the actions menu for a publish.

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

        The hook should return at least one action for each item passed in via the
        actions parameter.

        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 publish, 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.
        - If it will be shown in the history area, "history" is passed.

        Please note that it is perfectly possible to create more than one action "instance" for
        an action! You can for example do scene introspection - if the action passed in
        is "character_attachment" you may for example scan the scene, figure out all the nodes
        where this object can be attached and return a list of action instances:
        "attach to left hand", "attach to right hand" etc. In this case, when more than
        one object is returned for an action, use the params key to pass additional
        data into the run_action hook.

        :param sg_publish_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 and description
        """

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

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

        return action_instances

    def execute_action(self, name, params, sg_publish_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_publish_data: Shotgun data dictionary with all the standard publish fields.
        :returns: No return value expected.
        """

        # resolve local path to publish via central method
        path = self.get_publish_path(sg_publish_data)

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

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

그런 다음 이 새 액션을 구성의 게시 유형 세트에 바인딩할 수 있습니다.

action_mappings:
  Maya Scene: [import, reference, my_new_action]
  Maya Rig: [reference, my_new_action]
  Rendered Image: [texture_node]

위의 그림과 같이 후크에서 파생된 커스텀 후크 코드는 유지 관리 및 업데이트가 보다 쉽도록 실제 추가된 비즈니스 로직만 포함하면 됩니다.

참조

다음 메서드는 앱 인스턴스에서 사용할 수 있습니다.

open_publish()

'파일 열기' 스타일 버전의 로더를 제공하여 사용자가 게시를 선택할 수 있습니다. 그러면 선택한 게시가 반환됩니다. 이 모드에서 실행할 때 앱에 구성된 일반 액션은 허용되지 않습니다.

app.open_publish( str title, str action, list publish_types )

매개변수 및 반환값

  • str title - 게시 열기 대화상자에 표시할 제목입니다.
  • str action - '열기' 버튼에 사용할 액션 이름입니다.
  • list publish_types - 사용 가능한 게시 목록을 필터링하는 데 사용할 게시 유형 목록입니다. 이 값이 비어 있거나 None인 경우 모든 게시가 표시됩니다.
  • 반환값: 사용자가 선택한 Shotgun 엔티티 사전 목록을 반환합니다.

>>> engine = sgtk.platform.current_engine()
>>> loader_app = engine.apps.get["tk-multi-loader2"]
>>> selected = loader_app.open_publish("Select Geometry Cache", "Select", ["Alembic Cache"])
>>> print selected

관련 앱 및 문서

씬 분할

Scene Breakdown 앱은 사용자가 씬에서 로드한(참조한) 항목 목록을 보여 주고, 오래된 항목을 표시해 줍니다. 이 개요에서 여러 객체를 선택하고 업데이트(update) 버튼을 클릭하면 선택한 모든 항목이 최근에 게시된 버전을 사용하도록 업데이트됩니다.

게시

아티스트는 Publish 앱을 통해 아티스트 다운스트림에서 사용할 수 있도록 작업물을 게시할 수 있습니다. 아티스트의 컨텐츠 생성 소프트웨어 내에서 기존 게시 워크플로우를 지원하고 디스크상의 파일을 독립 실행형으로 게시할 수 있습니다. 컨텐츠 생성 소프트웨어에서 작업하거나 기본 Shotgun 통합을 사용하여 작업할 때 이 앱은 아티스트가 게시할 수 있는 항목을 자동으로 검색해 표시해 줍니다. 보다 정교한 프로덕션이 필요한 경우 스튜디오는 커스텀 게시 플러그인을 작성하여 아티스트 워크플로우를 진행할 수 있습니다.

Shotgun 패널

Shotgun 패널을 사용하면 포함된 패널에서 Shotgun 정보에 신속하게 액세스할 수 있습니다. 이를 통해 사용자가 현재 작업 중인 태스크에 관한 정보에 쉽게 액세스하고, 액티비티 스트림, 노트, 태스크, 버전 및 게시에 즉시 액세스할 수 있습니다. 다른 팀원의 리뷰를 위해 전송된 버전을 재생할 수 있고, 응용프로그램 내에서 직접 노트에 회신할 수 있습니다. 파이프라인에서 종속성 정보를 트래킹하는 경우에는 Shotgun 패널에서도 이 정보를 직접 찾을 수 있습니다.

Shotgun Workfiles

이 응용프로그램은 Shotgun Pipeline Toolkit에서 파일 관리의 기초를 형성합니다. 이를 통해 여러 Shotgun 엔티티 사이를 빠르게 이동하고 작업을 신속하게 시작할 수 있습니다. 응용프로그램이 백그라운드에서 관리해 주기 때문에 경로를 지정할 필요가 없습니다. 이 응용프로그램을 사용하면 작업 영역 내에서 작업 파일을 관리하고 다른 사람들과 작업을 쉽게 공유할 수 있습니다.

관리자 안내서

Shotgun 통합에 대한 관리자 안내서입니다.

Shotgun 파이프라인 튜토리얼

이 문서에서는 Shotgun 통합 및 툴킷 플랫폼을 사용하여 단순한 전체 파이프라인을 설정하려는 TD(기술 디렉터)를 위해 단계별 튜토리얼을 제공합니다. 이 튜토리얼의 목표는 사용자가 스튜디오의 요구 사항에 맞게 Shotgun 기본 파이프라인을 빌드하고 커스터마이즈하는 방법을 익히고 통합 및 플랫폼의 기본 특성을 이해할 수 있도록 지원하는 것입니다.

사용자 안내서

Shotgun 통합에 대한 사용자 안내서입니다.

설치 및 업데이트

Shotgun Pipeline Toolkit에 이 앱 추가

이 앱을 이름이 asset인 환경에 있는 프로젝트 XYZ에 추가하고 싶다면 다음 명령을 실행합니다.

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

최신 버전으로 업데이트

프로젝트에 이 항목이 이미 설치되어 있는 경우 최신 버전을 얻으려면 update 명령을 실행할 수 있습니다. 특정 프로젝트와 함께 제공되는 tank 명령을 탐색하여 다음과 같이 실행할 수 있습니다.

> cd /my_tank_configs/project_xyz
> ./tank updates

또는 스튜디오 tank 명령을 실행하고 업데이트 확인을 실행할 프로젝트 이름을 지정할 수 있습니다.

> tank Project XYZ updates

협업 및 개선

Shotgun Pipeline Toolkit에 액세스할 수 있다면 모든 앱, 엔진 및 프레임워크가 저장 및 관리되는 Github에서 그 소스 코드에도 액세스할 수 있습니다. 이러한 항목을 자유롭게 개선하여 향후 독립적인 개발을 위한 기반으로 사용하고 변경 후 다시 풀 리퀘스트를 제출하거나, 아니면 그냥 조금만 손을 보고 어떻게 빌드되었는지, 툴킷이 어떻게 작동하는지 확인해 보십시오. https://github.com/shotgunsoftware/tk-multi-loader2에서 이 코드 리포지토리에 액세스할 수 있습니다.

특별 요구 사항

  • 이 기능을 이용하려면 Shotgun Pipeline Toolkit Core API 버전 v0.18.45 이상이 필요합니다.

구성

아래는 사용되는 모든 구성 설정을 요약한 것입니다. 해당 설정은 이 앱 또는 엔진을 활성화하려는 환경 파일에서 정의해야 합니다.

publish_filters

유형: list

설명: 게시 목록에 적용할 추가 Shotgun 필터 목록입니다. 이 설정은 다른 필터링을 수행하기 전에 적용되어 특정 상태의 항목을 숨길 수 있습니다.

entity_mappings

유형: dict

설명: 엔티티 유형을 액션과 연결합니다. 모든 액션은 액션 후크 내에 정의됩니다.

filter_publishes_hook

유형: hook

기본값: {self}/filter_publishes.py

설명: 필요한 경우 현재 위치에 대해 Shotgun에서 반환된 게시의 로우 목록을 필터링할 수 있는 후크를 지정합니다.

action_mappings

유형: dict

설명: 게시된 파일 유형을 액션과 연결합니다. 모든 액션은 액션 후크 내에 정의됩니다.

menu_name

유형: str

기본값: Load

설명: Shotgun 메뉴에 표시할 이름입니다.

entities

유형: list

기본값: [{u'caption': u'Project', u'publish_filters': [], u'type': u'Hierarchy', u'root': u'{context.project}'}, {u'publish_filters': [], u'entity_type': u'Task', u'hierarchy': [u'entity', u'content'], u'caption': u'My Tasks', u'filters': [[u'task_assignees', u'is', u'{context.user}'], [u'project', u'is', u'{context.project}']], u'type': u'Query'}]

설명: 이 설정은 왼쪽에 표시될 다양한 탭을 정의합니다. 각 탭은 일부 Shotgun 필드별로 그룹 지정되어 트리를 형성하는 Shotgun 쿼리를 나타냅니다. 이 설정은 사전 목록입니다. 목록의 각 사전은 하나의 탭을 정의합니다. type 키가 'Hierarchy'로 설정된 사전에는 탭 이름을 지정하는 caption 키와 표시할 프로젝트 계층의 루트 경로를 지정하는 root 키가 있어야 합니다. type 키가 'Query'로 설정된 사전에는 탭 이름을 지정하는 caption 키와 표시할 Shotgun 엔티티 유형을 지정하는 entity_type 키가 있어야 합니다. filters는 표준 API Shotgun 필터 목록입니다. hierarchy는 트리의 그룹 지정을 정의하는 Shotgun 필드 목록입니다. 선택적으로 Shotgun API 필터를 포함하는 publish_filters 키를 지정하여 게시 목록이 기본 뷰에 로드될 때 적용할 수 있습니다.

actions_hook

유형: hook

기본값: {self}/{engine_name}_actions.py

설명: 액션 관리에 대한 모든 메서드가 포함된 후크입니다.

title_name

유형: str

기본값: Loader

설명: UI 대화상자의 제목에 표시할 이름입니다.

download_thumbnails

유형: bool

기본값: True

설명: Shotgun에서 썸네일 다운로드 여부를 제어합니다. 로더의 사용자 환경을 크게 향상시킬 수 있기 때문에 썸네일을 다운로드하는 것이 좋지만 대역폭 또는 인프라 제한으로 인해 어려운 경우가 있을 수 있습니다.

팔로우

0 댓글

댓글을 남기려면 로그인하세요.