
ShotGrid Toolkit에서는 ShotGrid와 DCC를 연동하여 특정 작업을 수행하거나,
다양한 자동화 작업 등을 위해 오픈소스 형태로 다양한 앱을 지원하며, 개발자가 자체적으로 앱을 개발하는 것 또한 지원한다.
이번 포스트에서는 ShotGrid Toolkit 앱이 무엇인지, 왜 사용하는지에 대해 알아보자.
ShotGrid Toolkit 앱은 ShotGrid Toolkit 엔진에 의해 실행되는 도구이다.
앱은 구성에 따라 다양한 인터페이스 혹은 기능을 가질 수 있으며, 사용자로 하여금 ShotGrid Tollkit 내에서 다양한 작업을 할 수 있게 한다.
일반적으로 GUI를 갖추고 있으며, 단순히 특정 명령을 일컫는 말이기도 하다.
이외에도 사용자가 어떻게 앱을 제작하느냐에 따라 무궁무진한 기능 및 역할을 할 수 있는 것이 앱의 특징이다.



ShotGrid Toolkit 앱은 구성 파일(settings/<app_name>.yml)을 통해 설정할 수 있으며, 필요에 따라 커스터마이징이 가능하다.
이러한 설정 파일을 통해 각 앱의 동작 방식을 조정하고, 특정 프로젝트나 스튜디오의 요구에 맞게 최적화할 수 있다.
앱 설정 에 대한 자세한 내용은 ShotGrid Toolkit에 엔진, 앱 등록하기를 참고
ShotGrid Toolkit은 오픈소스이기 때문에, 사용자나 개발자가 필요에 따라 새로운 앱을 개발하거나 기존 앱을 확장할 수 있다.
이를 통해 다양한 애플리케이션과의 통합을 더욱 유연하게 관리할 수 있다.
ShotGrid Toolkit 앱은 ShotGrid에서의 작업을 효율적으로 관리하기 위해 필수적이며, 이를 통해 사용자들은 더 나은 작업 흐름과 생산성을 경험할 수 있다.
ShotGrid Toolkit 앱은 여러 파일과 스크립트로 구성되어 있으며, 이들은 각각 앱의 동작과 기능을 구성한다.
ShotGrid Toolkit 앱의 기본적인 스크립트 구성에 대해 알아보자.
app.py
앱의 핵심 로직을 포함하는 파일로, 애플리케이션과의 통신을 관리한다.
주요 클래스 및 메서드:
App: 앱의 주된 기능을 구현하는 클래스init_app(): 앱 초기화를 수행하는 메서드destroy_app(): 앱 종료 및 리소스 정리를 담당하는 메서드info.yml
앱의 메타데이터와 설정 정보를 포함하는 파일이다.
주요 항목:
configuration: 앱에 대한 다양한 설정display_name: 앱의 이름description: 앱의 설명requires_shotgun_version: 앱이 요구하는 ShotGun의 최소 버전requires_core_version: 앱이 요구하는 Core의 최소 버전requires_engine_version: 앱이 요구하는 Engine의 최소 버전예시:
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: "Workfiles2 App for Maya"
description: "Workfiles2 App Integration in Maya"
requires_shotgun_version: "1.5.4"
requires_core_version: "v0.20.5"
requires_engine_version:
hooks 폴더
앱의 다양한 이벤트에 대한 훅(hook) 스크립트를 포함하는 폴더이다.
사용자가 특정 이벤트에 대해 커스터마이징된 동작을 정의할 수 있다.
python 폴더
앱의 주요 파이썬 코드 파일을 포함하는 폴더, 다양한 기능이 모듈화되어 개별 스크립트로 작성되어 있는 경우가 많다.
전체적인 폴더 구조 예시
tk-multi-workfiles2/
│
├── hooks/
│ ├── copy_file.py
│ ├── create_new_task.py
│ └── ...
│
├── python/
│ └── tk-multi-workfiles2/
│ ├── ui/
│ ├── file_list/
│ ├── browser_form.py
│ └── ...
│
├── app.py
├── info.yml
└── etc.