ShotGrid Toolkit 엔진이란?

td.junopark·2024년 6월 11일

ShotGrid Toolkit

목록 보기
1/5
post-thumbnail

ShotGrid에서는 DCC 내에서 ShotGrid의 기능을 활용할 수 있도록 ShotGrid Toolkit에 각 DCC 별 엔진을 통합하는 것을 지원하고 있다.

그렇다면 이 ShotGrid Toolkit 엔진은 무엇인지, 왜 사용하는지에 대해 알아보자.

목차

ShotGrid Toolkit 엔진이란?

ShotGrid Toolkit엔진애플리케이션ShotGrid 플랫폼 간의 통합을 관리하는 중요한 구성 요소이다.

엔진은 특정 애플리케이션(예: Maya, Nuke, Houdini 등) 내에서 ShotGrid Toolkit 앱을 실행하고 통신할 수 있도록 하는 인터페이스 역할을 한다.

엔진을 통해 다양한 툴과 기능이 애플리케이션 내에서 원활하게 작동하며, ShotGrid와의 상호작용을 가능하게 한다.

주요 기능 및 역할

  • 애플리케이션 통합: 각 엔진은 특정 소프트웨어 애플리케이션에 맞게 설계되어 해당 애플리케이션 내에서 ShotGrid Toolkit 앱을 실행할 수 있게 한다. 예를 들어, Maya 엔진(tk-maya)은 Maya에서 작동하는 Toolkit 앱을 관리한다.

  • 환경 설정 및 초기화: 파일 경로 설정, 구성 파일 로드, 사용자 인터페이스 초기화 등의 역할을 한다.

  • 앱 실행 및 관리: 엔진은 여러 Toolkit 앱을 로드하고 실행할 수 있으며, 이러한 앱 간의 통신을 관리한다. 이를 통해 사용자는 하나의 통합된 인터페이스 내에서 여러 ShotGrid 기능을 사용할 수 있다.

  • 이벤트 처리: 엔진은 애플리케이션 내의 이벤트(예: 파일 열기, 저장, 닫기 등)를 감지하고 이에 따라 적절한 액션을 수행한다. 이를 통해 ShotGrid와의 동기화가 실시간으로 이루어진다.

  • 사용자 인터페이스 통합: 엔진은 애플리케이션의 사용자 인터페이스에 ShotGrid 기능을 통합한다.
    예를 들어, Maya의 메뉴 바에 ShotGrid 관련 메뉴를 추가하거나, Nuke의 인터페이스에 ShotGrid 패널을 삽입하는 등의 작업을 수행할 수 있다.

주요 엔진 예시

tk-maya: Autodesk사의 Maya를 위한 엔진
tk-nuke: The Foundry사의 Nuke를 위한 엔진
tk-houdini: SideFX사의 Houdini를 위한 엔진
tk-photoshopcc: Adobe사의 Photoshop을 위한 엔진

설정 및 커스터마이징

ShotGrid Toolkit의 엔진은 구성 파일(config.yml)을 통해 설정할 수 있으며, 필요에 따라 커스터마이징이 가능하다.

이러한 설정 파일을 통해 각 엔진의 동작 방식을 조정하고, 특정 프로젝트나 스튜디오의 요구에 맞게 최적화할 수 있다.

config.yml에 대한 자세한 내용은 ShotGrid Toolkit에 엔진, 앱 등록하기를 참고

엔진 개발 및 확장

ShotGrid Toolkit은 오픈소스이기 때문에, 사용자나 개발자가 필요에 따라 새로운 엔진을 개발하거나 기존 엔진을 확장할 수 있다.
이를 통해 다양한 애플리케이션과의 통합을 더욱 유연하게 관리할 수 있다.

ShotGrid Toolkit의 엔진은 애플리케이션과 ShotGrid 간의 효율적인 통합을 위해 필수적인 요소이며, 이를 통해 사용자들은 더 나은 작업 흐름생산성을 경험할 수 있다.

엔진의 구성요소

ShotGrid Toolkit 엔진은 여러 파일과 스크립트로 구성되어 있으며, 이들은 각각 엔진의 동작과 기능을 구성한다.
엔진에 구성하는 기본적인 스크립트에 대해 알아보자.

파일 구성

  • startup.py

    • 엔진의 초기화와 시작점을 정의하는 파일이다. 엔진이 로드될 때 가장 먼저 실행된다.

    • 주요 역할:

      • 환경 변수 설정
      • 초기 변수 설정
      • 기본 설정 로드
  • engine.py

    • 엔진의 핵심 로직을 포함하는 파일로, 애플리케이션과의 통신을 관리한다.

    • 주요 클래스 및 메서드:

      • Engine: 엔진의 주된 기능을 구현하는 클래스
      • init_engine(): 엔진 초기화를 수행하는 메서드
      • post_engine_init(): 엔진 초기화 후 추가 설정을 수행하는 메서드
      • destroy_engine(): 엔진 종료 및 리소스 정리를 담당하는 메서드
      • register_command(): 앱을 엔진에 등록하고 명령을 추가하는 메서드
      • log_debug(), log_info(), log_warning(), log_error(): 로그 메시지를 출력하는 메서드
  • info.yml
    엔진의 메타데이터와 설정 정보를 포함하는 파일이다.

    • 주요 항목:

      • configuration: 엔진에 대한 다양한 설정
      • display_name: 엔진의 이름
      • description: 엔진의 설명
      • requires_shotgun_version: 엔진이 요구하는 ShotGun의 최소 버전
      • requires_core_version: 엔진이 요구하는 Core의 최소 버전
    • 예시:

          configuration:

            automatic_context_switch:
              type: bool
              description: "Controls whether toolkit should attempt to automatically adjust its
                           context every time the currently loaded file changes. Defaults to True."
              default_value: True
      
          display_name: "Flow Production Tracking Engine for Maya"
          description: "Flow Production Tracking Integration in Maya"

          requires_shotgun_version: "1.5.4"
          requires_core_version: "v0.20.5"
  • 기타 엔진에 대한 파일 (아이콘, 라이센스 파일 등)

폴더 구성

  • config 폴더

    • 엔진의 구성 파일을 포함하는 폴더로, 애플리케이션에 대한 설정 파일과 각 Context 별 설정 파일을 포함한다.

    • 파일 예시:

      • tk-maya.yml: Maya에 대한 설정 파일
      • asset_step.yml: 'Asset Step' Context에 대한 설정 파일
      • shot_step.yml: 'Shot Step' Context에 대한 설정 파일

      다음은 Maya 엔진 설정 파일(tk-maya.yml)의 예시이다.

      engines:
        tk-maya:
          apps:
            tk-multi-workfiles2:
              location:
                name: tk-multi-workfiles2
                type: app_store
                version: v0.10.2
            tk-multi-publish2:
              location:
                name: tk-multi-publish2
                type: app_store
                version: v2.5.0
          location:
            name: tk-maya
            type: app_store
            version: v0.10.2

이 예시는 tk-maya 엔진을 설정하고, 그 안에 tk-multi-workfiles2tk-multi-publish2 앱을 포함하는 방법을 보여준다.
각각의 앱은 app_store에서 가져오며 특정 버전을 사용한다.

  • hooks 폴더

    • 엔진의 다양한 이벤트에 대한 훅(hook) 스크립트를 포함하는 폴더이다.
      사용자가 특정 이벤트에 대해 커스터마이징된 동작을 정의할 수 있다.

    • 앱 별 작동 방식에 대한 스크립트도 포함한다.

  • python 폴더

    • 엔진의 주요 파이썬 코드 파일을 포함하는 폴더

    • 주요 파일:

      • menu_generation.py: ShotGrid 메뉴를 DCC의 메뉴바에 생성하는 스크립트
      • bootstrap.py: 엔진이 실행되기 전, 초기화 작업을 수행하는 스크립트
  • 전체적인 폴더 구조 예시

tk-maya/
│
├── hooks/
│   ├── tk-multi-publish2/
│       ├── start_version_control.py
│       ├── publish_session.py
│   └── tk-multi-workfiles2/
│       └── scene_operation_tk_maya.py
│
├── python/
│   ├── startup/
│       └── bootstrap.py
│   └── tk-maya/
│       └── menu_generation.py
│
├── config/
│   └── env/
│       ├── includes/
│           ├── settings/
│               └── tk-maya.yml
│           └── engine_locations.yml
│       ├── asset_step.py
│       └── shot_step.py
│
├── startup.py
├── engine.py
├── info.yml
└── etc.
profile
공부 중🙄

0개의 댓글