이것 저것 개발하고 만들어보기
article thumbnail

 

 

 

 

 

3D MAX는 여러가지 UI가 존재하는데, 이미 만들어진 UI들을 제외하고 본인이 직접 UI를 만들어 프로젝트나 자신에게 제일 효율적인 UI를 따로 작성해 작업을 하는것이 좋습니다.

 

 

그러기 위해서 가장 기본적인 UI 창을 생성하고 UI가 어떻게 어떠한 방식으로 생성되는지 기초적인 부분부터 알아보려 합니다.

 

 

 

 

 

Dialog, RolloutFloater, Utilities

 

 

 

왼쪽부터 Time Configuration, Bone Tools, Utilities 탭

 

 

 

맥스의 기본이 되는 UI를 생성하는 방법은 다이얼로그(Dialog) 와 롤아웃 플로터(RolloutFloater) 그리고 기본 UI 중 우측에 있는 커맨드 패널(Command Panel) 의 유틸리티(Utilities) 메뉴에 새로운 UI를 생성하는 것 입니다.

 

 

다이얼로그는 롤아웃 플로터를 제외한 디스플레이 옵션이나 배경 비트맵, 마우스 이벤트 핸들러와 같은 고급 기능을 제공을 제공합니다.

 

 

롤아웃 플로터는 커맨드 패널을 만들어 패널 안의 기능들을 숨기거나 나타나게 할 수 있도록 사용자가 UI를 직접 조절 할 수 있게 만들 수 있습니다.

 

 

유틸리티는 3D MAX가 기본 제공한 커맨드 패널에 있는 유틸리티 탭으로 작성한 UI를 이용해 기존에 익숙하던 방식으로 메뉴에 접근하게 할 수 있도록 만들 수 있습니다.

 

 

 

 

 

Dialog 

 

 

 

rollout TestRollout "TintanaMenu"
(
)
CreateDialog TestRollout

 

 

 

기본적으로 맥스의 UI를 만들때 쓰이는 롤아웃(Rollout) 함수를 통해 기초적인 UI를 만들 수 있습니다.

 

 

rollout <다이얼로그명(함수명)> <"타이틀명"> 

 

 

이렇게만 지정해 주어도 가장 기본적인 3D MAX의 UI를 생성 할 수 있습니다.

 

 

마지막 줄에 CreateDialog 를 붙여 해당 UI가 다이얼로그로써 기능을 할 수 있도록 롤아웃 함수명을 가져와 다이얼로그로 전환시켜줍니다.

 

 

   

 

 

rollout ButtonTest "Tintana Menu"
(
    button TestButton " Tintana's Button "
        on TestButton pressed do
        (
          messageBox " Onlien "
        )
)

CreateDialog ButtonTest

 

 

롤아웃 함수 안에 다양한 기능의 UI 형태를 추가해 줄 수 있는데, 그중 가장 간단한 button(버튼) 함수를 이용해 기본적인 버튼형 UI를 만들어 줄 수 있습니다.

 

 

button <버튼명(함수명)> <"버튼 이름"> 

 

 

버튼을 만들고 나서 on <이름> pressed do 구문에서 버튼을 눌렀을 때 어떤 동작을 할 것인가를 지정해 줄 수 있습니다.

 

 

버튼을 눌렀을 때 messageBox 에 적힌 문자열을 출력하는 명령어를 넣어서 버튼이 동작했을 때 메세지를 출력하게 할 수 있습니다.

 

 

 

 

 

 

 

 

이를 조금 응용하면 버튼을 눌렀을 때, 오브젝트가 생성되게 할 수도 있습니다.

 

 

맥스 스크립트 리스너 (MAXscript Listener) 에서 기록된 특정 동작을 가져와도 잘 작동합니다.

 

 

 

 

 

RolloutFloater

 

 

 

rollout FloaterTest01 " Rollout01 "
(
)
rollout FloaterTest02 " Rollout02 "
(
)
rollout FloaterTest03 " Rollout03 "
(
)
rollout FloaterTest04 " Rollout04 "
(
)

_AddFloater = newRolloutFloater "FloaterMeny" 200 200


addRollout FloaterTest01 _AddFloater
addRollout FloaterTest02 _AddFloater
addRollout FloaterTest03 _AddFloater
addRollout FloaterTest04 _AddFloater

 

 

 

롤아웃 플로터를 작성 할 때에는 각 롤아웃이 별개의 기능을 가지도록 rollout 함수를 여러개 만들어 주는 것 입니다.

 

 

여러개의 롤아웃을 한꺼번에 통합해주기 위해서는 다음과 같은 변수를 선언해야 합니다.

 

 

(변수명) = newRolloutFloater <"커맨드 패널 이름"> 가로크기 세로크기 

 

 

변수를 선언하고 나서, 모든 롤아웃 메뉴를 한개의 패널에 그룹화 시키기 위해선 다음과 같이 입력합니다

 

 

addRollout  <rollout 의 함수명> <newRolloutFloater 의 변수명>

 

 

addRollout 를 통해서 롤아웃의 함수명과 롤아웃 플로터의 함수명을 같이 써주면 하나의 패널에 여러개의 롤아웃이 사진과 같이 정렬됩니다.

 

 

 

 

 

rollout TestRollout_Strat "TintanaMenu_Strat"
(
    button TestRollout_Strat " Start " width:130 height:30

    on TestRollout_Strat pressed do
    (
        messageBox " GO! "
    )
)

rollout TestRollout_Stop "TintanaMenu_Stop"
(
    button TestRollout_Stop " Stop " width:130 height:30

    on TestRollout_Stop pressed do
    (
        messageBox " Don't do it ! "
    )
)

rollout TestRollout_Speed "TintanaMenu_Speed"
(
    slider panel01  "Speed" orient:#vertical across:2
    slider panel02  "Fuel" orient:#vertical
)

myRolloutFloater = newRolloutFloater " T_Menu "  300 300

addRollout TestRollout_Strat myRolloutFloater rolledUp:true
addRollout TestRollout_Stop myRolloutFloater
addRollout TestRollout_Speed myRolloutFloater

 

 

 

롤아웃의 여러가지 기능을 넣었을 때의 보이는 UI입니다.

 

 

여기서 버튼의 가로세로 크기를 조절해서 이전보다 좀 더 커보이게 만들었는데 버튼의 모양을 다음과 같이 커스텀 할 수 있습니다.

 

 

button <버튼명(함수명)> <"버튼 이름"> pos:[x축 위치, y축 위치] width:버튼 가로크기 heigh:버튼 세로크기

 

 

버튼의 포지션 설정을 안하면 기본적으로 사용자가 설정한 UI의 센터에 정렬됩니다.

 

 

반응형 UI에는 버튼만 있는것이 아니며 Slider 등을 사용해서 자신에게 맞는 UI를 설정할 수 있습니다.

 

 

버튼마다 자세한 타입 설정이나 사용 방법은 다음과 같은 사진처럼 MaxScript Help 에서 찾아 볼 수 있습니다.

 

 

 

 

 

 

 

 

Utilities

 

 

 

utility TestRollout "Utilities Rollout"
(
    button TestButton "Utilities Button"

    on TestButton pressed do
    (
        messageBox " ! ! ! ! "
    )
)
CreateDialog TestRollout

 

 

 

롤아웃을 생성 할 때, rollout 함수를 쓰지 않고도 utility 함수를 써서 UI를 만들어도 됩니다.

 

 

그래서 롤아웃 함수를 쓴 것이랑 무슨 차이가 있나 싶지만, utility 함수를 쓰게 되면 맥스가 기본적으로 제공해줬던 커맨드 탭에서 해당 UI를 열어 줄 수 있습니다.

 

 

 

 

 

 

 

 

해당 코드를 실행 시켰을 때 다른 다이얼로그나 롤아웃 플로터처럼 정상적인 UI가 화면 어딘가에 뜨게 되는 것을 알 수 있습니다.

 

 

 

 

 

 

 

 

이후, 우측 커맨트 패널의 Utilities 탭에서 MaxScript 항목을 활성화 시키고, 유틸리티의 메뉴 목록을 열어보면 위 코드에서 지어줬던 툴팁의 이름이 나타나는걸 확인 할 수 있습니다.

 

 

메뉴를 클릭하면, Utilities 탭에서 내가 작성한 새로운 UI가 커맨드 탭에 추가된것을 알 수 있습니다.

 

 

이런식으로 메뉴를 구분짓고 세분화 시켜서 좀더 쾌적한 UI설정을 할 수 있습니다.

 

 

 

 

 

지금까지 MAX Script 를 구성하기 위한 기본적인 UI 세팅과 생성에 대해서 알아보았습니다. 

 

 

 

 

 

 

 

 

이 글에서의 참조한 MAXScript Help 키워드

 

Rollout User-Interface Controls Types

 

Utility and Rollout Properties, Methods, and Event Handlers

 

Rollout Floater Windows

 

Button UI Control

 

 

profile

이것 저것 개발하고 만들어보기

@Tintana'k