스크립트 제어기

스크립트 컨트롤러는 표현식 컨트롤러와 유사하게 동작합니다. 이러한 제어기는 제어기 값을 계산하기 위한 스크립트를 입력할 수 있는 스크립트 제어기 대화상자를 제공합니다.

3ds Max에서는 다음과 같은 스크립트 제어기를 사용할 수 있습니다.

여러 스크립트 제어기 유형의 차이점은 주로 제어기를 할당할 수 있는 애니메이션 트랙 유형에 있습니다. 예를 들어 변형 스크립트 제어기는 변형 트랙에 할당하고, 위치 스크립트 제어기는 위치 트랙에 할당하고, 위치 제어기가 위치 XYZ인 경우 모든 또는 임의의 개별 위치 트랙(위치 X/Y/Z)에 부동 스크립트 제어기를 할당할 수 있습니다.

스크립트 제어기의 주요 장점은 다음과 같습니다.

이 스크립트 언어에 대한 자세한 내용은 MAXScript 도움말을 참조하십시오.

변형 스크립트 제어기

변형 스크립트 제어기는 위치/회전/배율 조정(PRS) 제어기에 포함된 모든 정보를 하나의 스크립트된 매트릭스 값에 포함합니다. 위치, 회전 및 배율 조정에 대해 세 개의 별도 트랙을 사용하는 대신 단일 스크립트 제어기 대화상자에서 세 값에 동시에 액세스할 수 있습니다. 스크립트에서 변환 값을 정의하므로 애니메이션하기가 더 쉽습니다.

제어기 스크립트의 값은 matrix3 값이어야 합니다. matrix3 값은 4x3 3D 변형 매트릭스입니다. 자세한 내용은 MAXScript 도움말의 Matrix3 값 항목을 참조하십시오.

제어기 스크립트 작성

3ds Max에서는 스크립트 텍스트 상자에 입력하는 텍스트를 MAXScript 블록 표현식의 본문으로 해석합니다. 원하는 만큼 여러 행에 걸쳐 많은 식을 입력할 수 있으며, 입력된 식은 차례대로 평가됩니다. 마지막 식의 값이 제어기 값으로 사용됩니다. 이 값은 부동에 대해 float, 위치에 대해 point3, 회전에 대해 quat, 변환에 대해 matrix3 등 제어기에 맞는 유형이어야 합니다.

문자는 블록 표현 내에 있으므로 해당 스크립트 내에서만 보이고 하나의 평가를 위하여 임시적인 지역 변수를 선언할 수 있습니다. 또한 MAXScript의 다른 모든 스크립트와 공유되며 하나의 식의 값을 유지했다가 다음 식에 넘겨 주는 글로벌 변수를 선언하거나 액세스할 수도 있습니다.

제어기는 특정 애니메이션 시간과 관련하여 3ds Max에서 항상 평가됩니다. 따라서 현재 시간 슬라이더가 될 수도 있고 애니메이션이 재생 중이거나 렌더링 진행 중일 경우 프레임 시간이 증가할 수도 있습니다. 스크립트 제어기의 경우, 평가 중인 시간은 제어기 스크립트 주변 자동 "at time" 컨텍스트를 설정하는 데 사용되므로, 다른 명시적 "at time" 식 외부에서 액세스하는 모든 특성이 현재 제어기 평가 시간에 대한 올바른 값을 제공합니다. 다시 말해서 적당한 시기에 스크립트를 작동시키기 위해 별다른 작업을 수행할 필요가 없다는 뜻입니다. 표준 MAXScript 변수 현재 시간을 갖는 평가 시간을 액세스할 수 있습니다. 또한 일반 MAXScript 프로그래밍에서처럼 스크립트의 "at time" 식을 사용하여 다른 시간에 장면 특성 값을 참조할 수도 있습니다.

변수에 노드 및 트랙에 할당

장면의 노드나 애니메이션 트랙을 참조해야 하는 경우 스크립트 제어기 변수 툴셋을 사용하여 특수 노드 또는 제어기 트랙에 할당할 수 변수를 생성하는 것이 좋습니다. 즉, 나중에 장면 오브젝트 이름 변경하기로 한 경우 변수가 노드 링크를 유지하기 때문에 스크립트 제어기는 이러한 오브젝트를 사용하여 유지됩니다.

그렇지 않을 경우, 예를 들어 대화 상자의 표현식 창에 변수에 노드를 수동으로 할당하는 경우 해당 특정 노드의 이름을 변경하자 마자 해당 링크가 손상됩니다.

주: 특히 외부 참조 장면과 오브젝트를 사용할 때 해당 버튼을 사용하여 변수에 노드와 트랙을 할당해야 합니다.

절차

예: 애니메이션 도중에 배경 내의 다른 오브젝트를 기준으로 특정 오브젝트를 중앙에 유지하기

  1. 중앙에 남아있어야 할 오브젝트를 foo라 명명하고 이 오브젝트의 위치 트랙에 스크립트 제어기를 할당하십시오.
  2. 이름 필드에 foo를 입력하고 만들기를 클릭하십시오.

    새 변수가 자동으로 변수 리스트에 추가됩니다.

  3. 해당 변수를 강조 표시하고 노드 할당을 클릭하십시오.

    트랙 뷰 선택 대화상자가 열리고 장면의 내용이 나열됩니다.

  4. foo를 찾을 때까지 오브젝트 계층을 확장하십시오. foo를 선택하고 확인을 클릭하십시오.

    foo 노드가 변수에 할당됩니다.

  5. 다음 스크립트를 스크립트 제어기 대화상자의 표현식 창에 입력하십시오.

    local pos=[0,0,0]

    for o in objects where o != foo do

    pos += o.pos

    pos / (objects.count - 1)

    이 스크립트는 로컬을 설정하고 foo를 제외한 모든 오브젝트에 대하여 반복하면서 전체 위치 벡터를 누적하고 마지막 행에서 평균을 계산함으로써 현재 오브젝트(여기서는 foo)를 제외한 모든 오브젝트의 평균 위치를 계산하며 이 값은 이 스크립트의 최종 결과가 됩니다.

변형 스크립트 제어기를 사용하려면:

  1. 오브젝트 선택
  2. 마우스 오른쪽 버튼을 클릭하여 쿼드 메뉴를 엽니다.
  3. 변환 사분면에서 곡선 편집기를 클릭합니다.
  4. 트랙 뷰에서 선택한 오브젝트의 변형 트랙을 선택합니다.
  5. 변환 제어기 할당 대화 상자에서 변형 스크립트를 선택하고 확인을 클릭합니다.

    스크립트 제어기 대화 상자가 열립니다.

  6. 스크립트 제어기 대화 상자에서 matrix3을 편집하고 완료되면 평가를 클릭합니다.

인터페이스

스크립트 제어기 할당은 스크립트를 입력할 수 있는 스크립트 제어기를 자동으로 엽니다. 모션 패널이나 트랙 뷰 계층의 트랙을 오른쪽 클릭하고 특성을 선택하거나 트랙 뷰 도구 모음의 특성 버튼을 클릭함으로써 이 대화상자를 그 후에 열 수도 있습니다.

팁: 가장자리나 모서리를 끌어당겨 대화상자의 크기를 조정할 수 있습니다.

변수 만들기 그룹

이름
사용자 변수 이름을 입력하고 편집할 수 있습니다.
만들기
변수를 생성하여 변수 리스트에 추가합니다.
삭제
변수 리스트에서 강조 표시된 변수를 제거합니다. 이름 필드에 이름을 입력한 다음 삭제를 클릭하여 변수를 삭제할 수도 있습니다.
이름 바꾸기
강조 표시된 변수의 이름을 변경합니다.

변수 매개변수 그룹

틱 간격띄우기
현재 변수에 대해 시간 간격띄우기(틱)를 지정합니다. 스크립트가 평가된 경우 변수의 값이 현재 시간 + 틱 간격띄우기 값으로 설정됩니다.
주: 시간 간격띄우기는 상수가 할당된 변수에 아무런 영향을 미치지 않습니다.
변수 리스트

제어기의 사용 가능한 모든 변수를 나열합니다. 다음의 미리 정의된 상수 변수는 모든 스크립트 제어기에서 사용할 수 있으며 삭제하거나 이름을 변경할 수 있습니다.

  • F현재 시간(프레임)
  • NT정규화된 시간
  • S현재 시간(초)
  • T현재 시간(틱)
상수 할당
강조 표시된 변수에 상수를 할당할 수 있는 대화상자를 엽니다.
  • 값 표현식 아무 MAXScript 값이나 표현식(예: 정수, 부동, 배열 등)을 입력합니다.
  • 값 표현식 결과위 표현식의 결과를 표시합니다.
  • 평가 현재 시간에서 표현식을 분석합니다.
  • 확인현재 변수에 값 표현식 결과를 할당합니다.
  • 취소현재 값 표현식 결과를 무시하고 대화상자를 닫습니다.
트랙 할당
강조 표시된 변수에 트랙을 할당할 수 있습니다.
제어기 할당
강조 표시된 변수에 제어기를 할당할 수 있습니다. 제어기의 값은 현재 시간 + 변수의 틱 간격띄우기에 얻어집니다.
노드 할당
강조 표시된 변수에 노드를 할당할 수 있습니다.
표현식 창
평가할 표현식을 표시합니다. 이 창에서 텍스트를 편집할 수 있습니다.
설명 창
이 텍스트 창에서 제어기 작동 방식, 사용 방법 등에 대한 설명을 입력할 수 있습니다.
저장
스크립트를 MAXScript(.ms) 텍스트 파일에 저장하려면 클릭합니다.
로드
MAXScript(.ms) 텍스트 파일에서 스크립트를 로드하려면 클릭합니다.
디버그
스크립트 제어기 디버그 창을 엽니다. 이 창은 스크립트에 사용된 모든 변수의 값을 표시합니다.
평가
스크립트 표현식을 평가합니다. 시간 슬라이더의 현재 위치에 대한 평가가 계산됩니다.
닫기
제어기 스크립트를 컴파일하고 오류가 있는지 확인합니다. 오류가 없으면 대화 상자가 닫힙니다. 문제가 발생하면 대화 상자를 닫고 식을 현재 트랙의 원래 값으로 돌아갈지(확인) 아니면 식 편집으로 돌아갈지(취소) 여부를 묻는 쿼리 상자가 나타납니다.