게시를 수동으로 생성하는 방법은 무엇입니까?

질문 1:

파이프라인 일부가 아직 툴킷을 사용하고 있지 않지만 스크립트나 코드를 작성해 Shotgun에서 게시를 생성하고 싶습니다. 그러면 이 파이프라인 부분에 게시된 파일이 툴킷 로더와 Shotgun 알림 스트림에 표시되고, 종속성 데이터 마이닝도 수행할 수 있을 것입니다. 

질문 2:

Shotgun에 제대로 된 게시로 등록하고 싶은 게시된 파일이 디스크에 많이 있습니다. 어떻게 스크립트를 작성해 등록할 수 있을까요?

답변:

보통 툴킷 이 Shotgun 내 새로운 게시 생성을 담당합니다. 생성된 게시는 데이터가 처리되거나 파이프라인의 씬 다운스트림에 로드될 때마다 사용됩니다.

게시된 파일을 생성하는 앱의 기본적인 예는 모든 엔진에서 사용되며 다양한 파일 형식과 출력을 내보내도록 구성할 수 있는 다중 게시 앱입니다. Loader, Breakdown 및 File Manager 앱이 게시를 사용하여 UI를 입력하는 앱의 예입니다. 또한 게시는 종속성 링크를 통해 다른 게시에 연결될 수 있는데, 이는 파이프라인 내 서로 다른 파일들이 서로 관련되는 방식을 트래킹할 수 있는 매우 강력한 수단이기도 합니다. 

Shotgun 7.2를 통해 Publish 앱이 개선되어 이제는 단독으로 실행될 수 있습니다. 3dsMax, Houdini, Maya, Nuke, Nuke Studio, Photoshop 같은 소프트웨어 패키지에서의 워크플로우에 더하여 임의의 파일을 드래그 앤 드롭하여 게시할 수도 있습니다.

파이프라인 일부는 툴킷을 사용하지만 다른 일부는 사용하지 않는 경우에는 비-툴킷 파이프라인을 설정하여 Shotgun에서 게시를 생성하는 것이 좋을 수 있습니다. 즉, 이런 파일들은 Loader 및 Breakdown 앱으로 쉽게 처리할 수 있습니다. Shotgun이 제공하는 모든 이벤트 스트림 및 알림 서비스에 액세스하여 모든 팀원의 프로젝트 작업 속도를 최대한 끌어 올릴 수도 있습니다.

register_publish() API 메서드를 사용하여 게시 생성

로우 Shotgun API 호출을 사용하여 Shotgun에서 게시 레코드를 생성하는 것도 가능하지만 툴킷의 편의 메서드를 이용하는 것이 훨씬 좋습니다. 게시를 생성하는 모든 툴킷 앱은 sgtk.util.register_publish()라는 API 유틸리티 메서드를 사용 중입니다.

기본적으로 이 메서드는 Shotgun에서 새로운 PublishedFile 엔티티를 생성하며, 툴킷 컨셉을 사용하여 생성을 쉽게 만들어줍니다. 여러분의 코드로 무언가를 실행하려면 다음 줄들을 이용해야 할 것입니다.

# Get access to the toolkit API
import sgtk

# this is the file we want to publish.
file_to_publish = "/mnt/projects/proj/seq_abc/shot_123/comp/foreground.v034.nk"

# alternatively, for file sequences, we can just use
# a standard sequence token
# file_to_publish = "/mnt/projects/proj/seq_abc/shot_123/comp/renders/v034/foreground.%04d.exr"

# The name for the publish should be the filename
# without any version number or extension
name = "foreground"

# initialize an API object. If you have used the toolkit folder creation
# to create the folders where the publish file resides, you can use this path
# to construct the API object. Alternatively you can create it from any Shotgun
# entity using the sgtk_from_entity() method.
tk = sgtk.sgtk_from_path(file_to_publish)

# use the file to extract the context. The context denotes the current work area in toolkit
# and will control which entity and task the publish will be linked up to. If you have used the toolkit
# folder creation to create the folders where the publish file resides, you can use this path
# to construct the context.
ctx = tk.context_from_path(file_to_publish)

# alternatively, if the file you are trying to publish is not in a location that is
# recognized by toolkit, you could create a context directly from a Shotgun entity instead:
ctx = tk.context_from_entity("Shot", 123)
ctx = tk.context_from_entity("Task", 123)

# Finally, run the publish command.
# the third parameter (file.nk) is typically the file name, without a version number.
# this makes grouping inside of Shotgun easy. The last parameter is the version number.
sgtk.util.register_publish(
tk,
ctx,
file_to_publish,
name,
published_file_type="Nuke Script",
version_number=34
)

위에 나온 기본 항목 외에 사용자가 직접 입력할 수 있는 여러 추가 옵션도 있습니다.

  • 게시 이름에는 어떠한 버전 번호 및 확장도 없어야 합니다. 툴킷 및 Shotgun이 게시를 버전 "스트림"으로 그룹화하는 경우에는 보통 항목이 게시 이름과 엔티티 링크에 따라 그룹화됩니다.
  • 위 예의 게시 파일 유형 매개변수는 게시에 대한 게시된 파일 형식 특성을 설정합니다. 이를 통해 다양한 컨텐츠 유형을 범주화할 수 있습니다. 그러면 툴킷 앱 및 기타 위치에서 이 범주화된 유형을 사용하여 다양한 데이터 유형을 구별할 수 있습니다. 파일 확장자를 반복하는 것보다 파일 내용에 대한 간략한 설명(별도로 액세스 가능)을 사용하는 것이 좋습니다. 예: Nuke 스크립트, 렌더링된 시퀀스, 배경 판, 분산 텍스처 맵, Maya 리그, Alembic 지오메트리
  • 종속성을 등록하려면 게시하는 파일이 의존하는 모든 게시 ID 목록과 함께 dependency_ids=[123, 456] 매개변수를 전달하십시오. 예를 들어, Nuke 스크립트를 게시하는 경우에는 Nuke 씬을 스캔하고 모든 읽기 노드(특정한 경우에는 종속성)를 찾습니다.
  • 또는, 게시 ID가 없다면 dependency_paths 매개변수를 사용하여 경로 목록을 대신 전달해도 됩니다.
  • 썸네일을 게시와 연결하려면 thumbnail_path 매개변수를 전달합니다.
  • 게시가 리뷰해야 하는 특정 버전과 연결되어 있다면 version_entity 매개변수를 통해 해당 ID를 전달합니다.
  • comment 매개변수를 사용하여 게시가 포함하고 있는 내용에 관한 간단한 설명을 추가합니다.

전체 매개변수 목록은 Core API 설명서를 참조하십시오. 

커스텀 게시 앱 작성

게시를 위한 커스텀 앱을 작성 중이라면 훨씬 쉽게 할 수 있습니다! 이 경우에는 self.sgtk를 통한 툴킷 API 핸들과 self.context의 컨텍스트를 이용하면 됩니다. 위의 예에서처럼 생성할 필요도 없고 시스템이 다 알아서 해 줍니다.

Shotgun API를 사용하여 수동으로 게시 레코드 생성

아니면 그냥 게시 레코드를 Shotgun에 직접 수동으로 삽입해도 됩니다. 이 경우에는 위 예에 나와 있는 모든 기본 필드가 포함되도록 해야 합니다.

팔로우

0 댓글

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