DeadlineCommand를 사용한 수동 작업 제출 (Manual Job Submission)
📌 개요 (Overview)
수동 작업 제출(Manual Job Submission)은 작업 제출 과정을 더 세밀하게 제어할 수 있도록 해줍니다.
특히, 내부 파이프라인 툴에 통합하거나, 맞춤형 제출 스크립트를 작성할 때 유용합니다.
만약 Deadline에서 기본 제공하는 제출 스크립트를 사용하려면, Submitting Jobs 문서를 참고하세요.
📌 명령줄(Command Line) 작업 제출
수동으로 명령줄 작업을 제출하려면 deadlinecommand -SubmitCommandLineJob 옵션을 사용합니다.
필수 |
옵션 |
-executable | 사용할 실행 파일(예: Nuke, 3ds Max, Maya 등). |
-arguments | 실행 파일에 전달할 인수(렌더링 프레임, 해상도 등). |
옵션설명
특수 키워드 (렌더링 시 자동 변환됨)
키워드 |
설명 |
<STARTFRAME> | 현재 작업(Task)의 시작 프레임 |
<ENDFRAME> | 현재 작업(Task)의 종료 프레임 |
<STARTFRAME%#> | 0으로 채워진 시작 프레임 (예: <STARTFRAME%4> → 0001) |
<ENDFRAME%#> | 0으로 채워진 종료 프레임 (예: <ENDFRAME%6> → 000001) |
<QUOTE> | 따옴표(") 문자 |
<AUXFILE#> | 제출된 보조 파일(Auxiliary File) |
예제: Nuke 렌더링 잡 제출
deadlinecommand.exe -SubmitCommandLineJob
-executable "C:\Program Files\Nuke14.0v2\Nuke14.0.exe"
-arguments "-t C:/path/to/your_script.nk"
-frames 1-100
-chunksize 10
-priority 60
-name "Nuke Batch Render"
-group nuke
추가 옵션 (선택 사항)
옵션 | 설명 | 기본값 |
-frames | 렌더링할 프레임 범위 | 필수 |
-startupdirectory | 시작 디렉토리 설정 | 없음 |
-chunksize | 한 번에 처리할 프레임 개수 | 1 |
-pool | 제출할 풀(Pool) 지정 | 없음 |
-group | 제출할 그룹(Group) 지정 | 없음 |
-priority | 작업 우선순위 설정 (0~100) | 50 |
-name | 작업 이름 지정 | "Untitled" |
-department | 부서명(Department) 지정 | "" |
-initialstatus | 작업 상태 (Active / Suspended) | "Active" |
-prop KEY=VALUE | 추가적인 작업 속성 설정 | 없음 |
📌 실전 예제: 3ds Max 명령줄 렌더링 작업 제출
🎯 기본적으로 실행해야 하는 명령어
3dsmaxcmd.exe -start:1 -end:10 -width:480 -height:320 "\\shared\path\scene.max"
Deadline을 통해 3ds Max 렌더링 잡 제출
deadlinecommand.exe -SubmitCommandLineJob
-executable "C:\Program Files\Autodesk\3dsmax8\3dsmaxcmd.exe"
-arguments "-start:<STARTFRAME> -end:<ENDFRAME> -width:480 -height:320 <QUOTE>\\shared\path\scene.max<QUOTE>"
-frames 1-10
-chunksize 2
-group 3dsmax
-priority 50
-name "3dsmax command line job"
-prop MachineLimit=5
-prop EnvironmentKeyValue0=DEFAULT_RENDERER=arnold
-prop EnvironmentKeyValue1=solidangle_LICENSE=5056@lic-server
위 명령어가 실행되면 다음과 같은 설정으로 Deadline에 작업이 제출됩니다.
- 실행 파일: "C:\Program Files\Autodesk\3dsmax8\3dsmaxcmd.exe"
- 렌더링 프레임 범위: 1-10
- 청크 크기: 2 (각 작업이 2프레임씩 처리)
- 우선순위: 50
- 작업 이름: "3dsmax command line job"
- 그룹: 3dsmax
- 머신 제한: 최대 5대의 컴퓨터에서 실행
- 환경 변수: DEFAULT_RENDERER=arnold, solidangle_LICENSE=5056@lic-server
정리
사용 목적 | 명령어 |
기본 Nuke 렌더 제출 | deadlinecommand -SubmitCommandLineJob -executable "Nuke.exe" -arguments "-t script.nk" -frames 1-100 |
프레임 청크 설정 (5프레임씩 렌더링) | -chunksize 5 |
우선순위 변경 | -priority 80 |
특정 그룹에 제출 | -group nuke |
머신 제한 설정 (최대 3대 사용) | -prop MachineLimit=3 |
이제 deadlinecommand를 사용하여 Nuke 및 기타 명령줄 렌더링 작업을 Deadline에 효율적으로 제출할 수 있습니다!
유지보수 작업 (Maintenance Jobs)
유지보수 작업은 각 작업(Task)이 팜 내의 서로 다른 머신에서 렌더링되는 특별한 작업입니다. 이를 통해 벤치마크 테스트 수행, 새로운 소프트웨어 설치, 각 머신 간 파일 동기화 등의 작업을 효율적으로 진행할 수 있습니다.
유지보수 작업이 제출되면 각 Worker에 대해 자동으로 작업(Task)이 생성되며, 해당 Worker가 작업을 완료하면 더 이상 해당 작업을 수행하지 않습니다.
1. 수동 제출 방법
유지보수 작업을 Deadline에 수동으로 제출하려면 작업 제출 파일(job submission files)을 생성해야 합니다.
작업 정보 파일(job info file)에서 MaintenanceJob을 True로 설정하면 유지보수 작업으로 처리됩니다.
MaintenanceJob=True
기본적으로 유지보수 작업은 모든 머신에서 프레임 0을 렌더링합니다.
다른 프레임을 렌더링하려면 MaintenanceJobStartFrame 및 MaintenanceJobEndFrame 옵션을 설정할 수 있습니다.
MaintenanceJob=True
MaintenanceJobStartFrame=1
MaintenanceJobEndFrame=5
추가로, 작업 정보 파일에서 허용 목록(Allow List) 또는 차단 목록(Deny List)을 지정하면, 해당 목록에 포함된 Worker 수만큼 작업(Task)이 생성됩니다.
2. 모니터에서 다시 제출 (Resubmit)
다른 방법으로는 Deadline Monitor에서 기존 작업을 우클릭 → Resubmit Job(작업 다시 제출)을 선택하여 유지보수 작업으로 다시 제출할 수 있습니다.
자세한 내용은 Deadline 문서의 "Controlling Jobs" → "Resubmitting Jobs" 섹션을 참고하세요.
작업 제출 파일 생성 (Creating Job Submission Files)
이 방법은 Deadline의 제출 스크립트(Submission Scripts)에서 사용하는 방식이며, 유연성이 뛰어나지만 설정 과정이 다소 복잡합니다. 또한, Command 애플리케이션을 사용하여 작업을 제출하게 됩니다.
1. 작업 제출을 위한 필수 파일
작업을 제출하기 전에 다음 두 개의 파일을 생성해야 합니다.
- 작업 정보 파일 (Job Info File)
- 작업의 일반적인 옵션을 정의하는 파일
- 플러그인 정보 파일 (Plugin Info File)
- 사용할 플러그인에 대한 설정을 포함하는 파일
이 두 파일은 모든 작업 제출 시 필수입니다.
추가로, 렌더링할 씬 파일이나 작업 수행에 필요한 기타 파일을 **보조 파일(Auxiliary Files)**로 함께 제출할 수 있습니다.
이 파일들은 Deadline Repository로 복사된 후, 각 머신에서 로컬로 복사되어 사용됩니다.
모든 보조 파일은 동일한 폴더에 저장되므로, 파일명이 고유해야 합니다.
2. 작업 제출 명령어
모든 파일이 준비되면, 다음과 같은 명령어를 사용하여 커맨드 라인에서 작업을 제출할 수 있습니다.
deadlinecommand [Job Info File] [Plugin Info File] [Auxiliary File 1] [Auxiliary File 2]
예제:
deadlinecommand myJobInfo.job myPluginInfo.plugin sceneFile.max texture.png
3. 작업 정보 파일 (Job Info File) 옵션
작업 정보 파일은 Key=Value 형식의 일반 텍스트 파일이며, 렌더링할 작업의 기본적인 옵션을 정의합니다.
모든 플러그인에서 사용할 수 있는 공통 옵션을 포함하며, 필수 및 선택 옵션이 존재합니다.
필수 옵션 (Required Options)
다음 옵션은 반드시 지정해야 하며, 없을 경우 작업 제출이 실패합니다.
- Plugin=<plugin name>
- 사용할 플러그인을 지정합니다.
- 반드시 Repository에 존재하는 플러그인과 이름이 일치해야 합니다.
예제:
Plugin=MayaBatch
이 외에도 다양한 선택적 옵션을 설정할 수 있으며, 추가 예제는 이후 설명됩니다.
일반 작업 옵션 (General Job Options)
작업 정보 파일(Job Info File)에서 설정할 수 있는 다양한 일반 옵션을 정리한 내용입니다.
이 옵션들은 모든 플러그인에서 공통적으로 사용할 수 있으며, 필요에 따라 설정할 수 있습니다.
Job Info 파일 옵션 (Job Info File Options)
Job Info 파일은 key=value 형식의 Key/Value 쌍을 사용하여 작업의 일반적인 설정을 정의하는 텍스트 파일입니다. 일부 필수 옵션을 제외하면 대부분 선택 사항이며, 사용된 플러그인과 관계없이 모든 작업에서 공통적으로 사용할 수 있습니다.
기본 구조 예제
Frames=1-100
Name=MyRenderJob
Comment=This is a test render job.
UserName=JohnDoe
Priority=75
Pool=MainRenderPool
필수 옵션 (Required Options)
다음 옵션은 반드시 Job Info 파일에 포함되어야 하며, 설정하지 않으면 작업 제출이 실패합니다.
- Plugin=<플러그인 이름>
- 작업에 사용할 플러그인을 지정합니다.
- 저장소(Repository)에 존재하는 유효한 플러그인 이름과 일치해야 합니다.
예제
Plugin=MayaBatch
위 설정은 MayaBatch 플러그인을 사용하여 작업을 제출하는 경우입니다.
작업에 맞는 적절한 플러그인 이름을 입력해야 합니다.
일반 설정 (General)
- Frames = <1,2,3-10,20> : 렌더 작업의 프레임 범위를 지정합니다. 자세한 형식은 Job Submission 문서를 참고하세요. (기본값 = 0)
- Name = <작업 이름> : 작업의 이름을 지정합니다. (기본값 = Untitled)
- Comment = <코멘트> : 작업에 대한 코멘트를 추가합니다. (기본값 = 없음)
- Department = <부서명> : 작업이 속한 부서를 지정합니다. 단순히 그룹화하는 용도로, 렌더링에 영향을 주지는 않습니다. (기본값 = 없음)
- BatchName = <배치 이름> : 작업을 논리적으로 그룹화할 수 있는 선택적 배치 이름을 지정합니다. (기본값 = 없음)
- UserName = <사용자 이름> : 작업을 제출한 사용자를 지정합니다. (기본값 = 현재 사용자)
- MachineName = <머신 이름> : 작업이 제출된 컴퓨터를 지정합니다. (기본값 = 현재 컴퓨터)
- Pool = <풀 이름> : 작업이 제출될 풀을 지정합니다. (기본값 = 없음)
- SecondaryPool = <풀 이름> : 작업이 보조 풀을 사용할 수 있도록 설정합니다. 설정하지 않으면 보조 풀을 사용하지 않습니다.
- Group = <그룹 이름> : 작업이 제출될 그룹을 지정합니다. (기본값 = 없음)
- Priority = <0 이상> : 작업의 우선순위를 지정합니다. 0이 가장 낮은 우선순위입니다. 기본값은 50이며, 최대값은 저장소 설정에서 조정할 수 있습니다. (기본값 = 100)
- ChunkSize = <1 이상> : 하나의 작업 단위(Task)에서 렌더링할 프레임 개수를 지정합니다. (기본값 = 1)
- ConcurrentTasks = <1-16> : 하나의 워커(Worker)가 동시에 처리할 수 있는 최대 작업 개수를 지정합니다. 멀티스레딩을 지원하는 스크립트 플러그인에서 유용합니다. (기본값 = 1)
- LimitConcurrentTasksToNumberOfCpus = <true/false> : ConcurrentTasks가 1보다 큰 경우, 활성화하면 워커가 CPU 개수보다 많은 작업을 동시에 처리하지 않도록 제한합니다. (기본값 = true)
작업 완료 후 처리 (On Job Complete)
- OnJobComplete = <Nothing/Delete/Archive> : 작업 완료 후 실행할 동작을 지정합니다.
- Nothing : 아무 작업도 수행하지 않음 (기본값)
- Delete : 작업 삭제
- Archive : 작업 보관
추가 설정 (Additional Options)
- SynchronizeAllAuxiliaryFiles = <true/false> : 활성화하면 작업의 모든 파일을 동기화합니다. 단, 네트워크 부하가 증가할 수 있으므로 제출한 파일을 직접 편집해야 하는 경우에만 사용하세요. (기본값 = false)
- ForceReloadPlugin = <true/false> : 활성화하면 프레임 간 플러그인을 다시 로드하여 메모리 누수 문제나 불완전한 언로드 문제를 방지할 수 있습니다. (기본값 = false)
- Sequential = <true/false> : 작업을 순차적으로 렌더링합니다. 워커는 이전 작업이 완료될 때까지 다음 작업을 수행하지 않으며, 더 높은 우선순위의 작업이 있어도 순차적으로 진행됩니다. (기본값 = false)
- SuppressEvents = <true/false> : 활성화하면 작업이 대기열에 있을 때 이벤트 플러그인을 실행하지 않습니다. (기본값 = false)
- Protected = <true/false> : 작업 보호 기능을 활성화하면 해당 작업을 제출한 사용자, 파워 유저, 또는 특정 권한을 가진 그룹 사용자만 작업을 삭제하거나 보관할 수 있습니다. 또한 자동 정리 기능에서 제외됩니다.
- InitialStatus = <Active/Suspended> : 작업 제출 직후 상태를 지정합니다.
- Active : 즉시 활성화 (기본값)
- Suspended : 일시 정지됨
네트워크 설정 (Network)
- NetworkRoot = <저장소 UNC 경로> : 작업이 제출될 저장소 경로를 지정합니다. 여러 저장소를 사용할 경우 필수적으로 설정해야 합니다. (기본값 = 현재 저장소)
타임아웃 설정 (Timeouts Options)
다음 옵션은 작업(Task) 및 렌더링 시간 제한을 설정하는 옵션입니다.
이 설정을 통해 작업이 너무 짧거나 오래 걸리는 경우 자동으로 오류를 감지하거나 중단할 수 있습니다.
1. 최소 렌더링 시간 (Minimum Render Time)
최소 시간보다 빨리 작업이 완료되면 오류가 발생합니다.
- MinRenderTimeSeconds=<0 이상>
- 한 작업(Task)이 렌더링해야 하는 최소 시간(초 단위)
- 기본값: 0 (설정 없음)
- MinRenderTimeMinutes 옵션과 함께 설정하면 초 단위 옵션은 무시됨
- MinRenderTimeMinutes=<0 이상>
- 한 작업(Task)이 렌더링해야 하는 최소 시간(분 단위)
- 기본값: 0 (설정 없음)
📌 예제:
MinRenderTimeMinutes=2
→ 작업이 2분 이내에 끝나면 오류 발생
2. 작업(Task) 제한 시간 (Task Timeout)
일정 시간이 지나도 작업이 완료되지 않으면 자동 중단됩니다.
- TaskTimeoutSeconds=<0 이상>
- 한 작업(Task)이 완료될 최대 시간(초 단위)
- 기본값: 0 (제한 없음)
- TaskTimeoutMinutes 옵션과 함께 설정하면 초 단위 옵션은 무시됨
- TaskTimeoutMinutes=<0 이상>
- 한 작업(Task)이 완료될 최대 시간(분 단위)
- 기본값: 0 (제한 없음)
📌 예제:
TaskTimeoutMinutes=30
→ 작업이 30분 이상 걸리면 강제 중단
3. 작업 시작 제한 시간 (Start Job Timeout)
워커(Worker)가 작업을 시작하는 데 너무 오래 걸릴 경우 제한
- StartJobTimeoutSeconds=<0 이상>
- 워커가 렌더링을 시작해야 하는 최대 대기 시간(초 단위)
- 기본값: 0 (제한 없음)
- StartJobTimeoutMinutes 옵션과 함께 설정하면 초 단위 옵션은 무시됨
- StartJobTimeoutMinutes=<0 이상>
- 워커가 렌더링을 시작해야 하는 최대 대기 시간(분 단위)
- 기본값: 0 (제한 없음)
📌 예제:
StartJobTimeoutMinutes=
→ 작업이 5분 내에 시작되지 않으면 타임아웃 발생
4. 플러그인 초기화 제한 시간 (Plugin Initialization Timeout)
플러그인이 로드되는 데 너무 오래 걸리면 제한
- InitializePluginTimeoutSeconds=<0 이상>
- 워커가 플러그인을 로드하는 데 걸릴 최대 시간(초 단위)
- 기본값: 0 (제한 없음)
📌 예제:
InitializePluginTimeoutSeconds=60
→ 플러그인 로딩 시간이 60초 이상 걸리면 타임아웃 발생
5. 작업 시간 초과 시 수행할 작업 (On Task Timeout)
작업이 타임아웃될 경우 실행할 동작을 지정
- OnTaskTimeout=<Error/Notify/ErrorAndNotify/Complete>
- Error : 오류 발생 (기본값)
- Notify : 관리자에게 알림
- ErrorAndNotify : 오류 발생 + 관리자 알림
- Complete : 현재 상태를 완료로 설정
📌 예제:
OnTaskTimeout=ErrorAndNotify
→ 작업 시간이 초과되면 오류 발생 후 관리자에게 알림
6. 기타 옵션
- EnableTimeoutsForScriptTasks=<true/false>
- true로 설정하면 작업 전후 스크립트(pre/post job scripts) 에도 타임아웃이 적용됨
- 기본값: false
- EnableFrameTimeouts=<true/false>
- true로 설정하면 타임아웃이 프레임 단위로 적용됨 (기본값: false, 작업 단위로 적용)
- EnableAutoTimeout=<true/false>
- true로 설정하면 자동으로 최적의 타임아웃 시간을 계산하여 적용
- 저장소 설정 및 이전 작업 시간 기준 (기본값: false)
📌 예제:
EnableAutoTimeout=true
→ 워커가 자동으로 적절한 타임아웃 설정을 결정
정리
옵션 | 설명 | 기본값 |
MinRenderTimeSeconds | 최소 렌더링 시간 (초) | 0 |
MinRenderTimeMinutes | 최소 렌더링 시간 (분) | 0 |
TaskTimeoutSeconds | 최대 작업 시간 (초) | 0 |
TaskTimeoutMinutes | 최대 작업 시간 (분) | 0 |
StartJobTimeoutSeconds | 작업 시작 제한 시간 (초) | 0 |
StartJobTimeoutMinutes | 작업 시작 제한 시간 (분) | 0 |
InitializePluginTimeoutSeconds | 플러그인 초기화 시간 제한 (초) | 0 |
OnTaskTimeout | 타임아웃 시 수행할 작업 | Error |
EnableTimeoutsForScriptTasks | 작업 스크립트에도 타임아웃 적용 여부 | false |
EnableFrameTimeouts | 프레임 단위 타임아웃 적용 여부 | false |
EnableAutoTimeout | 자동 타임아웃 설정 여부 | false |
필요한 설정에 따라 타임아웃을 조정하면 워커가 작업을 보다 효율적으로 처리할 수 있습니다. 🚀
작업 인터럽트(Interruptible) 설정
이 옵션들은 낮은 우선순위의 작업이 높은 우선순위 작업에 의해 중단(Interrupt)될 수 있도록 허용하는 기능을 설정합니다.
효율적인 스케줄링을 위해 긴 작업을 우선순위가 높은 작업이 실행될 때 일시 중단할 수 있도록 조정할 수 있습니다.
1. 작업 중단 허용 여부 (Interruptible)
- Interruptible=<true/false>
- true : 더 높은 우선순위의 작업이 있을 경우 현재 작업이 중단될 수 있음
- false : 현재 작업이 끝날 때까지 실행됨 (기본값)
📌 예제:
Interruptible=true
→ 우선순위가 높은 작업이 대기 중이면 현재 작업을 중단 가능
2. 작업 진행률 기반 인터럽트 조건 (Interruptible Percentage)
- InterruptiblePercentage=<0~100>
- 작업의 진행률(%)이 해당 값 이하일 경우만 중단 가능
- 기본값이 없으며, 설정하지 않으면 진행률과 무관하게 중단 가능
📌 예제:
InterruptiblePercentage=30
→ 현재 작업이 30% 이하로 진행되었을 경우에만 중단 가능
3. 남은 시간 기반 인터럽트 조건 (Remaining Time Threshold)
- RemTimeThreshold=<0 이상>
- 현재 작업의 남은 예상 시간(초 단위)이 설정된 값보다 많을 경우에만 중단 가능
- 기본값: 0 (설정 없음)
📌 예제:
RemTimeThreshold=600
→ 현재 작업의 남은 예상 시간이 600초(10분) 이상인 경우에만 중단 가능
정리
옵션 | 설명 | 기본값 |
Interruptible | 우선순위가 높은 작업이 있을 경우 현재 작업 중단 허용 여부 | false |
InterruptiblePercentage | 작업이 지정된 진행률(%) 이하일 경우에만 중단 가능 | 없음 |
RemTimeThreshold | 작업의 남은 시간이 설정된 값(초)보다 많을 경우에만 중단 가능 | 0 |
📌 활용 예제
Interruptible=true
InterruptiblePercentage=50
RemTimeThreshold=900
✅ 설정 의미:
- 현재 작업이 우선순위가 높은 작업에 의해 중단될 수 있음
- 하지만, 50% 이상 진행된 작업은 중단되지 않음
- 또한, 남은 예상 시간이 15분(900초) 이상인 경우에만 중단 가능
이 설정을 활용하면 긴 작업을 유동적으로 중단하면서도, 일정 부분 진행된 작업이 불필요하게 취소되는 것을 방지할 수 있습니다. 🚀
알림(Notification) 설정
이 옵션들은 작업이 완료될 때 특정 사용자나 이메일 주소로 알림을 전송하는 방법을 정의합니다.
이메일 또는 팝업 알림을 설정하여 작업 완료 상태를 즉시 확인할 수 있도록 설정할 수 있습니다.
1. 작업 완료 시 알림 대상 사용자 지정
- NotificationTargets=<사용자명, 사용자명, ...>
- 작업 완료 시 알림을 받을 사용자 목록을 지정
- 사용자명은 쉼표(,)로 구분
📌 예제:
ificationTargets=user1,user2,admin
→ user1, user2, admin이 작업 완료 알림을 받음
2. 기존 알림 대상 제거
- ClearNotificationTargets=<true/false>
- true : 기존 알림 목록을 모두 삭제
- false : 기존 알림 목록을 유지 (기본값)
📌 예제:
ClearNotificationTargets=tru
→ 모든 기존 알림 대상이 제거됨
3. 작업 완료 시 이메일 알림 대상 설정
- NotificationEmails=<이메일주소, 이메일주소, ...>
- 작업 완료 시 이메일로 알림을 받을 이메일 주소 목록을 지정
- 쉼표(,)로 구분
📌 예제:
ificationEmails=user1@example.com,user2@example.com
→ user1@example.com, user2@example.com으로 알림 이메일 전송
4. 사용자별 기본 알림 방법 무시
- OverrideNotificationMethod=<true/false>
- true : 사용자의 기본 알림 설정을 무시하고, 아래의 개별 설정을 사용
- false : 사용자의 기존 알림 설정을 그대로 유지 (기본값)
📌 예제:
OverrideNotificationMethod=true
→ 사용자별 기본 알림 설정을 무시하고, 이메일 또는 팝업 알림을 수동으로 설정
5. 이메일 알림 사용 여부
- EmailNotification=<true/false>
- OverrideNotificationMethod가 true일 때만 적용됨
- true : 이메일 알림 활성화
- false : 이메일 알림 비활성화 (기본값)
📌 예제:
OverrideNotificationMethod=true
EmailNotification=true
→ 기본 알림 방식을 무시하고 이메일로 알림 전송
6. 팝업 알림 사용 여부
- PopupNotification=<true/false>
- OverrideNotificationMethod가 true일 때만 적용됨
- true : 팝업 알림 활성화
- false : 팝업 알림 비활성화 (기본값)
📌 예제:
OverrideNotificationMethod=true
PopupNotification=true
→ 기본 알림 방식을 무시하고 팝업 알림 활성화
7. 알림 이메일에 추가 메시지 삽입
- NotificationNote=<메시지>
- 이메일 알림에 추가할 메시지를 입력 가능
- 여러 줄을 입력하려면 [EOL]을 사용
📌 예제:
NotificationNote=렌더링이 완료되었습니다.[EOL]결과물을 확인하세요.
→ 알림 이메일에 다음과 같이 추가 메시지가 포함됨:
복사편집
렌더링이 완료되었습니다.
결과물을 확인하세요.
정리
옵션 | 설명 | 기본값 |
NotificationTargets | 작업 완료 시 알림을 받을 사용자 목록 | 없음 |
ClearNotificationTargets | 기존 알림 목록을 모두 삭제할지 여부 | false |
NotificationEmails | 이메일 알림을 받을 이메일 주소 목록 | 없음 |
OverrideNotificationMethod | 사용자 기본 알림 방법 무시 여부 | false |
EmailNotification | 이메일 알림 활성화 여부 (OverrideNotificationMethod=true일 때만) | false |
PopupNotification | 팝업 알림 활성화 여부 (OverrideNotificationMethod=true일 때만) | false |
NotificationNote | 알림 이메일에 포함할 추가 메시지 | 없음 |
📌 활용 예제
NotificationTargets=user1,user2
NotificationEmails=user1@example.com,user2@example.com
OverrideNotificationMethod=true
EmailNotification=true
PopupNotification=false
NotificationNote=작업이 완료되었습니다.[EOL]결과물을 검토하세요.
✅ 설정 의미:
- user1, user2에게 작업 완료 알림이 전송됨
- user1@example.com, user2@example.com으로 이메일 알림 전송
- 기본 알림 방식을 무시하고 이메일 알림만 활성화
- 이메일에 "작업이 완료되었습니다.\\n결과물을 검토하세요." 메시지가 포함됨
이 설정을 활용하면 작업 완료 알림을 효율적으로 관리하고, 특정 사용자 또는 이메일로 직접 알림을 보낼 수 있습니다.
제한 그룹 (Limits) 설정
이 옵션은 작업이 특정 리소스 제한 그룹(Limit Group)에 속하도록 지정하는 기능을 제공합니다.
이를 활용하면 특정 소프트웨어 라이선스나 하드웨어 리소스를 관리할 수 있습니다.
1. 제한 그룹 지정
- LimitGroups=<limitGroup,limitGroup,limitGroup>
- 작업이 속할 제한 그룹(리소스 그룹)을 지정
- 제한 그룹을 사용하면 특정 라이선스, GPU, 메모리, 네트워크 대역폭 등을 관리 가능
- 여러 개의 제한 그룹을 지정할 수 있으며, 쉼표(,)로 구분
- 기본값: 빈 값(제한 없음)
📌 예제:
LimitGroups=Redshift_License,Nuke_Render
→ 이 작업은 Redshift 라이선스 및 Nuke 렌더링 제한 그룹에 속함
2. 활용 사례
- 소프트웨어 라이선스 관리
- 예: Redshift, VRay, Nuke 등의 라이선스 수량 제한 적용
- 예제:→ Redshift 라이선스가 부족하면 작업 대기
- LimitGroups=Redshift_Licens
- GPU 및 CPU 사용 제한
- 예: 특정 GPU 또는 CPU 리소스를 공유하는 작업 제한
- 예제:→ GPU 자원이 부족하면 작업 대기
- LimitGroups=GPU_Cluster
- 네트워크 및 스토리지 사용 제한
- 예: 네트워크 대역폭이 중요한 작업을 그룹화
- 예제:→ 네트워크 부하를 조절하며 작업 실행
- LimitGroups=Network_IO
정리
옵션 | 설명 | 기본값 |
LimitGroups | 작업이 속할 제한 그룹을 지정 | 빈 값 (제한 없음) |
📌 활용 예제
LimitGroups=Houdini_License,High_RAM
✅ 설정 의미:
- Houdini 라이선스가 필요하며, 고사양 RAM이 필요한 작업으로 제한
- 해당 리소스가 부족하면 대기 상태로 전환
이 설정을 활용하면 라이선스 관리 및 하드웨어 리소스 최적화를 통해 안정적인 작업 환경을 유지할 수 있습니다. 🚀
의존성 (Dependencies) 설정
작업(Job)이 다른 작업이 완료될 때까지 대기하도록 설정하는 기능입니다.
다른 작업의 진행 상태, 특정 자산(Assets), 또는 스크립트 실행 여부에 따라 렌더링 작업을 조정할 수 있습니다.
1. 작업 의존성 설정
🔹 기본 작업 의존성 (Job Dependencies)
- JobDependencies=<jobID,jobID,jobID>
- 이 작업이 대기해야 할 작업 ID를 지정
- 해당 작업이 완료되면 현재 작업이 실행됨
- 기본값: 빈 값 (대기 없이 즉시 실행)
📌 예제:
JobDependencies=job1234,job5678
→ job1234와 job5678이 완료된 후 현재 작업이 실행됨
🔹 부분 진행 후 실행 (Job Dependency Percentage)
- JobDependencyPercentage=<-1, 0~100>
- 의존 작업이 특정 비율(%) 완료되면 실행
- 1이면 비활성화 (기본값)
📌 예제:
JobDependencyPercentage=50
→ 의존 작업이 50% 완료되면 현재 작업 실행
2. 프레임 단위 의존성 (Frame Dependencies)
프레임별로 의존성을 설정하여, 특정 프레임이 완료되면 다음 프레임을 실행하도록 설정할 수 있습니다.
🔹 프레임 의존성 활성화
- IsFrameDependent=<true/false>
- 프레임 단위로 작업을 의존하도록 설정
- 기본값: false (작업 단위 의존성)
📌 예제:
IsFrameDependent=true
→ 프레임별 의존성 활성화
🔹 프레임 오프셋 설정
- FrameDependencyOffsetStart=<-100000~100000>
- 의존 프레임의 시작 프레임 오프셋 지정 (기본값: 0)
- FrameDependencyOffsetEnd=<-100000~100000>
- 의존 프레임의 끝 프레임 오프셋 지정 (기본값: 0)
📌 예제:
FrameDependencyOffsetStart=-10
FrameDependencyOffsetEnd=5
→ 의존하는 프레임 범위를 이전 10프레임 ~ 이후 5프레임으로 설정
3. 의존 작업 실패/삭제 시 동작
특정 상황에서 현재 작업이 자동으로 재개되도록 설정할 수 있습니다.
🔹 의존 작업 완료 후 실행
- ResumeOnCompleteDependencies=<true/false>
- 모든 의존 작업이 완료되면 이 작업 실행 (기본값: true)
- false로 설정하면 수동으로 실행해야 함
📌 예제:
ResumeOnCompleteDependencies=true
→ 의존 작업 완료 시 자동 실행
🔹 의존 작업 삭제 시 실행 여부
- ResumeOnDeletedDependencies=<true/false>
- 의존하는 작업이 삭제되었을 때 현재 작업 실행 여부 (기본값: false)
- true로 설정하면 의존 작업 삭제 시 자동 실행
📌 예제:
ResumeOnDeletedDependencies=true
→ 의존 작업이 삭제되면 현재 작업 실행
🔹 의존 작업 실패 시 실행 여부
- ResumeOnFailedDependencies=<true/false>
- 의존 작업이 실패했을 때 현재 작업 실행 여부 (기본값: false)
- true로 설정하면 의존 작업 실패 후에도 현재 작업 실행
📌 예제:
ResumeOnFailedDependencies=true
→ 의존 작업이 실패해도 현재 작업 실행됨
4. 파일/스크립트 의존성 설정
특정 파일이 존재할 때 또는 스크립트가 특정 조건을 만족할 때 작업을 실행할 수 있습니다.
🔹 특정 파일이 존재해야 실행 (Required Assets)
- RequiredAssets=<assetPath,assetPath>
- 특정 파일이 존재할 때만 작업 실행
- 파일이 없으면 작업이 대기 상태로 유지됨
📌 예제:
RequiredAssets=//server/projects/shot001.exr, //server/assets/model.fbx
→ 지정된 EXR 파일과 FBX 파일이 존재해야 실행됨
🔹 특정 스크립트 실행 후 작업 실행 (Script Dependencies)
- ScriptDependencies=<scriptPath,scriptPath>
- 특정 Python 스크립트가 실행된 후 작업 실행
📌 예제:
ScriptDependencies=//server/scripts/check_assets.py
→ check_assets.py 실행 후 조건이 충족되면 작업 실행
📌 정리
옵션 | 설명 | 기본값 |
JobDependencies | 대기할 작업 ID 목록 | 빈 값 |
JobDependencyPercentage | 의존 작업이 특정 % 완료되면 실행 | -1 (비활성화) |
IsFrameDependent | 프레임별 의존성 활성화 | false |
FrameDependencyOffsetStart | 시작 프레임 오프셋 | 0 |
FrameDependencyOffsetEnd | 끝 프레임 오프셋 | 0 |
ResumeOnCompleteDependencies | 의존 작업 완료 시 실행 | true |
ResumeOnDeletedDependencies | 의존 작업 삭제 시 실행 | false |
ResumeOnFailedDependencies | 의존 작업 실패 시 실행 | false |
RequiredAssets | 필요한 파일이 존재해야 실행 | 빈 값 |
ScriptDependencies | 특정 스크립트 실행 후 작업 실행 | 빈 값 |
🚀 활용 예제:
JobDependencies=job1234,job5678
JobDependencyPercentage=75
IsFrameDependent=true
FrameDependencyOffsetStart=-5
FrameDependencyOffsetEnd=10
ResumeOnCompleteDependencies=true
RequiredAssets=//server/projects/shot001.exr
ScriptDependencies=//server/scripts/check_render_status.py
✅ 설정 의미:
- job1234와 job5678이 75% 완료되면 실행
- 프레임 단위 의존성 활성화 (이전 5프레임 ~ 이후 10프레임 의존)
- shot001.exr 파일이 존재해야 실행
- check_render_status.py 스크립트 실행 후 조건 충족 시 실행
🛠 활용 예시
✅ 대규모 렌더링 파이프라인에서 선행 작업 완료 후 후속 작업 자동 실행
✅ 특정 자산(Assets)이 준비된 후 렌더링 시작
✅ 스크립트 검증 후 조건 충족 시 렌더링 실행
이 설정을 통해 렌더링 워크플로우를 체계적으로 관리하고, 자원의 효율성을 높일 수 있습니다. 🚀
실패 감지 (Failure Detection) 설정
렌더링 작업에서 에러 발생 횟수에 따라 작업을 중단하거나 계속 시도하도록 설정하는 기능입니다.
각 작업(Job)과 개별 태스크(Task)에 대한 실패 감지를 설정할 수 있으며, 글로벌(Global) 설정을 무시하고 개별 설정을 적용할 수도 있습니다.
1. 작업(Job) 단위 실패 감지
🔹 글로벌 실패 감지 설정 무시
- OverrideJobFailureDetection=<true/false>
- 전역(Global) 실패 감지 설정을 무시하고 개별 설정을 사용
- true로 설정하면 아래 설정값 적용 (기본값: false)
📌 예제:
FailureDetection=true
→ 글로벌 실패 감지 설정을 무시하고 개별 설정 적용
🔹 특정 에러 횟수 초과 시 작업 실패
- FailureDetectionJobErrors=<0 or greater>
- OverrideJobFailureDetection=true일 때만 사용 가능
- 작업이 몇 번의 에러 발생 후 실패할지 지정
- 0이면 작업 실패 감지 비활성화
📌 예제:
FailureDetectionJobErrors=5
→ 작업에서 5회 이상 오류 발생 시 작업 실패
2. 태스크(Task) 단위 실패 감지
각 작업(Job) 내에서 작은 단위의 태스크(Task) 실행 실패 여부를 감지할 수 있습니다.
🔹 글로벌 실패 감지 설정 무시 (태스크 단위)
- OverrideTaskFailureDetection=<true/false>
- 전역(Task) 실패 감지 설정을 무시하고 개별 설정을 사용
- true로 설정하면 아래 설정값 적용 (기본값: false)
📌 예제:
OverrideTaskFailureDetection=true
→ 글로벌(Task) 실패 감지 설정을 무시하고 개별 설정 적용
🔹 특정 에러 횟수 초과 시 태스크 실패
- FailureDetectionTaskErrors=<0 or greater>
- OverrideTaskFailureDetection=true일 때만 사용 가능
- 태스크가 몇 번의 에러 발생 후 실패할지 지정
- 0이면 태스크 실패 감지 비활성화
📌 예제:
FailureDetectionTaskErrors=3
→ 각 태스크에서 3회 이상 오류 발생 시 태스크 실패
3. 작업이 "Bad Job"으로 표시되는 것 방지
- IgnoreBadJobDetection=<true/false>
- true로 설정하면 Workers가 해당 작업을 "Bad Job"으로 인식하지 않음
- 기본값: false (에러가 많으면 "Bad Job"으로 판단)
📌 예제:
IgnoreBadJobDetection=tru
→ 에러가 많아도 계속 작업 시도
4. 오류 경고(Notification) 설정
- SendJobErrorWarning=<true/false>
- 특정 오류 횟수 도달 시 경고 알림을 보낼지 여부
- 기본값: false (알림 비활성화)
📌 예제:
SendJobErrorWarning=true
→ 오류 횟수가 일정 수 이상이면 경고 알림 전송
📌 정리
옵션 설명 기본값
OverrideJobFailureDetection | 글로벌 Job 실패 감지 설정을 무시하고 개별 설정 사용 | false |
FailureDetectionJobErrors | 특정 에러 횟수 초과 시 작업(Job) 실패 | 0 (비활성화) |
OverrideTaskFailureDetection | 글로벌 Task 실패 감지 설정을 무시하고 개별 설정 사용 | false |
FailureDetectionTaskErrors | 특정 에러 횟수 초과 시 태스크(Task) 실패 | 0 (비활성화) |
IgnoreBadJobDetection | 작업이 "Bad Job"으로 표시되지 않도록 설정 | false |
SendJobErrorWarning | 특정 오류 횟수 도달 시 경고 알림 전송 | false |
🚀 활용 예제
📌 작업(Job) 및 태스크(Task) 실패 감지 설정 및 경고 알림 활성화
OverrideJobFailureDetection=true
FailureDetectionJobErrors=10
OverrideTaskFailureDetection=true
FailureDetectionTaskErrors=3
SendJobErrorWarning=true
✅ 설정 의미:
- 작업에서 10번의 에러 발생 시 실패
- 각 태스크에서 3번의 에러 발생 시 실패
- 경고 알림 활성화 (오류 발생 시 관리자에게 알림 전송)
🛠 활용 사례
✅ 렌더링 작업에서 특정 오류 횟수를 초과하면 자동 중단
✅ 작업이 실패하기 전에 관리자에게 알림을 보내서 대응할 수 있도록 설정
✅ 작업이 "Bad Job"으로 인식되지 않고 계속 실행되도록 조정 가능
이 설정을 활용하면 작업 실패 감지를 보다 세밀하게 제어하고, 불필요한 작업 중단을 방지할 수 있습니다. 🚀
렌더링 관리
- Pool=<poolName>
- 작업을 제출할 **기본 풀(Pool)**을 지정합니다.
- 기본값: 없음
- SecondaryPool=<poolName>
- 기본 풀에 사용 가능한 머신이 없을 경우, 대체 풀(Secondary Pool)에서 렌더링할 수 있도록 지정합니다.
- 기본값: 없음
- Group=<groupName>
- 작업이 실행될 **그룹(Group)**을 지정합니다.
- 기본값: 없음
- Priority=<0 or greater>
- 작업의 우선순위를 지정합니다.
- 0이 가장 낮은 우선순위, 기본값은 50입니다.
- 최대 우선순위 값은 Repository 설정에서 조정할 수 있으며, 기본값은 100입니다.
- ChunkSize=<1 or greater>
- 하나의 작업(Task)에서 렌더링할 프레임 수를 지정합니다.
- 기본값: 1 (각 작업이 1개의 프레임을 렌더링)
- ConcurrentTasks=<1-16>
- 한 Worker가 동시에 처리할 수 있는 최대 작업(Task) 수를 설정합니다.
- 기본값: 1 (한 번에 하나의 작업만 실행)
- 멀티스레딩을 지원하는 스크립트 플러그인에서 유용하게 사용됨.
- LimitConcurrentTasksToNumberOfCpus=<true/false>
- ConcurrentTasks 값이 1보다 클 경우, Worker의 CPU 코어 수를 초과하지 않도록 제한할지 여부를 설정합니다.
- 기본값: true
작업 완료 후 처리
- OnJobComplete=<Nothing/Delete/Archive>
- 작업이 완료된 후 수행할 동작을 설정합니다.
- Nothing: 아무 작업도 수행하지 않음 (기본값)
- Delete: 작업을 삭제
- Archive: 작업을 아카이브로 저장
기타 옵션
- SynchronizeAllAuxiliaryFiles=<true/false>
- 작업 파일(Job Files)을 동기화할지 여부를 설정합니다.
- 기본적으로 Job Info File 및 Plugin Info File만 동기화되지만,
true로 설정하면 모든 작업 관련 파일이 동기화됩니다. - 네트워크 부하가 증가할 수 있으므로, 작업 파일을 직접 수정해야 하는 경우에만 활성화하는 것이 좋습니다.
- 기본값: false
- ForceReloadPlugin=<true/false>
- 각 프레임 렌더링 후 플러그인을 다시 로드할지 여부를 설정합니다.
- 메모리 누수 방지나, 제대로 언로드되지 않는 애플리케이션 처리에 유용함.
- 기본값: false
- Sequential=<true/false>
- Worker가 작업을 순차적으로 실행하도록 강제하는 옵션입니다.
- 이전 작업이 재할당(Requeue)되더라도, 현재 진행 중인 작업이 끝난 후 실행됩니다.
- 이 설정을 활성화하면 더 높은 우선순위의 작업보다 현재 작업을 먼저 완료해야 합니다.
- 기본값: false
- SuppressEvents=<true/false>
- true로 설정하면 이 작업과 관련된 이벤트 플러그인 실행을 방지합니다.
- 기본값: false
- Protected=<true/false>
- true로 설정하면 작업이 보호되며,
작업의 사용자, 관리자, 또는 특정 권한을 가진 사용자만 삭제/아카이브할 수 있음 - 또한, Deadline의 자동 정리 프로세스에서 이 작업을 제거하지 않음
- 기본값: false
- true로 설정하면 작업이 보호되며,
- InitialStatus=<Active/Suspended>
- 작업이 제출된 후, 즉시 활성화(Active)할지 일시 중지(Suspended)할지 설정합니다.
- 기본값: Active
- NetworkRoot=<repositoryUNCPath>
- 작업이 제출될 Deadline Repository의 경로를 지정합니다.
- 여러 개의 Repository를 사용할 경우 필수 설정
- 기본값: 현재 사용 중인 기본 Repository
예제 (Job Info File)
다음은 Maya 렌더 작업을 제출할 때 사용할 수 있는 Job Info File 예제입니다.
Plugin=MayaBatch
Name=MyRenderJob
Comment=This is a test render
Department=Animation
UserName=johndoe
Frames=1-100
Pool=render_pool
Group=high_priority
Priority=75
ChunkSize=10
ConcurrentTasks=2
LimitConcurrentTasksToNumberOfCpus=true
OnJobComplete=Delete
Sequential=false
Protected=true
InitialStatus=Active
이 설정을 사용하면:
- MayaBatch 플러그인 사용
- 작업 이름: MyRenderJob
- 프레임 범위: 1~100
- 풀: render_pool
- 그룹: high_priority
- 우선순위: 75
- 한 번에 10프레임씩 렌더링
- Worker가 최대 2개의 작업을 동시에 실행
- CPU 개수보다 많은 작업을 할당하지 않도록 제한
- 작업 완료 후 자동 삭제
- 보호된 상태(관리자만 삭제 가능)
- 즉시 활성화
이제 이 파일을 Plugin Info File과 함께 제출하면 됩니다.
타임아웃 설정 (Timeouts)
Deadline의 작업 정보 파일(Job Info File)에서 설정할 수 있는 타임아웃 옵션입니다.
이 옵션들은 Worker가 특정 시간 내에 작업을 완료하지 못할 경우 적절한 처리를 하기 위해 사용됩니다.
최소 렌더링 시간 (Minimum Render Time)
- MinRenderTimeSeconds=<0 or greater>
- Worker가 최소 몇 초 동안 렌더링을 수행해야 하는지 설정합니다.
- 이 시간보다 짧게 렌더링이 완료되면 오류가 보고됨
- 기본값: 0 (제한 없음)
- MinRenderTimeMinutes가 설정되어 있으면 무시됨.
- MinRenderTimeMinutes=<0 or greater>
- Worker가 최소 몇 분 동안 렌더링을 수행해야 하는지 설정합니다.
- 기본값: 0 (제한 없음)
- MinRenderTimeSeconds보다 우선 적용됨.
작업(Task) 제한 시간
- TaskTimeoutSeconds=<0 or greater>
- Worker가 **하나의 작업(Task)을 렌더링하는데 허용된 최대 시간(초)**을 설정합니다.
- 이 시간이 초과되면 작업이 타임아웃 처리됨.
- 기본값: 0 (제한 없음)
- TaskTimeoutMinutes가 설정되어 있으면 무시됨.
- TaskTimeoutMinutes=<0 or greater>
- Worker가 **하나의 작업(Task)을 렌더링하는데 허용된 최대 시간(분)**을 설정합니다.
- 기본값: 0 (제한 없음)
- TaskTimeoutSeconds보다 우선 적용됨.
작업 시작 제한 시간
- StartJobTimeoutSeconds=<0 or greater>
- Worker가 **작업을 시작하는데 허용된 최대 시간(초)**을 설정합니다.
- 기본값: 0 (제한 없음)
- StartJobTimeoutMinutes가 설정되어 있으면 무시됨.
- StartJobTimeoutMinutes=<0 or greater>
- Worker가 **작업을 시작하는데 허용된 최대 시간(분)**을 설정합니다.
- 기본값: 0 (제한 없음)
- StartJobTimeoutSeconds보다 우선 적용됨.
플러그인 로딩 제한 시간
- InitializePluginTimeoutSeconds=<0 or greater>
- Worker가 **렌더링 애플리케이션 플러그인을 로드하는데 허용된 최대 시간(초)**을 설정합니다.
- 기본값: 0 (제한 없음)
타임아웃 발생 시 동작
- OnTaskTimeout=<Error/Notify/ErrorAndNotify/Complete>
- 작업이 타임아웃될 경우 수행할 동작을 지정합니다.
- Error: 오류를 발생시킴 (기본값)
- Notify: 관리자에게 알림을 보냄
- ErrorAndNotify: 오류를 발생시키고 알림도 보냄
- Complete: 작업을 완료된 것으로 처리하고 넘어감
스크립트 및 프레임 기반 타임아웃
- EnableTimeoutsForScriptTasks=<true/false>
- true로 설정하면, 타임아웃 설정이 작업(Task)뿐만 아니라 작업 전후 스크립트(Pre/Post Job Scripts)에도 적용됨.
- 기본값: false
- EnableFrameTimeouts=<true/false>
- true로 설정하면, 타임아웃을 Task 기반이 아닌 Frame 기반으로 적용합니다.
- 기본값: false (Task 기반)
자동 타임아웃 설정
- EnableAutoTimeout=<true/false>
- true로 설정하면, Worker가 자동으로 렌더링 시간이 너무 길어졌는지 판단하여 타임아웃을 적용합니다.
- 이 기능은 Repository 설정 및 이전 작업의 렌더링 시간을 기반으로 동작함.
- 기본값: false
예제 (Timeout 설정)
MinRenderTimeMinutes=2
TaskTimeoutMinutes=30
StartJobTimeoutSeconds=300
InitializePluginTimeoutSeconds=60
OnTaskTimeout=ErrorAndNotify
EnableTimeoutsForScriptTasks=true
EnableFrameTimeouts=false
EnableAutoTimeout=true
- 최소 2분 이상 렌더링해야 함, 그렇지 않으면 오류 발생
- 하나의 작업(Task)이 30분을 초과하면 타임아웃 처리
- 작업 시작이 5분(300초) 이상 지연되면 타임아웃
- 플러그인 로딩이 60초 이상 걸리면 타임아웃
- 타임아웃 발생 시 오류를 보고하고 관리자에게 알림 전송
- 스크립트 작업에도 타임아웃 적용
- 자동 타임아웃 활성화
job info
Manual Job Submission — Deadline 10.4.0.13 documentation
Overview Manual job submission is useful if you want more control over the submission process. For example, if you’re writing a custom submission script, or you are integrating the submission process into an internal pipeline tool, you will probably want
docs.thinkboxsoftware.com
plugin info
Application Plugins — Deadline 10.4.0.13 documentation
When an item is marked as server data, it is stored differently than other data. The purpose of this is to reduce data transfer in cases where a lot of data needs to be stored as configuration data, but needs to be accessed less frequently than the rest of
docs.thinkboxsoftware.com
'Deadline' 카테고리의 다른 글
Remote Connection Server (0) | 2025.03.10 |
---|---|
deadline forum (0) | 2025.01.22 |
Unreal Engine 5 (0) | 2025.01.21 |
After Effects (0) | 2025.01.21 |