Script로 Biped에서 애니메이션 데이터 뽑기에서

2D, 3D, 다각형, 픽셀 등 게임의 그래픽 프로그래밍에 관한 포럼입니다.

Moderator: 류광

Locked
김용준

Script로 Biped에서 애니메이션 데이터 뽑기에서

Post by 김용준 »

bo = $'bip01 ...' -- biped object를 하나 선택합니다. 물론 key가 있는것
bks = bo.controller.keys
bk = bks[1]
print bk

여기까지는 잘 됩니다.
근데, 정작 키값을 뽑을려고
print bk.value
를 하는순간 max 4.2도 max 5.0도 죽어버리는군요.
bone만 사용하다가 갑자기 biped를 쓰게되어서 뭐가 틀린건지 모르겠네요.
아시는분 답변 좀 해주십시오.
에러도 아니고 max가 죽어버리니 정말 난감하네요.

ps. MAX4.2의 script는 help는 괜찮은데, MAX 5.0의 help는 엉망이네요.
property가 전혀 안나오는군요. 이거 무슨 설정해주는것 있나요?
장태권
Posts: 12
Joined: 2002-11-12 11:27
Location: 블빠

Set Key 할때

Post by 장태권 »

Biped Key값들은 'Planted'나 'Sliding'같은 특성이 있어
Max5의 setKey시스템이 biped에 적용되지 않을 수 있다고 합니다.
키를 적용하실 때 Character Studio에 있는 set key 시스템을 써보시거나
그래도 키 값이 나오지 않고 다운이 된다면
Customize->Preference->Maxscript에서
Initial heap allocation 할당량을 늘려서 다시 한번 해보시길 바랍니다
저도 한 번 해봐야겠군요

즐프하세요~
김용준

Bone의 경우는 문제가 없는데...

Post by 김용준 »

4.2에서는 controller없이 bone에서 직접 key를 뽑을수 있었지만,
5.0부터는 bone에 적절한 controller를 대입해야만 key가 추출됩니다.

문제는 biped의 경우 4.2건 5.0이건 관계없이 script로는 key가 뽑아지질
않는군요. 이것 참 난감하네요.

간단하게 우측 허벅지('Bip01 R Thigh')에 2개정도의 회전 애니메이션을 주고는
값을 뽑아봤는데 전혀 뽑아지질 않는군요.

스크립트의 한계인가요?
역시 플러그인을 만들어야만 하는건가? 아~ (..먼눈..)
noerror

대안

Post by noerror »

저는 꽁수로 animate 섞어서 해결을 했습니다.
개인적으로 애니메이션 키 뽑는 거 보단 샘플링 하는 것을 선호해서... ^^;
해결책은 못 되도 아이디어는 되겠다 싶어서 올려봅니다.

Code: Select all

animate on
(
  for t in animationRange.start.frame to animationRange.end.frame by 5 do
    at time t
      (
        rot = (in coordsys local o.transform as quat);
        pos = (in coordsys local o.transform).row4;
        ...
      )
)
요점은 "animate 로 돌리고 원하는 프레임을 캐치해서, tm 정보를 뽑는 다." 입니다. (위의 o 는 오브젝트 노드입니다.)
물론 샘플링이기 때문에 정직하게 다 뽑혀서 키 줄이는 번거로운 작업을 해야만... T_T

ps. 사실 맥스 스크립트 거의 몰라서 용준님 글이랑 지호님 글 보면서 공부하고 있습니다. ^^ 잘 못해서 그렇지 비주얼씨로 플러그인 만들어 작업할 때 보단 확실히 효율이 좋네요.
김용준

고맙습니다.

Post by 김용준 »

저도 최근에 TM샘플링쪽으로 전환했습니다.

문제는 biped에서 키값을 뽑는데 까지는 성공했는데, 이게 ik기반 값이라서
rot,pos같은 값으로 변환하는것은 엄두도 못내겠더군요.

참고로, 다음과 같이 하면 ik기반의 biped keys값을 뽑아줍니다.

Code: Select all

$ -- key가 적용된 biped 오브젝트
bip = $.transform.controller
key = biped.getkey bip 1
showproperties key
www.scriptspot.com에 갔더니 biped를 snap shot으로 dump떠주는 예제가
있더라구요. 이 예제도 noerror님 말대로 TM을 통째로 복사하더군요.

오래전에 올린 질문이라 포기하고 있었는데, 답변 감사합니다. ^_^
Locked