맥스스크립트 기본

Wire Parameter(1)

스크립팅하는애님 2019. 12. 16. 16:41
728x90
반응형
 

안녕하세요.

애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.

오늘 할 이야기는 Wire Parameter입니다.

 

Wire Parameter는 리깅 작업할 때 자주 쓰이는 기능인데 프레임마다 실시간으로 계산을 해야 하기 때문에 뷰포트상에서 돌리기에는 상당히(?) 무거운 기능이지만, 그렇다고 안 쓰자니 너무 편리한 기능이라 정말 난감합니다. ㅎㅎ

랜더링으로 출력된 동영상이 최종 데이터라면 그런 걱정은 없겠지만요.

 

다음과 같이 Point 두개를 만들겠습니다.

 

 

Point001은 월드축 Position 0, 0, 0에 위치합니다.(위쪽의 Point)

Point002는 월드축 Position 0, 0, -30에 위치합니다.(아래쪽의 Point)

두 Point의 축은 위 이미지와 같습니다.(Top 뷰에서 만들었습니다.)

WireParameter를 이용하여 Point02가 X축으로 움직일때 Point01은 Z 축으로 회전하도록 하겠습니다.

 

paramWire.connect

여기서 사용되는 스크립트 명령어는 paramWire.connect입니다.

<bool>paramWire.connect <value>fromParam <value>toParam <string>toExpr

<value>fromParam : 영향을 주는 Controller의 하위 값을 뜻합니다. 여기서는 Point002의 X_Position이 됩니다.

<value>toParam : 영향을 받는 Controller의 하위 값을 뜻합니다. 여기서는 Point001의 Z_Rotation이 됩니다.

<string>toExpr : WireParameter에 세부적으로 실행되는 규칙을 입력합니다. 여기선 X의 위치 값을 적용하기 때문에 'X_Position'이 됩니다.

실행 후 성공하면 true를 실패하면 false를 돌려줍니다.

 

다음과 같이 MAXScript editor에 입력하고 실행하여 봅시다.

 

1
paramWire.connect $'point002'.pos.controller[#X_Position] $'point001'.rotation.controller[#Z_Rotation] "X_Position"
cs

 

이제 아래쪽에 있는 Point002의 X축을 잡고 움직여보면 위쪽의 Point001이 Z 축으로 회전하는 것을 볼 수 있습니다.

 

 

그런데 여기서 문제가 있습니다.

Point001의 회전이 너무 민감하게 움직입니다.

이것은 회전 값과 이동 값이 1:1로 매칭이 되지 않기 때문입니다.

적당히 맞추고 싶다면 1/10이나 1/20과 같이 느낌으로 움직이면서 맞추는 방법이 있습니다.

 

1
paramWire.connect $'point002'.pos.controller[#X_Position] $'point001'.rotation.controller[#Z_Rotation] "X_Position/10"
cs

 

이런 식으로 말이죠.

 

하지만 Point002가 10만큼 움직일 때 Point001이 10도만큼 회전하길 바란다면 다음과 같이 사용하시면 됩니다.

 

1
paramWire.connect $'point002'.pos.controller[#X_Position] $'point001'.rotation.controller[#Z_Rotation] "degToRad (X_Position)"
cs

 

'degToRad'는 이동 값을 회전 값으로 변환해주는 함수입니다.

실행 후 Point002의 이동 값과 Point001의 회전 값을 비교해보시면 같다는 것을 알 수 있습니다.

 

오늘은 여기까지 이야기하고 다음 시간에 연결을 끊는 방법과 기타 알아두면 편한 것을 알아보겠습니다.

728x90
반응형

'맥스스크립트 기본' 카테고리의 다른 글

Callback(3) : 확인  (0) 2021.01.31
Callback(2) : 삭제  (0) 2021.01.30
Callback(1) : 소개와 추가  (0) 2021.01.29
Wire Parameter(2)  (0) 2019.12.17
Constraints - Path(5)  (0) 2019.11.29
Constraints - Path(4)  (0) 2019.11.28
Constraints - Path(3)  (0) 2019.11.27
Constraints - Path(2)  (0) 2019.11.26