2009年5月18日月曜日

Biped Motion to Quartz Composer その1

twitterを始めるとblogを更新しなくなるね。2ヶ月以上ぶりに更新

今回はちょっとMax Scripをやってみた。
3dsMaxのBipedアニメーションを取り出して、
QuartzComposerとかで使ってみようと思う。
元ネタは佐藤雅彦さんの表現によく見られる点人間。



MaxScript事態初めてだったので、正直わけわからなかった。
いろいろ調べまくってできたのが以下のスクリプト

startshape main  
out_name = getSaveFileName caption:"Data File" types:"DataFile (*.txt)|*.txt|All Files (*.*)|*.*|"
out_file = createfile out_name

head = biped.getNode $ #head link:1
neck = biped.getNode $ #spine link:4
spine = biped.getNode $ #spine link:1
rUparm = biped.getNode $ #rarm link:2
rForearm = biped.getNode $ #rarm link:3
rHand = biped.getNode $ #rarm link:4
lUparm = biped.getNode $ #larm link:2
lForearm = biped.getNode $ #larm link:3
lHand = biped.getNode $ #larm link:4
rThigh = biped.getNode $ #rleg link:1
rCalf = biped.getNode $ #rleg link:2
rFoot = biped.getNode $ #rleg link:3
lThigh = biped.getNode $ #lleg link:1
lCalf = biped.getNode $ #lleg link:2
lFoot = biped.getNode $ #lleg link:3

animate on
for i=0 to 60 do (
  sliderTime = i
 
 p1= biped.getTransform head #pos
 p2= biped.getTransform neck #pos
 p3= biped.getTransform spine #pos
 p4= biped.getTransform rUparm #pos
 p5= biped.getTransform rForearm #pos
 p6= biped.getTransform rHand #pos
 p7= biped.getTransform lUparm #pos
 p8= biped.getTransform lForearm #pos
 p9= biped.getTransform lHand #pos
 p10= biped.getTransform rThigh #pos
 p11= biped.getTransform rCalf #pos
 p12= biped.getTransform rFoot #pos
 p13= biped.getTransform lThigh #pos
 p14= biped.getTransform lCalf #pos
 p15= biped.getTransform lFoot #pos

  format "%¥t%¥t%¥t%¥t%¥t%¥t%¥t%¥t%¥t%¥t%¥t%¥t%¥t%¥t%¥n" p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 to:out_file

 )

 close out_file
使用するにはアニメーションを書き出したいBipedを選択して、このスクリプトを実行します。
Bipedの13カ所の位置情報を各フレーム毎に記述したテキストファイルを作成されます。

このテキストファイルを利用してQuartzComposerにアニメーションを持っていこうと思う。
続きは次のエントリーで書きます。


追記(6/2)ちょっとスクリプトの内容を変更しました。位置毎にタブを入れるようにしました。