fc2ブログ

Oblivionでの表情の作り方

2010-03-27 02:23

Oblivionで、キャラクターに適応できる表情の作り方です。
私も手探り状態で、カンでやっている部分が多いので、思い込みで間違ったことを書いているかもしれませんが、一応防備録としてまとめてみました。


 
準備

表情や口の動きは、アニメーションとして登録しておいたファイル(.kf)を呼び出す形で使います。
ポーズなどと同じ扱いになるみたいです。

まず用意するものは


FaceGen Modellerは絶対必要というわけではないのですが、実際の顔を見ながら調整できるようになるので、ぜひ使ってみてください。

顔リセット用のkfファイルとテンプレートも用意しました。
ダウンロードして解凍後、利用してください。



まずは、表情にあったポーズを作ります。
ポーズの作り方・ゲームへの導入方法は、他の解説サイトさんなどを見てみてください。
私はこちらを参考にさせていただきました。
解説がていねいで、すごく分かりやすいです。


ポーズを作る過程をすっ飛ばして表情だけ作りたい方は、上のEmo.zipの中の「Emo_temp.kf」を使ってください。


372.gif

kfファイルが出力できたら、FaceGen Modellerでの作業に移ります。



FaceGen Modellerで表情を作る

373.gif

FaceGen Modellerを起動し、画面右半分のタブの中から「Morph」を選びます。
スライダを動かし、表情を作っていきます。
この時、Oblivionでは使えない設定がいくつかあるので要注意です。

  • Disgust
  • SmileOpen
  • Ears Out
  • Epicanthic Fold

この4つは、Oblivionでは使えません。
また、ほぼ同じ表情だけど名前が違うものに「Happy」と「SmileClose」があります。

逆に、Oblivionだけにある設定もあります。
DispHappy1~4と、DispAnger1~4という設定です。
とは言え、ほぼSmileCloseとAngerの派生という感じなので、それほど違いがあるわけではないです。

a_h.jpg

一応SS撮って並べてみましたが、差が微妙すぎてよく分かりませんね…。

気をつけるべきポイントとして、上下に視線を振る際は、左右にも振らないと、ゲーム内では反映されません。
左右にも0.1程度、ほんの少し振っておきます。

表情ができたら、これは閉じずにこのままにして、Nifscopeでの作業に移ります。




Nifscopeで表情を指定する

最初にBlenderで出力したkfファイルを、Nifscopeで開きます。

374.gif

作業に入る前に環境設定です。
上部メニューのViewから選択するか、F2・F3キーを押して、Block ListペインとBlock Detailsペインを表示しておきます。


375.gif

376.gif

Block Listペインのツリーの一番上にある「NiControllerSequence」というのをダブルクリック、または左にある田をクリックしてツリーを開き、下のほうにある「NiTextKeyExtraData」というのをクリックします。




377.gif

Block Detailsというペインに移り、「Text Keys」と書かれている左側の田をクリックします。
ツリーが展開され、Text Keysというのが2つ出てくると思いますが、このText Keyを追加して、そこに表情を指定していきます。


378.gif

まずは、表情を追加するためにText Keyを増やします。
Block DetailsペインのNum Text Keysという欄を右方向に辿り、Valueに「3」を入力して、そのすぐ下にある緑の更新マークを押します。
すると、子になっているText Keyが一つ増えます。


379.gif

全ての「Text Keys」の田をクリックして展開します。
こんな感じになっていると思いますが、使うのは「Time」という欄と「Value」という欄だけです。
「Time」はそのキーの表情アニメーションの開始時間、「Value」はその内容を表します。
もし、表情をいくつもつなげてアニメーションにしたい場合は、この「Text Keys」をどんどん増やして、そこに表情と時間を指定していきます。
startで全ての表情アニメーションの開始時間を指定し、endで終了時間を設定します。




表情指定の書式

さて、「Value」欄で実際の表情を指定することになるのですが、指定はテキストで行います。
書式は以下の通りです。

ENUM: Face [Expression_name] [Slider_percentage] [Buildup_time] [Hold_time] [Fadeout_time]

●Expression_name
どんな表情をさせるか、という設定です。
以下の表の文字列から選んで、一つだけ指定します。
怒った顔にしたいなら「Anger」、パカーンと口を開けたいなら「BigAah」とか。

FaceGen Modellerを使っている場合は、対応する表情をそのまま指定すればOKです。
名前が少しだけ違っているものもありますが、こちらの表の名前を使うようにしてください。

AahAngerBigAahBlinkLeft
BlinkRightBMPBrowDownLeftBrowDownRight
BrowInLeftBrowInRightBrowUpLeftBrowUpRight
ChJShDispAnger1DispAnger2DispAnger3
DispAnger4DispHappy1DispHappy2DispHappy3
DispHappy4DSTEeeEh
FearFVHappyI
KLookLeftLookDownLookRight
LookUpNOhOoh
RSadSquintLeftSquintRight
SurpriseThW 



●Slider_percentage
表情を適用する割合。
0.01~1までの値を指定します。1~100でもいいみたいです。
FaceGen Modellerを使っている場合は、対応するスライダのパラメータを丸写しすればOKです。

●Buildup_time
表情が切り替わるまでにかかる時間 (秒)。
多くすると、ゆっくりと表情が変わっていきます。

●Hold_time
表情を維持する時間 (秒)。

●Fadeout_time
元の表情に戻るまでにかかる時間 (秒)。


例えば、
ENUM: Face LookRight 0.8 1.2 5 0.5
と書いた場合、
「LookRight(右を見る動作)」を 0.8(80%)の割合で適用 1.2秒かけて変化させ それを5秒間維持 0.5秒かけて元の表情に戻す
ということになります。


この式は、同じキーに複数指定することができます。
例えば、左を見て怒りながら口をとがらせたい時には

ENUM: Face LookLeft 0.8 0 5 0
ENUM: Face Anger 1 0 5 0
ENUM: Face W 1 0 5 0

というように、改行をはさんで全ての表情を並べます。





実際に表情を指定してみる

380.gif

先ほど増やしたText Key(Valueに何も書かれていないText Key)を開き、縦列の「Value」という欄を右に辿り、「String」と書かれている右横をクリックします。
文字入力に切り替わったら、書式にしたがって作りたい表情を指定していきます。
先に表情を作っておいたFaceGen Modellerでの数値を見ながら、同じように表情とその割合を指定します。
維持する時間に関しては、2~5秒程度がいいみたいです。
アニメーションで次々と切り替わるような表情を作る際には、移行時間も少しゆるめに取ると自然に見えます。




視線を動かしてみる

上下に視線を振る際は、左右にも振らないと実際に反映されません。
左右にも0.1程度、ほんの少し振っておきます。

さらに、そのまま視線を指定しても目がうまく動かないらしいので、短い視線リセットをはさみます。
視線を指定した表情の前に、真逆方向に指定した視線を0.1秒ほど入れます。

例:
ENUM: Face LookLeftt 0.8 0 3 0
ENUM: Face LookDown 0.1 0 3 0
ENUM: Face Sad 1 0 3 0

このように左下に視線を向けた表情を作りたい場合、Text Keyを一つ増やし、Valueに以下の文を入れます。

ENUM: Face LookRight 0.1 0 0.1 0
ENUM: Face LookUp 0.1 0 0.1 0

Time欄は0にしておきます。
作りたい表情のTime欄も、視線リセットの時間+0.1秒くらいにずらしておきます。

ちょっとしたコツですが、表情はループして表示することになるので、最初に表示時間が短い視線リセットを持ってくるほうが早く反映されます。




アニメーション全体の時間を設定する

381.gif

Text Keyの中で、Valueに「end」と書かれているものを探し、そのTime欄に、全ての表情アニメーションが終了する秒数を入力します。
5秒のアニメーション1つなら5.1くらい、複数ある場合はその合計時間+0.1~0.2くらいと、少し余裕を持たせたほうがいいみたいです。


382.gif

また、Block Listペインのツリーの一番上にある「NiControllerSequence」というのをクリックして、Block Detailsペインの「Stop Time」というのを探します。


383.gif

その「float」と書かれた右の欄をダブルクリックして、文字入力に切り替わったら、上で指定したのと同じ秒数を入力します。




kfファイル出力

384.gif

全ての指定が終わったら、ゲームで読み込むためのファイルを出力します。
Nifscopeの上部メニューから
 File → Save As...
を選んで、名前を付けて保存します。
ダイアログの「ファイルの種類」で「*.kf」を選択しておかないと、nifファイルとして保存されてしまうので注意が必要です。




ゲームに反映させる

371.jpg

あとは実際にゲームに組み込んで動かしてみます。
組み込み方は、ポーズModと同じです。
CTAddPoseテンプレートを使えば簡単に導入できます。
上に書いたのと同じく、こちらを見ながらの導入がオススメです。



導入する際、Emo_reset.kfも忘れずに登録してください。
これを使わないと表情が戻らなくなります。
「Actors in Emotions」などの表情Modを導入済みなら、そちらのリセットでも戻ります。




ゲーム内の視線制御

Nifscopeで視線の方向をいじっても、ゲーム内ではうまく反映されません。
これはキャラクターの首から上が、スクリプトで強固に制御されているためらしく、アニメーション指定だけではどうにもなりません。
そこで、コンソールでキャラクターを気絶状態にして適用する、という荒業が必要になります。


0368.jpg

SetUnconscious 1

と打ち込むと、表情が一旦リセットされ、それから視線が反映されます。
「SetUnconscious 1」指定中はアイテム使用などができなくなるので、


0369.jpg

SetUnconscious 0

で元に戻すのを忘れずに!
ただし、NPCに使うと注視などの行動を一切しなくなり、頭の向きなどが全てリセットされてしまいます。
そのあたりはポーズで補完、という感じで。




なかなか目を閉じてくれない時は

まばたきで表情が固定できない場合、コンソールで以下のコマンドを打ち込んで、まばたきの頻度を下げます。

SetGS fBlinkDelayMin 100

元に戻すには、これを打ち込みます。

SetGS fBlinkDelayMin 1.5





トラブルシューティング

表情の組み合わせによっては、ゲームクラッシュを招くことがあるので要注意です。
完全に体感ですが、口関係の動きを入れると落ちやすい気がします。

目やまぶたがおかしな位置で止まって戻らない場合は、何でもいいので装備を着け外しすればいいみたいです。

導入したのに表情が変わらないときは、以下の点をチェックしてください。
  • 使えない表情(Disgustなど)を指定している
  • Nifscopeで保存する時、nifファイルとして保存してしまっている
  • Nifscopeで、「end」「Stop Time」の指定を忘れている
  • Nifscopeで、表情指定の「表情の割合」・「維持時間」が0になっている
  • Nifscopeで、「SpecialIdle」「CYCLE_LOOP」の指定を忘れている
  • Modにきちんと組み込まれていない・違うkfファイルを指定してしまっている






謝辞

下記を参考にさせていただきました。
Facial expressions in animations - The Elder Scrolls Construction Set Wiki
Mod/SSスレ過去ログ



コメント

    コメントの投稿

    (コメント編集・削除に必要)
    (管理者にだけ表示を許可する)

    トラックバック

    この記事のトラックバックURL
    http://nichi21.blog41.fc2.com/tb.php/82-321eb4d6
    この記事へのトラックバック