내맴대루 블로그

maxscript : Paste Animation ( mixer 기능 자동화 ? ) 본문

공부/max script

maxscript : Paste Animation ( mixer 기능 자동화 ? )

yy가나다 2025. 1. 21. 16:22

UI

 

스크립트 설명

이 스크립트는 맥스에 원래 있는 Mixer 기능을 조금 자동화(?)한 스크립트이다.

대단한 기능은 없고.. 믹서기능이 이미 잘 되어 있지만,

믹서를 사용하기 귀찮은 경우에 이 스크립트로 믹서기능을 이용할 수 있다 (!!!)

 

[Load Animation] 애니메이션 클립을 원하는 순서대로 넣고 버튼을 클릭하면, 캐릭터에 애니메이션이 적용되어 뷰포트에 보여진다.

[Mixdown] 믹스다운 버튼을 클릭해야 실제 바이패드에 키가 베이크된다.

 

맥스파일을 업로드 하고, 그 파일에서 애니메이션 파일을 뽑는 것은 기존에 만들었던 BIP Save and Load 스크립트와 거의 같다.

그 스크립트를 활용해서 만들었다.

(참고한 BIP Save and Load 스크립트 링크) https://newyyontheblock.tistory.com/3

 

maxscript : BIP Save and Load (애니메이션 bip파일 저장/로드)

스크립트 설명 [Max File Select] 맥스파일이 저장되어 있는 폴더 경로를 설정하면 해당 경로에 있는 모든 맥스파일이 첫번째 리스트에 뿌려집니다.[Bip Save and Load] 경로를 설정하면, 첫번째 리스트

newyyontheblock.tistory.com

 


 

주요코드

 

1. 리스트에서 선택한 항목을 위로 올리고 아래로 내리기. 아래로 내리지말고 위로 올려

 

    on btnUp pressed do
    (
        selectedIndex = lbx2.selection
        if selectedIndex > 1 then
        (
            tempItem = lbx2.items[selectedIndex]
            lbx2.items[selectedIndex] = lbx2.items[selectedIndex - 1]
            lbx2.items[selectedIndex - 1] = tempItem
            lbx2.selection = selectedIndex - 1
            lbx2.items = lbx2.items
        )
    )

    on btnDn pressed do
    (
        selectedIndex = lbx2.selection
        if selectedIndex < lbx2.items.count then
        (
            tempItem = lbx2.items[selectedIndex]
            lbx2.items[selectedIndex= lbx2.items[selectedIndex +1]
            lbx2.items[selectedIndex +1] = tempItem
            lbx2.selection = selectedIndex + 1

            lbx2.items = lbx2.items
        )
    )

 

 

 

2. 리스트에서 삭제

 

 선택한 항목만 삭제

lbx1.items = deleteItem lbx1.items lbx1.selection


 리스트 내용 전체 삭제
lbx1.items = #()

 

 

3. Mixer 기능

믹서에서 애니메이션 클립을 편집하려면, 처음에 믹서의 이름을 정의해줘야한다.

 

바이패드와 믹서 정의

COM = $Bip001.controller
Mxr = COM.mixer

 

track group 추가
appendTrackgroup Mxr

 

track group의 개수를 반환

TrackID = Mxr.numTrackgroups

 

특정 track group을 정의

TrackGroup = getTrackgroup Mxr TrackID

 

track group안의 첫번째 트랙을 정의

Track1 = gettrack TrackGroup 1

 

원하는 트랙에 0프레임부터 원하는 클립을 추가 (여기까지는 클립만 추가한거고, 바이패드에 키가 찍히진 않은 상태)

appendClip Track1 loadpath false 0f

(loadpath는 "경로+파일이름.확장자" 로 사전에 정의한다)

 

추가된 클립 순서 그대로 바이패드에 키를 베이크하려면 아래 2개 코드를 실행해야 한다.

mixdown Mxr false false 100 false 180.0
copyMixdownToBiped Mxr

 

 

 

Demo Video

별거없는데 플레이타임 왜케 길어.. 34초..