TV Program Creator  
テレビ番組を作るとは
番組作りをしてみよう!
本格的な番組作り
番組作りの極意に触れる
ここまで出来る!
TVML
本格的な番組作りに近づこう
 キャラクタが小道具をつかむ

キャラクタが何か物をつかんで持ち上げる、といった動作を表現するためにはattachコマンドを使います。attachコマンドは、キャラクタの関節の任意の場所に指定のprop(小道具)をくっつける、という作用をします。

たとえば、bottleというボトルのpropがあり、これをキャラクタBobが右手でつかむときは

prop: attach ( name = bottle, charactername = Bob, joint = RightHand )

とします。

TVMLでは、propをキャラクタの指定の関節にくっつける、という考え方をするため、propイベントであることに注意してください。

これをコールすることで、この先は、ボトルがBobの右手の動きにくっついてくるようになります。ただ、普通、これをコールしただけでは、RightHandとbottleの位置関係がずれていて、つかんだ感じになりません。

(a) prop: attach ( name = bottle, charactername = Jim, joint = RightHand )
(b) attachの前のRightHandとbottle

上図(b)が、ボトルがデフォルト位置(原点:x=y=z=0.0)にある状態のまま、単純にattachをコールしたときの画像です。CG的に言うと、attachコマンドをコールすることで、RightHandの関節のxyz座標と、bottleをモデリングしたときのxyz座標が一致する形になるのです。RightHandの座標とbottleの座標は上図(a)に示した通りです。
したがって、ボトル自体を回転したり動かしたりして、いかにもボトルをつかんでいるような位置にボトルを持ってこなければなりません。そのためにpositionコマンドを使って次のように位置調整します。

(c) prop: position( name=bottle, x=0.07, y=-0.06, z=0.06, pitch=86.50)

prop: attach ( name = bottle, charactername = Bob, joint = RightHand )
prop: position( name=whisky, x=0.07, y=-0.06, z=0.06, pitch=86.50)

これで、図(c)のように適当な位置にくっついた感じになります。このattachコマンドを使うと、アイデアしだいでいろいろな表現ができます。

たとえば、頭に帽子をくっつけて帽子をかぶらせたり、口に葉巻をくっつけて葉巻を吸わせたり、おしりに尻尾をくっつけたり、いろいろです。

 なお、Bobがボトルをつかむ、といっても手の指でつかむんじゃなくて単に手の平にくっついただけじゃないか、と思うかもしれません。これはまた別の問題で、指のCGモデリングとコントロールが必要です。

TVMLには指のコントロールがまだありませんので、この場合、つかんだときの手の形のCGを別にモデリングして用意しておき、attachすると同時に手のモデルを入れ替える、というテクニックを使います。このモデルの入れ替えは、character: changemodelコマンドで行えます(詳しくは言語仕様を参照)。