안녕하세요.
애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.
오늘은 '공부하는 하이'님이 올리신 질문에 대해서 해결해 보려고 합니다.
질문 내용은
'특정 조건에서 바이페드에 특정 애니메이션(*. bip)을 로드한다.
다른 조건에서 선택된 본에 애니메이션 데이터(*.xaf) 를 특정 프레임에 로드한다.'
인데요.
뚝딱(?) 만들어서 '공부하는 하이'님에게 공유하는것도 좋지만 다른 분들도 같이 보시는 게 좋을 것 같아 글로서 정리하려고 합니다.
질문의 가장 큰 골자는 'Bip 파일을 불러온다.'와 'Xaf 파일을 불러온다.' 두가지 입니다.
세세한 부분에는 '특정 조건, 다른 조건, Xaf파일 일 때 원하는 프레임'이 있네요.
그리고 작업하다 보면 더 세세한 부분이 나올 것 같네요. 우선 큰 골자 먼저 알아보겠습니다.
Bip파일 불러오기
맥스 스크립트 핼퍼에서 'Biped Load and Save Methods'를 찾아보면 나오는 내용입니다.
이 부분은 지금 진행하고 있는 바이패드에 대한 설명에 나올 예정이기 때문에 해당 내용을 작성하면 자세한 내용을 찾아보시면 됩니다.
biped.loadBipFile <biped_ctrl> <file_name> [#matchFileStruct] [#zeroHgt] [#noRedraw] [#loadMaxObjects][#promptForDuplicates] [#retargetHeight] [#retargetLimbSizes] [#scaleIKObjectSize] [#loadSubAnimControllers] [#loadSelectedMaxObjects nodename_array] [#loadSelectedSubAnimControllers bipednodename_array int_array]
대단히 길어 보이는 명령어인데 대괄호([])사이에 있는 옵션은 생략해도 에러가 발생하지는 않습니다.
물론 팔 요한 옵션이 있다면 원하는 내용을 적어 넣어야 합니다.
바이패드를 하나 만들고(이름은 Bip001입니다.) 가장 간단하게 써 보겠습니다.
1
|
biped.loadBipFile $'Bip001'.controller "D:\\Archer_W001_101_MOVE.bip"
|
cs |
위 내용을 실행하면

요렇게 애니메이션 파일을 불러옵니다.(물론 D드라이브에 Archer_W001_101_MOVE.bip파일이 있어야 합니다.)
biped.loadBipFile : 'Bip'파일을 불러오는 명령입니다.
$'Bip001'.controller : 어떤 바이패드에 불러온 'Bip'파일을 적용할지를 정합니다.
"D:\\Archer_W001_101_MOVE.bip" : 'Bip'파일이 있는 위치와 파일 이름을 적어 줍니다.(꼭 폴더 이름, 파일 이름을 구분 지을 때 \\라고 두 번 넣어야 합니다.)
Xaf파일 불러오기
애니메이터라면 당연히 본 애니메이션을 저장하고 불러올 때 용이하게 쓰이는 파일인데, 저는 지금까지 'Xaf'을 제대로 써본 적이 한 번도 없어서 한참 동안 이게 어떤 파일인가를 고민했습니다. ㅎㅎㅎ
제거 월급 루팡이라서 그런 건 아니고 이전에는 'Character'(?)(지금은 없어진 것으로 알고 있어요)라는 비슷한 기능을 사용하다가 불편해서 개인적으로 만든 '본 애니메이션 저장 불러오기'툴을 사용하고 있기 때문입니다.
예전에 동료가 사용하는 것을 보고 한번 정도 썼다가 손에 익지 않아서 포기했던 기능이었네요.
<boolean>LoadSaveAnimation.loadAnimation <filename>fileName <&node array>nodes relative:<boolean> insert:<boolean> insertTime:<time> stripLayers:<boolean> useMapFile:<boolean> mapFileName:<filename>
<boolean>LoadSaveAnimation.loadAnimationNodeAnim <filename>fileName <&Interface array>nodeAnims relative:<boolean> insert:<boolean> insertTime:<time> useMapFile:<boolean> mapFileName:<filename>
위 두 개의 명령이 있습니다.
위에 것은 적용될 본을 선택하여 사용하는 방법이고 아래 방법은 읽어 봤는데 내용을 알 수가 없네요.
구글 번역기 님이 "지정된 파일 이름에서 참조 별 배열로 지정된 nodeAnims로 애니메이션을 로드합니다."라고 하네요. ㅎㅎㅎ
하지만 위에 방법으로도 가능하기 때문에 위의 방법으로 해보겠습니다.
우선 간단하게 본을 만들고 0 프레임과 5 프레임에 키를 넣어 애니메이션을 대충 준 다음에 'aaa.xaf'파일로 D드라이브에 저장합니다.
그리고 만들었던 키를 삭제합니다.
그럼 본은 처음 만들었던 상태로 애니메이션 없고 D드라이브에 본 애니메이션용 'aaa.xaf'파일이 존재하게 됩니다.
다음과 같이 입력하고 실행해 보겠습니다.
1
|
LoadSaveAnimation.loadAnimation "D:\\aaa.xaf" (selection as array)
|
cs |
MAXScript Listener에 false라고 뜨며 아무런 변화가 없나요?
그렇다면 애니메이션이 적용될 본을 선택해 주세요.
그리고 다시 실행하면 애니메이션이 적용된 것을 볼 수 있습니다.
잘 됐네요.
LoadSaveAnimation.loadAnimation : 'xaf'파일을 불러오는 명령입니다.
"D:\\aaa.xaf" : 불러올 파일의 위치와 파일 이름입니다.
(selection as array) : 현재 선택한 노드에 애니메이션을 적용하라는 내용입니다.
추가로 원하는 프레임에 적용하는 것을 설명드리겠습니다.
위 명령어의 옵션 중에 'insertTime'이 있는데 이 옵션이 원하는 프레임을 정하는 것입니다.
1
|
LoadSaveAnimation.loadAnimation "D:\\aaa.xaf" (selection as array) insertTime: 20
|
cs |
위와 같이 입력하고 실행해 보겠습니다.
아까 만든 0, 10 프레임에 이번에 원했던 20, 25 프레임에 키가 불려졌습니다.
필요한 부분만 자세히 설명한다고 했는데도 꽤 길어졌네요.
오늘은 '공부하는 하이'님이 궁금해하시는 부분 중에 가장 핵심 내용을 짚었습니다.
1
2
|
biped.loadBipFile $'Bip001'.controller "D:\\Archer_W001_101_MOVE.bip"
LoadSaveAnimation.loadAnimation "D:\\aaa.xaf" (selection as array) insertTime: 20
|
cs |
(실컷 글을 썼다고 생각했는데 겨우 두줄이네요. ㅎㅎㅎ)
위와 같이 작성하고 필요에 따라 내용을 수정하고 한 줄 실행하는 방법도 있지만 마우스로 클릭하는 것과 시간 차이는 별로 없을 것 같네요.
내일(별 다른 일이 없으면) 더 빠르게 자동화하는 방법에 대해 설명하겠습니다.
'맥스스크립트 심화' 카테고리의 다른 글
RolloutCreator Functions(1) (2) | 2021.04.05 |
---|---|
맥스 스크립트 UI의 세부 사용법 (3) | 2021.03.14 |
바이패드 Bip파일 불러오거나Bip파일과 XML파일 불러오기(3) (0) | 2021.03.11 |
바이패드 Bip파일 불러오거나Bip파일과 XML파일 불러오기(2) (2) | 2021.03.10 |
슬롯머신(6) (0) | 2019.10.01 |
슬롯머신(5) (0) | 2019.09.30 |
슬롯머신(4) (0) | 2019.09.26 |
슬롯머신(3) (0) | 2019.09.25 |