dnjiro’s 9VAe blog

誰でもアニメが作れる無料ソフト9VAeきゅうべえ開発者のブログ

9VAe Ver.0.7 はバーチャルキャラクタのせりふ制御

アニメ制作フリーソフト9VAeきゅうべえVer.0.6 で新たに追加した機能は次の2つ。

どちらも利用例がまだすくないが画期的な機能と考えている。

Ver.0.7 でバーチャルキャラクタのせりふ制御

f:id:dnjiro:20200407092921g:plain このアニメの作り方はこちら

f:id:dnjiro:20200416163609g:plain

Ver.0.7 ローマ字制御で口パクさせた例。最初の「13:」は13秒でしゃべるの意味。「.」は口を閉じる。ローマ字に従って口の形がかわる。

解説

次の9VAe に搭載する機能だが、利用したいユーザーをみると、バーチャルキャラクタを登場させ、動画の解説をさせたいユーザーが多いようだ。これを実現する本格的な方法は、

  1. 3次元キャラクタを用意する
  2. カメラで人の顔を撮影する
  3. 人の動きに同期させてキャラクタをしゃべらせる

といった方法だ。そのためにはは高性能なパソコンと、人の演技力も必要だ。両方持っている人だけ Vtuber になれる。

9VAeは初心者向けアプリであり、上図のように簡単でそれらしく動くレベルを目指したい。

新機能は離れたページのキーフレーム補間

9VAeは隣接したページ間のキーフレーム補間ができる。そのため、「あ」の口と「い」の口をつかえば「あ」から「い」への口の変化が実現できる。しかし、せりふにあわせて口を動かすために、全部キーフレームをいれていると大変。したがって実現したいのは、

  • 「ん」「あ」「い」「う」「え」「お」の形を入力しておいて、それにせりふを入力すれば、適切にそれぞれの形の中間の絵を作成してくれる機能だ。

こういった機能はキーフレーム補間ができるソフトにはよく実装されていて、パペット機能とかいわれていたりする。複数の状態を登録しておいて、それを混ぜ合わせる割合をコントローラで入力する、といった使い方だ。

9VAeにはそれがなかった。

選んだキーフレームを混ぜる方法

こういった新機能を追加するとき、人がどう入力するかを考える。そのとき、今まで実装していない UI が必要だと相当大変になる。今回は、キャラクタにせりふをしゃべらせるので

  1. アニメキャストに「ん」「あ」「い」「う」「え」「お」の形をいれておく
  2. アニメキャストに対して、せりふをテキストで入力する
  3. せりふの先頭に何秒でしゃべるか時間を入れる
  4. 時間の進み具合は動きグラフで指定してもよい

これなら、アニメキャストの再生の仕組みだけ追加するだけで実装できそうだ。

命令リストとの連携

Python から9VAeをコントロールできるようになった。この命令に、せりふを追加してしゃべらせられるようにすれば活用範囲が広がりそうだ。

CSV命令のテキストが、台本になるようにできるとよい。Pythonでテキスト合成してしゃべらせて、9VAeキャラクタで口パクさせるという使い方も考えられる。

(未採用)小さな文字で変化のバリエーションを表現する

「ん」「あ」「い」「う」「え」「お」をいれておいて、テキストにひらがなを書いて、その母音で形の変化をさせると6つの状態から5つの状態への変化なので30通りだが、「あ」から完全に「い」にいかなくて、途中から「う」に変更する、といった変化の仕方もあるだろう。完全に「い」にいかなくて途中で次の文字に移る、というのを「ぃ」で表現するとよいかも。「ぁぃぅぇぉ」は小さい文字がある小さい「ん」がないので「n」にしてもよいだろう。

(一部採用)アニメキャスト側はラベルを指定

  • アニメキャストのどのページがどの口の形かはラベルに「あ」ー「ん」をつけておくとよいだろう。
  • 海外版の場合は「AIUEONaiueon」として、せりふはローマ字で書いてもらう。このとき、アニメキャストのラベルにない文字は無視するというルールをいれておけば、すこしせりふらしい記述ができるのでは?(単語から発音記号への変換は9VAeにはいれない。やるならPythonでやってもらう)
  • 先頭ページにラベルがない場合、「NAIUEO」の順番と定める(ラベルがなくても動くようにするため)

アニメキャスト側は「.aiueoABC」の固定、ラベルも可能とする

先頭ページ「.」は口を閉じた形。そのあと「aiueo」「ABC」はおまけで自由に使える。

発音記号を調べてみた

発音記号と口の形を調べてみると、子音の処理も必要みたい。これは子音によって「ん」とか小さい「ぁぃぅぇぉ」などを自動的にはさむなどして調整していこう。とにかく、プロ用のレベルを目指すときりがないし、本格プロソフトに太刀打ちできないので深入りはしない。

口の形 記号
閉じる nmbp.
A a
I iyjz
U uvwf
E e
O o
自由 ABC

アニメキャストにせりふ属性を追加

  • せりふは文字と同じ扱い。リンクしているページの時間でせりふをしゃべる。
  • 別のセリフはリンクが切れる
  • アニメキャストの中心メニューに項目をひとつ追加
表示 条件 動作
ローマ字で動かす 文字が未設定 せりふ文字入力
(秒):がありません 時間が未設定 せりふ文字修正
[さいしょのもじひょうじ] 設定OK せりふ文字修正
  • せりふ文字入力で空白文字を入力すればせりふモードから通常モードにもどる。

せりふ再生処理

  1. せりふつきアニメキャスト処理を追加
  2. リンクしたページの時間=せりふをしゃべる時間
  3. せりふ時間とせりふ文字列から、補間ページ、補間割合を計算
  4. 既存の補間処理をつかって中間画像を作成>この方法だと離れた2つのキーフレーム補間ができる。ひとまずこれを実装し、3つ以上にする必要があるか検討する

往復、繰り返しとの関係

  • 実装をすすめてみると、「往復」「繰り返し」などの制御命令との関係が複雑になることがわかってきた
  • 「往復」の場合、せりふのしゃべりが往復になるのか?これはないだろう。
  • せりふをしゃべる時間をどう決めるのか、「往復」で無限ループの場合、せりふがどうなる?

つぎのようにするのが現実的

  1. せりふの先頭にしゃべる時間を入れる。[3.45:こんなかんじでしゃべるじかんをいれる]
  2. 設定した時間をすぎるとしゃべるのをやめる
  3. せりふで動くアニメキャストを選択してからページの時間をその時間に合わせることができる
  4. 時間設定せずにせりふ入力した場合、文字数から自動的に時間を設定する
  5. ページの時間に、アニメキャストの時間に自動的に合わせる設定があると便利かも

ゴーストとの関係

  • 9VAeには「ゴースト」という仕組みがあり、離れた前後のキーフレームを混ぜる割合だけ指定することができる。これがせりふでもできなければいけない。

  • 今までのキーフレーム補間は前後の2ページで往復、繰り返しがある点が9VAeの特長だった。

  • せりふ制御になると、せりふと指定したページの補間になる。指定ページが2ページだと従来の補間が使える。
  • ゴーストの場合、起点の時間を変えれば対応できそう。

時間から補間ポイントを求める方法

  • 従来は時間から往復、繰り返しを考慮してページを特定し、時間から補間割合をきめていた
  • せりふ制御では、コマンドによる遷移は無視。時間の経過とせりふ時間から再生ポイントを求め2枚のキーフレームと補間割合を計算する
  • まず2枚のキーフレーム補間を実装し、3枚以上の補間はそのあと拡張する

指定した時間からキーフレームを求める処理は9VAe再生の基礎になる重要な処理である。その部分を拡張する

#1# #2# ・・・で文字やせりふ制御をCSV命令で制御できる

9VAeアニメの中のキャラクタのせりふや、文字列を、外部プログラムからCSV命令で差し替えられるようにしたい。

  • 今のCSV命令は独立したオーバーレイ上に書く。
  • キャラクタや文字の配置は、9VAeでやったほうが簡単。9VAe上の図形と、CSV命令をつなぐ仕組みが必要。
  • 具体的には、「#1# #2# ・・・」を特別な文字列にし、「spk#」「txt#」で差替えできるようにする。以下のCSV命令で、キャラクタが実況中継するアニメがつくれる。
spk#,1,"10:mosimosi"
txt#,1,"10:もしもし"
spk#,2,"10:haihai"
txt#,2,"10:はいはい"

そのあと、下のような記法ができるように拡張していけばよいだろう。9VAeとCSVせりふで解説アニメーションができる。

spk#,1,"10:もしもし"
spk#,2,"10:はいはい"
CSVで差替える リンク文字列 CSV命令
文字 #数字# txt#,数字,
アニメキャストせりふ #数字# spk#,数字,
アニメキャスト本体 :ラベル? 難しい???
追記されたアニメキャスト ラベル#数字 addA
線、ポリゴン JSONを使う なし

文字に連動してふきだしサイズがかわるとうれしい。

口のあけしめを細かく制御する

  • 音声の強さにあわせて、口をあけしめすれば、しゃべっているようにみえるというアイデアがある
  • これを実現するために、「.」と「a」の間を数字「0123456ABC」で指定できるようにする。
  • 口をぽかーんとあけるとか、あわてる様子とかにも使えそうだ。
    • 9ページに対応した文字は、「.aiueoABC」に仕様変更する

・・・ 以上のようなことを検討してます。次の9VAeをご期待ください。