顔のアニメーション

source sdkでゲームというかmodを作るとして、 そのすべての機能を利用する必要はなくて、10分の1でも理解して活用できれば、 普通にしょぼいお使いゲームや鬼ごっこくらいのゲームはできるだろうと思う。 当面の目標は、オリジナルのマップとオリジナルのキャラクタとオリジナルのメニューを使った、 限りなくしょぼい3Dのゲームを作るというところまでである。 オリジナルのメニューというのは VGUIというものを使えばある程度簡単にできそう。 オリジナルのマップというのはもうすでに作れている。 オリジナルのキャラクタというのもだいたいはできている。

しかし、お使いゲーム、たとえば村人と会話して買い物を頼まれて、 目的のものを入手してもって返るなどのタスクを考えた場合に、 顔のアニメーションはどうしても必要だろう。 瞬きはできなくても良いが口パクくらいはやりたい。 ところが自作モデルをsource sdkのface poserで読み込んでも、 目玉や首は動かせるがまぶたや唇は動かせない。 さてどうしたものかといろいろ調べてみたのだが。

まずこちらの カスタムキャラクターを作る の中の 6. フェイシャルアニメーション の部分を読んでもなかなかわからんので、 とりあえずsource sdkのサンプルをいろいろいじってみる。 そうするとおぼろげにわかってきた。

まずは、SDK_Male_referece.scnを読み込んでくる。 テクスチャ画像のフォルダが間違っているので、 Modify→Materialsを開いて画像を読み込み直す。 つまりcitizen_sheet.tgaやsandro_facemap.tgaなどを読み込む。 そうすると テクスチャが正常に張れた状態 になる。

口パクに関係するのは tex_mouth、tex_teeth_lower、tex_teeth_upperなどのクラスタだと思われるのだが、 これらのクラスタはすべて同じ画像mouth.tgaを張っている。 tex_mouthなどのクラスタ以外を隠した状態tex_mouth は口の中全体で、 tex_teeth_lowerが下の歯、tex_teeth_upperが上の歯。

ついでにその他のテクスチャの張り方も調べてみた。 tex_bodytex_facemap。 案外、五角形のポリゴンやら凸でない四角形ポリゴンなどがたくさんあることがわかる。 あっても別にどうでもいいのか。

0フレーム目から35フレーム目までにはいろいろな表情が割り当てられている。 それらの意味は Character Facial Animation Shapekey Set:jp に書かれている通りであろう。 1フレーム目11フレーム目23フレーム目32フレーム目

手のひらのポリゴンの張り方。 表側裏側。 裏側はTexturedだと光が当たらず暗いのでTextured Decalにしてある。 ボーンの刺さり具合

それでクラスタにはpolygonのクラスタだけでなくて、 point(頂点)のクラスタもあり、 顔のアニメーションはpointのクラスタをまず作っておき、 そのクラスタにshapekeyというものを割り当てるらしい。 explorerで見るとclusterの中に三種類のアイコンがあるが、 anim_faceとanim_teeth_lowerはpointのclusterであることがわかる。 顔のアニメーションはこの 顔面(anim_face)下の歯(anim_teeth_lower) だけに付ければ良い。 それでVTAファイルを出力して、 QCファイルを適当に記述してやる。 そうするとface poserで表情を編集できる。 つまりcapable of facial animationなモデルを作ることができるということのようだ。

shape manager。 頬から口の辺り14フレーム目16フレーム目