スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

lipsync

リップシンクをどうやろうか考えていた。どうやろうかというか、どういう形で実装すると使いやすいかどうか。

表情関係は世代が古い方法けど力技として目的のことができる頂点モーフィングを使っていた。
例えばまばたきをさせるときに、目をつむっているモデルと目をひらいているモデルを用意して、頂点シェーダに二つのモデルを渡して、二つの頂点間をlerpさせる方法。これは実装が楽である反面、モデルを作成するときに二つのモデルの頂点数、頂点の並びが変化すると一発で関連するモデルのセット全部破綻。一度セットを作ったあとに、なにか位置以外の頂点の変化を伴う操作をしたらすべて作り直しという結構地獄をみる手法である。UVの変更も出力される頂点の順番に変更が出るからダメ。慈悲はない。

なので、最近のゲームのメイキングとかグリッチしてる画像を見るとわかるのが表情ボーン。ちょっと前に見かけた三国なんとかの顔面がめちゃめちゃになってるバグなんかは割り当てるボーンの行列を間違うとあんな感じになるので、あれもボーンでの表情変化をやってるとおもう。

モーフ形式ではなくボーン変形だと基本の構造さえ作ってしまえば、キャラの顔が違っていても頭ごとにモーフセットを作らなくてもいい。表情に対応するアニメーションがあればほかのモデルでもそれを使いまわせる。よく使われてるのはこれが一番大きいポイントだと思う。

んで

○リップシンク
キャラのセリフに合わせてキャラの口が動く、というアレ。
ADVパートのスクリプト形式を悩みながら詰めていて、ほぼ固まってきてシナリオスクリプトも書いて、テストプレイしていて気が付いたところが、キャラの表情は変わっても口が動いてないのでしゃべってる感が希薄だった感があって、そこを早急に、かつ迅速になんとかしなければと思ったのだった。
現在複数のモーフセットで動かすシステムは作れてなかったので、(表情1→表情2とか、目開け→目閉じのまばたきとかの一方向のみ)ここでキャラクターシステムに食い込む変更はちょっとアレだなあと思った。精神的にも。
なので、現状のモーフィングに加えてボーンでの変形を加えることにした。
頭は別モデルとして本体とは切り離してあるデータなのだけれど、頭のボーンは本体側にあるので、頭のワールド行列に本体頭ボーンのワールド行列を与えてしまえば頭モデルの位置は決定する。んで、頭は頭でその中にあるボーンだけで動く。

考えて考えてどうすればいいかの算段がついたので実装。
(blender画面)
lip-bone.jpg
口周りに限定したので、口を制御するボーンを頭のモデルに埋め込んでそれぞれの母音を表現するアニメーション(ポーズ)をつくる。右側にあるだらだらとしたモデルの一覧はそれぞれが表情と目パチのモーフターゲット。効率悪いほう。

プログラム側ですることは頭のボーン制御用のアニメーション制御クラスのインスタンスを用意するくらいでとくに大きな変更は必要ないつーのはメリット。

順番に あ い う え お
lip-a.jpglip-i.jpglip-u.jpglip-e.jpglip-o.jpg
口小さいので変化が乏しめだけども動いてないよりは動いてる()

○スクリプトからの母音抽出
しゃべってるように見せるために、モーションを時間にそって順番に割り当ててく必要がある。
それには母音のデータが必要になる。
なので、スクリプトのセリフから母音を抽出して、表示するメッセージとは別にデータとして持っておく必要がある。
手でセリフの母音を打ち込むのはかなりけったいな作業になり、セリフを変更するたびに作業が必要になってショボいので、スクリプトエディタで
1.メッセージをひらがなに変換する
2.ひらがな→対応する母音のテーブルをつくり、それに従って母音の列をつくる
という処理をしてメッセージに対応する母音を作成。

そんでプログラム上で母音に対応するアニメーション(ポーズ)を時間に沿って割り当てていく。ポーズとポーズの間には補間もわすれずに。

それっぽく動いてるようすは
http://blog.livedoor.jp/zerobyteorbit/archives/1040499893.html


○スクリプト
スクリプトを作るのに苦労した点があって、独自形式なりXMLなり、自分で決めたフォーマットだとやっぱり仕様変更した場合のアレがソレで、データをすべて自作ツール内でやっていると互換性がなくなって過去のデータがダメになり、作り直しになったりしてゲー出そうな気がしたのでスクリプトエディタそのものは最低限の機能だけ持たせてスクリプトそのものはエクセルでつくることにした。幸いエクセルのデータにアクセスできるOpenXMLというパーサーがあるので、それをつかってエクセルのデータを抽出。ツールはコンバータとしての役割があれば十分という結合度に。
エクセルならいろいろスクリプトそのものには不要なデータを書き込んでおけるし。


○いたい
もうずっと痛くて笑ってしまうんだけれども、体が痛いわ生活リズムが反転するわで脳味噌がだんだん腐っていくのを感じる・・・
目は治った。


スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

zerobyteorbit

Author:zerobyteorbit
deathpiyoがgameをdevelopしたり、musicをcomposeしたり迷走したりする。

現在は迷走中。

under the lotusはリビルドのために考え中。

deathpiyo twitter

UnderTheLotus test3h(download)
I'm thinking about rebuilding UTL.


同人音楽アルバム
[Lovers Immortality]
-Japanease-
Lovers Immortality -works until worldend- DLsite.com直リンク
Melonbooks DL
-English-
Lovers Immortality -works until world end- Link to DLsite.com

18+
【東の森の魔女2 VS 魔王 -終宴する世界と肛虐(逆)の魔女たち-】
東の森の魔女2 VS 魔王 -終宴する世界と肛虐(逆)の魔女たち- DLsite.com直リンク
DMM.同人

紹介ページ


【地下迷宮の機械姦自壊オナニー生活。】
地下迷宮の機械姦自壊オナニー生活。 DLsite.com直リンク
DMM同人

紹介ページ




DLSite
Link to DLsite.com

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。