안녕하세요.
애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.
역시나 파일 머지를 편하게 하는 방법을 계속 설명하겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
fileName = ""
maxFiles = #()
rollout Merge_Rollout "Merge"
(
button selectMerge_btn "머지파일선택" pos:[5, 5]
label fileName_lab "FileName" style_sunkenedge:true height:15 width:155 pos:[5, 30]
button run_btn "실행(파일)" pos:[5, 60]
button runFolder_btn "실행(폴더)" pos:[80, 60]
on selectMerge_btn pressed do
(
fileName = getOpenFileName caption:"머지할파일선택:" filename:".max" types:"맥스파일(*.max)|*.max"
fileName_lab.caption = fileName
)
on run_btn pressed do
(
mergeMaxFile fileName #select quiet:true
$.parent = $'Bip001 R Hand'
)
on runFolder_btn pressed do
(
getFolder = getSavePath caption:"머지될 폴더 선택"
maxFiles = getFiles (getFolder + "\\*.max")
)
)
createdialog Merge_Rollout
|
cs |
지난 시간에 배운 내용은 위와 같습니다.
이전에 해결하기로한 내용은 아래와 같이 남아있습니다.
1 지정한 폴더에서 맥스 파일을 모두 변수에 넣는다.
2 저장한 모든 파일을 for문을 이용해서 모두 불러온다.
3 불러온 파일들에게 머지를 적용한다.
4 머지한 파일을 그냥 닫지 않고 저장을 하고 닫는다.
그럼 2번 작업을 하겠습니다.
우선 배열 형태로 저장된 파일을 for문을 이용해 순차적으로 불려지는 확인을 하겠습니다.
아래와 같이 작성을 하겠습니다.
1
2
3
4
5
6
7
8
9 |
on runFolder_btn pressed do
(
getFolder = getSavePath caption:"머지될 폴더 선택"
maxFiles = getFiles (getFolder + "\\*.max")
for i = 1 to maxFiles.count do
(
format "Filse = %\n" maxFiles[i]
)
)
|
cs |
추가된 내용은 5번 라인은 1부터 'maxFiles'에 저장된 내용의 개수까지 7번 라인인 저장된 파일의 화면 출력을 반복한다는 것입니다.
오늘의 'format'문도 역시나 내용이 정확한지 확인하기 위한 것이기 때문에 왜 이걸 썻는지는 신경 쓰지 않으셔도 됩니다. ㅎㅎ(맥스도 디버깅한다고는 하는 방법이 있다고 들은 것 같은데 저는 잘 몰라서 이렇게 합니다.)
제가 지정한 폴더의 맥스파일은 위와 같이 나옵니다. (여러분들은 다를 거예요.)
이제 3번 작업을 하겠습니다.
내용 자체는 파일 오픈 외에는 이전에 이야기한 'on run_btn pressed do'와 동일합니다.
1
2
3
4
5
6
7
8
9
10
11
12 |
on runFolder_btn pressed do
(
getFolder = getSavePath caption:"머지될 폴더 선택"
maxFiles = getFiles (getFolder + "\\*.max")
for i = 1 to maxFiles.count do
(
format "Filse = %\n" maxFiles[i]
loadmaxfile maxFiles[i] quiet:on mergeMaxFile fileName #select quiet:true
$.parent = $'Bip001 R Hand'
)
)
|
cs |
9, 10번 라인은 이미 설명한 것이기 때문에 따로 설명하지는 않겠습니다.
8번 라인은 'maxFiles'에 저장된 파일을 해당 번째 파일을 연다는 내용입니다.
지금 실행해도 작동하지는 않습니다.
왜? 저장을 하지 않았으니까요.
4번 작업도 마무리하고 문제를 하나 설명드리겠습니다.
그 전에는 실행하지 말아 주세요.(뭐 한다고 해도 에러가 발생하거나 파일이 생각하지 못한 상태로 저장되겠만요. ㅎㅎ)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
on runFolder_btn pressed do
(
getFolder = getSavePath caption:"머지될 폴더 선택"
maxFiles = getFiles (getFolder + "\\*.max")
for i = 1 to maxFiles.count do
(
format "Filse = %\n" maxFiles[i]
loadmaxfile maxFiles[i] quiet:on mergeMaxFile fileName #select quiet:true
$.parent = $'Bip001 R Hand'
saveMaxFile maxFiles[i]
resetMaxFile #noPrompt
)
)
|
cs |
11번 라인은 'maxFiles' 변수에 저장된 파일 중 지금 파일의 이름으로 저장한다는 내용입니다.
12번 라인은 새로운 파일을 열기 전에 씬을 리셋해줍니다.
이제 설명하기로 한 문제를 말하겠습니다.
1 머지할 파일과 머지될 파일을 같은 폴더에 두면 문제가 발생합니다.
머지가 될 파일에 자기 자신을 머지하는 것이기 때문에 문제가 발생한 여지가 있습니다. (테스트해보진 않았지만 문제가 발생할 가능성이 있으면 피하는 게 상책이겠죠.)
2 아직 제대로 파일들이 준비되지 않았습니다.
우리가 지금 가지고 있는 파일은 바이패드에 칼(박스)이 링크된 파일과 칼(박스)이 하나 있는 파일 두 가지일 가능성이 높습니다.
하지만 우리가 필요한 파일은 위 두 개가 아닙니다.
A) 바이 패드는 칼(박스)이 없어야 합니다. (그래야 칼(박스)를 머지 할 이유가 생기겠죠.)
B) 칼(박스)은 월드축 중심에 있는것이 아니라 바이패드의 오른손에 맞도록 위치해야 합니다.
B) 그리고 바이패드 파일은 하나가 아니어야 합니다. (폴더에 여러 개가 있어야 효과가 생기는 스크립트이기 때문입니다.)
D) 또한 바이패드는 같은 체형이지만, 시작 포즈가 다를 수 있습니다. (Idle, BattleIdle, Move, JumpDown등은 같은 캐릭터 여도 사적 포즈가 다릅니다.)
사실 위 이미지의 칼(박스)을 든 바이패드는 B)와 D)를 해결하기 위한 밑거름입니다.
다음 시간에는 문제 1, 2를 해결하는 시간을 갖도록 하겠습니다.
수고하셨습니다.
'맥스스크립트 심화' 카테고리의 다른 글
파일머지 편하게하기(8) (0) | 2021.05.03 |
---|---|
파일머지 편하게하기(7) (0) | 2021.04.30 |
파일머지 편하게하기(6) (0) | 2021.04.29 |
파일머지 편하게하기(5) (0) | 2021.04.28 |
파일머지 편하게하기(3) (0) | 2021.04.26 |
파일머지 편하게하기(2) (0) | 2021.04.23 |
파일머지 편하게하기(1) (0) | 2021.04.22 |
선택한 노드 Controller 변경하기(3) (0) | 2021.04.21 |