3ds Max Batch 사용하기

3ds Max Batch를 사용하기 시작하려면 다음을 수행합니다.
  1. 명령 프롬프트 창을 엽니다.
  2. 3ds Max가 설치된 위치로 디렉토리를 변경합니다. 기본 위치는 C:₩Program Files₩Autodesk₩3ds Max <버전 번호>입니다.
  3. 다음을 입력합니다.

    3dsmaxbatch.exe <script_file> [options]

    이 구문에서 <script_file>은 MAXScript 또는 Python 스크립트의 이름이며 필수 매개변수입니다. 3ds Max Batch는 스크립트 유형을 자동으로 탐지하며, 모든 MAXScript 확장자와 .py, .pyc 및 .pyw Python 파일을 실행할 수 있습니다.

  4. 3ds Max Batch는 지정된 3ds Max 장면 파일(제공된 경우 - 선택적 매개변수)을 시작 및 로드합니다. 그리고 나서 script_file 및 모든 추가 입력을 실행합니다(제공된 경우). 그런 다음 종료됩니다.

3ds Max Batch 옵션

다음 중 하나 이상을 3dsmaxbatch.exe에 옵션으로 전달할 수 있습니다.

-help
모든 옵션을 표시합니다.
-v arg

시스템 로그 자세한 표시 수준. 유효한 인수:

  • 0 - 치명적 오류
  • 1 - 오류
  • 2 - 경고
  • 3 - 프로세스 정보 메시지
  • 4 - 모든 정보 메시지
  • 5 - 디버그 수준 메시지.

기본값은 2입니다.

주: 이 매개변수는 3ds Max 자체가 아닌 3ds Max Batch에서 생성된 메시지에만 적용됩니다. 예를 들어 5로 설정하면 3ds Max에서 생성된 모든 메시지가 표시되지 않습니다. 아래 섹션을 참조하십시오.
-dateFormat arg

콘솔 로그용 날짜 형식 문자열. 예: "yyyy-MM-dd" 또는 "ddd, MM/dd/yyyy"

날짜 및 시간 문자열 형식에 대한 설명은 https://docs.microsoft.com/ko-KR/dotnet/standard/base-types/standard-date-and-time-format-strings를 참조하십시오.

-timeFormat arg

콘솔 로그용 시간 형식 문자열. 예: "hh:mm:ss" 또는 "ss : mm"

날짜 및 시간 문자열 형식에 대한 설명은 https://docs.microsoft.com/ko-KR/dotnet/standard/base-types/standard-date-and-time-format-strings를 참조하십시오.

-i arg

3ds Max 구성 파일(.ini). 사용자별 기본 구성 파일의 기본값(3dsmax.ini).

-p arg

3ds Max 플러그인 구성 파일(.ini). 사용자별 기본 플러그인 구성 파일의 기본값(Plugin.UserSettings.ini)

자세한 내용은 3ds Max 개발자 안내서 문서의 "Plugin.ini" 항목을 참조하십시오.

-listenerlog arg

리스너의 출력을 캡처하기 위한 3ds Max 리스너 로그 파일. 기본적으로는 리스너 로그가 생성되지 않습니다.

자세한 내용은 MAXScript 안내서 문서의 "문자열 리터럴"을 참조하십시오.

-log arg

3ds Max 시스템 로그 파일. 스크립트 오류 및 예외가 이 파일에 기록됩니다. 사용자별 시스템 로그 파일의 기본값(Max.log)

-dm arg

대화상자 모니터 상태. on인 경우 대화상자 모니터가 플러그인의 대화상자를 감시하고, 이를 닫습니다. 유효한 선택 옵션: 'on|off', 'yes|no', '1|0' 및 'true|false'.

기본값은 off입니다.

대화상자 모니터에 대한 자세한 내용은 MAXScript 안내서의 "인터페이스: DialogMonitorOPS" 항목을 참조하십시오.

-mxsString arg

MAXScript 문자열 매개변수 옵션, 여기에서 arg = <key>:<value>.

<value><script_file>에서 maxOps.mxsCmdLineArgs 사전(<key>를 사전 키로 사용)을 통해 MAXScript 문자열로 액세스할 수 있습니다.

이 문자열은 MAXScript 문자열이어야 합니다. 즉, 따옴표로 묶어야 하며, 이 문자열 안의 모든 따옴표 또는 기타 특수 문자는 이스케이프되어야 합니다. 이 문자열이 verbatim 문자열임을 나타내는 '@' 기호가 접두사로 붙을 수도 있습니다. 자세한 내용은 MAXScript 안내서 문서의 "문자열 리터럴"을 참조하십시오.

여러 번 지정할 수 있습니다.

-mxsValue arg

MAXScript 값 매개변수 옵션, 여기에서 arg = <key>:<value>.

<value><script_file>에서 maxOps.mxsCmdLineArgs 사전(<key>를 사전 키로 사용)을 통해 MAXScript 값으로 액세스할 수 있습니다.

<value> 매개변수는 따옴표로 묶어야 합니다.

여러 번 지정할 수 있습니다.

-sceneFile arg

<script_file> 실행 전에 로드되어야 하는 입력 3ds Max 장면 파일입니다.

-safescene <ON|OFF>
이 3ds Max 세션에 대해 안전 장면 스크립트 실행 기능을 활성화할지 아니면 비활성화할지를 지정합니다. 이 설정은 보안 기본 설정 탭의 설정을 재지정합니다.

인수로 전달된 경로는 전체 경로로 지정되지 않은 경우 현재 디렉토리에 상대적입니다.

3ds Max Batch 스크립트에 정보 전달

각각 문자열과 값을 전달하는 두 개의 명령행 옵션, -mxsString-mxsValue를 통해 실행하는 MAXScript 파일로 정보를 전달할 수 있습니다. 해당 값은 maxOps.mxsCmdLineArgs 사전 내 MAXScript에서 키/값 데이터 쌍으로 액세스할 수 있습니다.

예를 들어, 다음과 같은 명령행 호출을 가정해 보십시오.

<3dsmaxpath>3dsmaxbatch demo_mxscmdline.ms -mxsString string1:"Hello"  -mxsValue value1:"[3,12,22]" -mxsValue value2:"Point3 3 8 2.3" -listenerLog "test.log"

그리고 demo_mxscmdline.ms 스크립트는 다음과 같습니다.

opts = maxOps.mxsCmdLineArgs

for k in opts.keys do (
	format "% == % class: %\n" k opts[k] (classOf opts[k])
)

리스너 로그 test.log에 다음과 같은 출력이 포함됩니다.

#string1 == Hello class: String
#value2 == [3,8,2.3] class: Point3
#value1 == [3,12,22] class: Point3

Python 스크립트도 pymxs.runtime 오브젝트를 통해 이 값에 액세스할 수 있습니다.

Python에 작성된 동일한 스크립트는 다음과 같습니다.

# demo using pymxs
from pymxs import runtime as rt

opts = rt.maxops.mxsCmdLineArgs

for k in opts.keys:
    print "{} == {} class: {}\n".format(k, opts[k], rt.classof(opts[k]))

# you can also get dict values using runtime.name, for example:
# value1 = opts[rt.name('value1')]
# or using runtime.execute to run MAXScript code
# value1=rt.execute("GetDictValue maxops.mxsCmdLineArgs #value1")

3ds Max Batch 작업에 대한 정보 가져오기

배치 처리 스크립트에서 오류를 찾아 수정하려면 먼저 3ds Max에서 스크립트를 실행합니다. 일단 스크립트가 제대로 작동하면 3ds Max Batch에서 해당 스크립트를 실행할 수 있습니다. 스크립트 실행 시 유용한 정보를 제공하는 두 가지 기본 로그가 있습니다.
  • MAXScript 리스너 로그는 명령 및 텍스트 파일에 출력된 모든 내용을 캡처합니다. 기본적으로 3dsmaxbatch는 리스너 로그를 생성하지 않지만 -listenerlog 옵션을 지정하여 로그를 지정할 수 있습니다.
  • 3ds Max 세션 로그는 사용자의 세션을 기본적으로 %LOCALAPPDATA%3dsMax₩<버전 번호>-64bit₩<언어>₩network₩Max.log에 캡처합니다. -log 명령행 옵션을 사용하여 파일 경로를 변경할 수 있습니다. MAXScript 및 Python 스크립트 오류가 이 파일에 기록됩니다.
주: 항상 리스너 로그를 켜 두면 정보 수집 및 디버깅을 위해 스크립트 실행 출력을 활용할 수 있습니다.

또한 MAXScript를 통해 로그 파일에 메시지를 추가할 수 있습니다. MAXScript에서 logsystem.logEntry <string> broadcast:true 함수를 사용하면 스크립트 진행률을 기록할 수 있습니다. broadcast:true 매개변수는 3ds Max가 이 로그 메시지를 3ds Max Batch로 브로드캐스팅해야 함을 나타냅니다.

loadMaxFile()이 있는 스크립트 또는 3ds Max Batch(-sceneFile)에 대한 인수로 3ds Max 장면 파일을 로드할 수 있습니다. 선택하는 방법은 누락된 플러그인 및 외부 참조에 반응하려는 방식에 따라 달라집니다. loadMaxFile() 메서드가 누락된 플러그인, 외부 참조 등을 처리할 인수를 제공하므로 스크립트가 그에 맞춰 반응할 수 있습니다( MAXScript 안내서). -sceneFile을 통해 파일을 로드하면 콘솔에 누락된 플러그인 및 외부 참조 정보가 출력되므로 3ds Max Batch를 호출하는 자동화 스크립트에서 이 정보를 처리할 수 있습니다.

스크립트는 maxops.isInNonInteractiveMode() MAXScript 메서드를 사용하여 UI가 있는 3ds Max 세션에서 실행 중인지 또는 3ds Max Batch에서 실행 중인지를 확인할 수 있습니다. 자세한 내용은 MAXScript 안내서 문서의 "문자열 리터럴"을 참조하십시오.

종료 코드

3ds Max에서 오류가 기록되는 경우 3ds Max Batch는 0이 아닌 종료 코드를 보고합니다.

또한 3ds Max Batch는 성공이 아닌 경우 3ds Max의 종료 코드(0)도 보고합니다.

자동화 도구는 3ds Max Batch 및 3ds Max의 종료 코드를 검사하여 작업의 성공 여부를 확인하고 작업이 성공하지 않은 경우 문제가 발생한 원인을 확인할 수 있습니다. 성공한 경우 3ds Max Batch는 종료되고 종료 코드는 0입니다. 3ds Max Batch는 전달된 매개변수 또는 3ds Max와의 통신에 오류가 발생한 경우 다음 종료 코드를 보고합니다.

종료 코드 의미
0 성공
-100 인수가 누락되었거나 지정된 인수가 잘못되었습니다.
-110 3ds Max 프로세스를 시작할 수 없습니다. 해당 원인이 콘솔에 기록됩니다.
-120 3ds Max 프로세스와 통신을 설정하거나 유지할 수 없습니다.
-130 3ds Max에서 명령을 실행하는 중 오류가 보고되었습니다.
추가 충돌 코드:
-1 일반 오류, 처리된 예외
-2 처리되지 않은 예외
-3 WM_CLOSE 처리 중 프로세스가 중단됨
-4 WM_DESTROY 처리 중 프로세스가 중단됨
-5 WinMain() 종료 전에 프로세스가 중단됨
-6 메모리 부족
-7 유효한 그래픽 장치를 작성할 수 없음
-8 라이선스 오류
-9 응용프로그램을 작성할 수 없음

또한 MAXScript를 통해, 사용자 정의된 종료 코드로 3ds Max를 종료할 수 있습니다. 이렇게 하려면 인수가 exicodequitMax를 호출합니다. 예를 들어 이 MAXScript에서는 다음과 같습니다.

quitMAX quiet:true exitCode:-314159

그러면 종료 코드 -314159가 콘솔에 출력됩니다.

6/12/2018 15:46:05 PM; Specified option script: testscript.ms
6/12/2018 15:46:05 PM; Defaulted option dm: 0
6/12/2018 15:46:05 PM; Defaulted option li: 0
6/12/2018 15:46:05 PM; 3ds Max Install Location: C:\Program Files\Autodesk\3ds Max 2019\
6/12/2018 15:46:05 PM; 3ds Max Executable: 3dsmax.exe
6/12/2018 15:46:05 PM; Secure Mode: 'OFF'
6/12/2018 15:46:05 PM; Dialog Monitor: Off
6/12/2018 15:46:05 PM; Script command: " -mxs "(filein @\"C:\Program Files\Autodesk\3ds Max 2019\testscript.ms\")""
6/12/2018 15:46:06 PM; Product version: 3ds Max 2019.2 Update (21.2.0.2095)
6/12/2018 15:46:06 PM; Data collection and use is 'OFF'.
6/12/2018 15:46:30 PM; 3ds Max Exit Code = -314159
주: 콘솔에 인쇄하기 위한 종료 코드의 경우 자세한 표시 수준을 "debug" (5)로 설정해야 합니다. 예를 들면 다음과 같습니다.
C:\Program Files\Autodesk\3ds Max 2019>3dsmaxbatch.exe testscript.ms -v 5