
ShotGrid에서는 DCC 내에서 ShotGrid의 기능을 활용할 수 있도록 ShotGrid Toolkit에 각 DCC 별 엔진을 통합하는 것을 지원하고 있다.
그렇다면 이 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-workfiles2와 tk-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.