search
LoginSignup
5
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Vtuber&Facerig(Cubism/moc形式対応)向けのLive2Dモデルの最適化を考える

自己紹介

神のヤヤネヒです。youtubeでVtuberをやっています。
いきなり変なことを言ってますがバーチャルなのでそっとしておいてくれ。

もともと、Unity-Humanoidモデルでボディをうごかしていたのですが(これに関してはそんなにtipsに困らないと思う…)、生配信向けに、Facerigを使ったVtuber運用を始めました。

立ち絵.png

もともと、楽器演奏の配信をやりたかったんだけど、なにぶんプログラミングぜんぜんわかんなくてMIDIノートでUnityの演出を制御できるようになろうとしたらあと1年掛かりかねない(いちおうがんばらなきゃっておもってC#を齧ったからアセットの書き換えくらいはやれるんですが、やっぱりちんぷんかんぷんである…) で、さしあたり、手軽にらいぶ配信できるようになりたかったので、軽量版のFaceRig向け素体、「チビネヒ」をLive2Dで作ったのです。作ろうとした。つくった。

LeapMotionで腕の上下稼働が可能、顔の角度で体まで右向きが可能。
Live2D特化モデルです。ヤヤネヒ成し遂げた! すごいだろー!

そこで、なんですけど、Live2D CubismでのVtuber運用向けのマニュアルが意外とないのです……情報が分散しているしmocの情報とmoc3の情報が混在しているし。そして、参考にしようと思ってあれこれ見始めたら、世間のVtuberさん、意外と動かない。トーク力だけで押している。すごい。すごいけど参考にならない。

それでも、ヤヤネヒはいっぱいうごく体が欲しかったので頑張ったわけなのですが、自分的に困ったポイントとか、手順とか、まとめておきます。足元まであるモデルをこの用途で使う人ってあんまりいない気がするんだけど、バストアップとか腰まででもおんなじではないかと?

普通の動きで生き生きと見えて、操作中に職人芸的な離れ業をしなくても「そこそこプレゼンスのある」モデルを作ることが目標

ヤヤネヒ不器用なので、配信中にそんなにいろいろできない

この記事の対象者

プログラミングわかんない
Live2Dで動くモデルは一通り作れる(もしくはチュートリアル読めばだいたいわかる)
FaceRigにLive2Dモデルを組み込んで配信とかしたいけど、手順と仕様が散らかり過ぎていい感じに動かす勘所がわからない
とりあえず組み込んでみたけどなんかへんだしうごかない

このあたりの皆さん向けです。つまり、チビネヒをつくり始めたときのヤヤネヒのためのものです。

moc3(最新版)か、moc(旧版)か?

現行版のLive2Dには

  • Live2D Cubism 3(組み込み:moc3形式)
  • Live2D Cubism 2(組み込み:moc形式)

のふたつがあります。どちらもFaceRigに組み込めます。

現時点だと、細かいカスタマイズをしたい場合はmoc形式のほうが良いように思います。頻繁にアップデートが行われているのですが、moc3形式は仕様の変更が多く、挙動が安定しません。moc3形式は物理演算多段振り子の設定が可能で、運動量の指定が細かくできのですが、いかんせん重い。

Live2DCubism3の新機能がほとんど使えない(頂点と頂点を連動させるグルー機能など…)、パーツの切り替えで重要になってくる描画順の指定が怪しいなど、非常に問題が多いのでめちゃめちゃ重いのを推してまで導入する意味がない気がする

ということで、しばらくはmoc形式のほうがよさげに思います
(moc3形式のtipsも探せば充実してきているので、今後はわかんないけど、FaceRigもLive2Dも仕様がけっこうすぐ変わるから…)

モデルの制作手順

モデル制作については、公式のチュートリアルが丁寧なのでこちらを見てください。
おおまかな所は2も3も変わりません(操作性は3のほうが良いです)
https://docs.live2d.com/cubism-editor-manual/top/?locale=ja
困るのはFaceRig向けの組み込みから先なんだな…

Facerig向けモデルの留意点をいくつか。

1. 基本構成

サンプルプロジェクトとチュートリアルを参考にするのが早いです。ここからはFaceRig向けの留意点です。
テクスチャアトラスの作成についてなどもとくに触れません。

ヤヤネヒのパラメータ構成についてはこちらの記事を参考にしてください。

ヤヤネヒのパラメータ一覧
https://qiita.com/ya_ya_ne_hi/items/a2911c5acff6f4e47c6a

mocファイルのパラメータの書式は『全て大文字』です。
moc3で仕様が変更されているので、mocで作る場合は間違えないようにしてください。((インターネットで情報が混在しててめっちゃ混乱した…))

2. 使えないパラメータは消す

消す。

とくに試用版だとパラメータ数の制限があるので…

Body Angle X/Y/Zと、腰のパラメータは、FaceRigでは反映されません。Xはキー操作が必須でまず使えない。Yは読み込まない(Zは体と一緒に読み取ってくれる)。
Set Special Animパラメータや、待機モーションで使わないなら消していいです。
ヤヤネヒは現在、7パターンのアニメーションを組んでいるので、Body Angle Y(伸び)とZ(傾き)だけ残しています。

体軸のX方向の回転ですが、Angle Xに入れ込んでしまっています。

正面。
ヤヤネヒ標準.png

あんぐるX.png

-25~-30くらいで、頭だけでなく、体が向かって左方向を向きます(逆も同様)。あまり細かく体軸移動が入ると安定しない印象になる、特に、絵柄が整理されていないと体がプルプルしてちょっとうるさいので、大きな動きは-30~30なら前後5くらいの間に収めるのが適当だと思います。

3. 感情表現系のパラメータは、原則、一エモーションごとにまとめる

あとでcfgファイルの説明をしますが、FaceRigのパラメータショートカットはデフォルトだと以下のようになっています。
FaceRigの起動中に押すとオンになり、もう一度押すまで戻らない仕様です。

set_special_pose_param (キャラ名) 'PARAM_CHEEK' (笑う) 1番スロット=Zキー
set_special_pose_param (キャラ名) 'PARAM_TEAR' (泣く) 2番スロット=xキー
set_special_pose_param (キャラ名) 'PARAM_RAGE' (怒る) 3番スロット=Cキー
set_special_pose_param (キャラ名) 'PARAM_HAIR_FLUFFY' (髪ふわ/驚き) 4番スロット=Vキー

初期設定ではこのようになっており、だいたいこの4つを用意すればOKだと思います。デフォルトネームであれば、cfgファイルでパラメータ名を指定しなくてもそのまま動きます。

FaceRigの場合、まばたき以外は自動で両目分は反映してくれないので、
左右バラバラの変形はパラメータ指定ではFaceRigで使えません。
なので、アニメーションに組み込むか、set_special_pose_param向けに、複数の動作(目、口元、耳、体の捻りなど)一本化する必要があります。

ヤヤネヒの場合

CHEEK=お喜び。

ヤヤネヒの場合、PARAM_CHEEK(デフォルト)はデフォーマ変形による両目をしならせる+口角を上げる+耳を動かすパラメータで、実装しています。set_special_pose_paramで目大きく変形させると、まばたきと混ざってシェイプが壊れてしまう…

およろこび.png
これだと怖いけど、こうなる。
およろこび2.png

一応、両目をまとめた笑顔目パラメータも作ってあって、
えがお1.png

破綻がないように実装したい場合、透明度を切り替えでパーツごと差し替えるか、アニメーション限定にしたほうが良い、気がします。デフォーマの構成を工夫したらうまくやれるのかもしれない……
ヤヤネヒは笑うと耳もうごく。表情以外のパーツが動くの大事です。喜んでるときは軽く腕が上下したりすると華やかです(ヤヤネヒに関しては、LeapMotionで手の動きをキャプチャしてるので、パラメータ内での手腕の動きは極力外してます)

TEAR=悲しい。

デフォルトだとPARAM_TEAR。これはふつう。こっちも耳と腕がちょっとうごくのと、不透明度の切り替えで涙が出てる。まゆげは見てのとおり。
まつげ・まぶたは合わせてよく動かすので変形用のデフォーマを二つ用意しています。
泣き顔.png

RAGE=お怒り。

おいかり.png

じと目ってなってるけどPARAM_RAGE。半目・とじ目系の変化は、まばたきとブレンドされたときどうしても不自然になるので、こちらは透明度でのメッシュ差し替えです。前髪の影と描画順が干渉してちょっと困った感じになってるので調整したい……あと、こわいから目を直したい。

HAIR_FLUFFY=髪ふわ/驚き

PARAM_HAIR_FLUFFY。
ヤヤネヒの場合は、髪ふわは残して、パラメータのリネームで、尻尾をぶんぶん振るパラメータ(SET_TAILONからのTAILBLOW)が入れてあります。
はじめはだいたい4パターン用意すればOKだと思います。

TONGUE =舌を出す。

他のカスタムパラメータと違い、カスタムは不可。パラメータ名が一緒なら動作するので、ヤヤネヒは目が光る動作を仕込んでます。

ひかる.png

きらーん。

4. 口の変形

開閉・変形の2パラメータで、Cubism3の連携機能を使って調整していきます。

こちら、ナナメちゃんねるさんが引用されていた「砲介さん形式」を参考にしました。色々試しましたが、これ+Special Paramでの操作が一番自然に動くと思います。

5.腕の挙動について

cc_(キャラクター名).cfgファイルに「上腕」「下腕(または手)」を記述すると、Leapmotionで動かせるようになります。
指定できるのは上腕までの動きと角度、設定によってはけっこう大きく動きます。設定については、後半のcfgファイルの記述で詳しく説明します。

ヤヤネヒはモデルの構造が若干特殊なので(手がない+LeapMotionでの運用が前提)、バストアップのアニメっぽいキャラクターを動かしたい場合は、公式のサンプルプロジェクトを参考にするのがいいです。

LeapMotionをつかわない場合、腕のポーズを決めて、腕用(右腕、左腕、両腕など)パラメータを作ってしまう、不透明度切り替えで手のポーズを増やすなどの工夫が必要になってくるかと思います。スペシャルポーズの枠(全部で8つ)をうまく使いましょう。可能な変化はON/OFFのみ(複数パラメータの併存は可能)なので、モデリングの段階で「こういうポーズを取らせる」と決めて作ってしまうのがいいです。

6. ということで

  • 最低限必要:顔のアングル(ANGLE_XYZ)、体の振り(BODY_ANGLE_Z)、目の挙動(まばたきと目線)、眉の動き、口の開閉と変形。
  • 揺れもの。細かく揺らすより、「これを動かす」ときめてメリハリをつけると良い。ヤヤネヒの場合、髪の毛よりもリボンと尻尾が大きく揺れる。
  • なくてもよさそうだけど必須: 呼吸(プレゼンスが段違いになるので絶対に入れるように)
  • 消していい:体の左右と上下(BODY_ANGLE_XY)、片目ずつの表情変化、他、使えない動作
  • 表情変化: デフォルトセットなら笑顔(CHEEK)、哀しみ(TEAR)怒り(RAGE)、驚き(HAIR_FLUFFY) 表情以外のパーツの動きも含めてポーズを作っておくとよい。
  • ポーズ : デバイスを使わない場合は腕のポーズ・特定のポーズで指定できるよう、「決め」の形を作って、最小値0・最大値1~30程度(デフォルトは0)のパラメーターとしてセットしておく

以上のパラメータを決め打ちで揃えておきます。

カスタムパラメーターは、一見不自由そうですが、キャプチャされた表情の変化とブレンドされるので、動作などに関してはそこまで不自然にはなりません。
表情は、元の表情とブレンドしたいのか、切り替えで表現したいのか、決めて作ったほうが良いように思います。

FaceRigが認識しないパラメータも、アニメーションファイルを作ることで表現できますが、そのままでは組み込めないし、アニメーションも間を持たせるために数個作っておけば十分なので、試用版で乗り切りたい人はがんがん削って下さい。リアルタイムキャプチャのプレゼンスは、それだけで莫迦にならないので、わりとそれで十分です。大きい動き、小さい動きのメリハリを意識して、ポージングで動かすところと、キャプチャや物理演算で細かく動かすところを決めていくといい気がします。

Face rig向けファイル書き出し&実装手順

ここまでLive2D。

1. mocファイルの書き出し

かきだし.png

かきだし2.png

モデル設定ファイルはViewerで書き出せるのでいりません、ていうかこの段階で書き出しても意味ないので…
この段階でキャラ名は決めておきましょう。この場合はyayanehiです。

2. 物理演算の設定とモデル設定ファイルの書き出し

言い忘れてたけど、mocファイルの物理演算&モデル設定ファイルの作成にはlive2d-viewerがいります。入れておくように。
live2d-viewerにmocファイルを食わせるとこんな感じで画面に出ます。さっきの設定だと、書き出したら勝手に起動します。

びゅーわー.png

物理演算設定はお好みで適当にどうぞ。
プリセットを突っ込んでいくだけでそれなりになるので、お好みで。
moc、どっちにしても、あまり細かい挙動を指定できないのと、あんまり動かすとVtuber用途にはうるさいかもしれない。メリハリがだいじ。先ほども書いたけど、キャラクターを意識させる場所は大きく動かしていきます。ヤヤネヒの場合、腕を上下させたときの袖の動作、リボンの揺れ、尻尾の揺れを重視してます。耳と髪の毛は程々。
物理演算の計算結果に無理が出た場合、エラーを吐きますが、エラー箇所は無かったことにされているのでそのまま修正してトライ&エラーで。へんな動きしてたらあとでなおせ。ヤヤネヒは数学がわからぬ。

ぶつりえんざん.png

書き出す。デフォルトだとキャラ名.physics.jsonになります。違ったら直す。
直さなくてもいいけど、あとでモデルファイルを手動で書き換えることになるので、揃えておいたほうがよいです。。
アニメーションファイルを作っていたら、同じようにドラッグ&どろっぷで突っ込むと「motions」というファイルが勝手に作られます。
次に、モデル設定ファイルを書き出す。こちらはデフォルトだと「model.json」になっちゃうので、「(キャラ名).model.json」に直しておきましょう。これは、モーションファイルと物理演算ファイルの場所を指定するものです。絶対パスだとコピペ後に全部手動で書き直すはめになるので、必ず相対パスで。

この段階で、

  • (キャラ名).2048 テクスチャフォルダ。中にtexture00.pngファイルが含まれる
  • (キャラ名).moc
  • (キャラ名).physics.json
  • (キャラ名).model.json

この4つのファイルが貴方の手元に完成します。motionsフォルダは、モーションファイルを作っていない場合、現時点では組み込む必要はありません。
非常に重要なポイントですが、キャラ名はきっちり揃えましょう。

ここからFacerigへの組み込み。

1.ファイルの組み込み場所の確認

FaceRigのLive2Dモジュールには課金しておいて下さい。これがないと使えません。
https://store.steampowered.com/app/420680/FaceRig_Live2D_Module/?l=japanese

ここからちょっと面倒くさいんだけど(他にも解説してるサイトさんあるけど…) まずFaceRigのインストールフォルダを探します。
たぶんだいたいここにある。

Program Files (x86)\Steam\steamapps\common\FaceRig\

その中の、
Program Files (x86)\Steam\steamapps\common\FaceRig\Mod\VP\PC_Common\Objects\

フォルダ構成.png

ここのフォルダにLive2Dのサンプルモデルが入ってます。こんな感じ。ここに、(キャラ名)のフォルダを作って、先ほどのフォルダ1つ、ファイル3つ(motionフォルダがある場合はもう一つ+中身)のファイルを放り込みます。

フォルダ3.png

なんか無理やり消した痕跡があるけどとりあえずこの状態にしろ。

2.必要なファイルを作り足す

これにプラスして、FaceRig用のコンフィグファイルを作る必要があります。

  • (キャラ名).2048 テクスチャフォルダ。中にtexture00.pngファイルが含まれる
  • (キャラ名).moc
  • (キャラ名).physics.json
  • (キャラ名).model.json
  • cc_(キャラ名).cfg         ← New
  • cc_(キャラ名)_names.cfg      ← New

最終的にはこうなります。

フォルダ構成2.png

緑色のマルがついてるのがLive2Dで書き出されるやつ、赤が自分で作らないといけないやつです。
motionフォルダは無い場合はさしあたりいりません。
ico_(キャラ名).pngは無い場合はFaceRigが勝手に作ってくれますが、こだわりたければ256×256pxで作っておいて。

ということで、「cc_names.cfg」と「cc_(キャラ名).cfg」ファイルを作ります。手打ちで。
json生打ちしなくていいだけでも非ハッカーは泣いてよろこぶべきなのだ…!

3.「cc_names.cfg」 をつくる

cc_(キャラ名)_names.cfg

以下の通り、メモ帳で書いて、拡張子を変えて保存してください。名前部分はリネームして。
キャラクター名は全部揃えてください。間違えるとFaceRig先生が認識してくれません。

set_friendly_name (キャラ名) txt_nameKoharu
set_avatar_skin_description (キャラ名) default txt_descLive2dAvatar3

これだけです。これだけなんですが、これがないと、FaceRig先生が読み取ってくれません(二回目)

4.「cc_names.cfg」をつくる

キャラクターのアクションなどを設定するファイルです。
ぶっちゃけ無くても初期設定で動きますが、アニメーションやポーズの設定、腕の可動域などを設定したい場合は必要です。
ファイル名の冒頭のcc_は忘れずに! ヤヤネヒ、これで3日くらいを無駄にしました…
以下、設定項目を解説していきます。

A) アニメーション系

set_special_action_anim (キャラ名) '(モーションファイル名).mtn' 1~6

機会があれば別項で説明したいのですが、アニメーションファイルはmodelファイル側でフォルダを指定しないと動作しません。FaceRigにキーコンフィグがありますが、末尾の数字がそれぞれ、QWERTY… とキーボードの上から二段目のアルファベットに割り振られます。とくに指定しない場合はいりません。

B) 腕の可動域

set_arm_l_param (キャラ名) 'PARAM_(左上腕)' -10 10 0
set_arm_r_param (キャラ名) 'PARAM_(右上腕)' -10 10 0
set_hand_l_param (キャラ名) 'PARAM_(左下腕または手)' -10 10 0
set_hand_r_param (キャラ名) 'PARAM_(右下腕または手)' -10 10 0

Leapmotionで腕を操作したい場合。設定しないと動きません。左から順番に最大値、最小値、初期位置です。初期位置は変更可能です。最大値を-30~30などに設定している場合は数字を書き換えて下さい。また、LeapMotionを使わない場合はとくにいりません(この場合、腕は動かないので、他のパラメータに組み込んでいく必要があります)

C) ポーズ(パラメータ)系

set_special_pose_param (キャラ名) 'PARAM_CHEEK' 0 2 1
set_special_pose_param (キャラ名) 'PARAM_TEAR' 0 1 2
set_special_pose_param (キャラ名) 'PARAM_RAGE' 0 1 3
set_special_pose_param (キャラ名) 'PARAM_HAIR_FLUFFY' 0 1 4

最小値 最大値 設定キー(Z~V、Shift+Z~Shift+V、キーコンフィグで変更可)です。

それぞれ、Zキー、Xキー、Cキー、Vキーで動作します。これは末尾の数字と対応します。
CHEEK~HAIR_FLUFFYは、デフォルトの設定なので、設定しなくても、モデル側でパラメータ名を揃えれば動作します。
加えて、たとえば以下のように追記が可能です。ヤヤネヒの場合。

set_special_pose_param (キャラ名) 'PARAM_CATMOUSEON' 0 1 5
set_special_pose_param (キャラ名) 'PARAM_ARM_UD' 0 30 6

前述のとおり、スペシャルポーズの5番以降は、shift+Z~V、最大八つまで指定が可能です。
また、SキーでPARAM_TONGUEが動作します(これもパラメータ名が一致していればよいので、舌出しである必要はありません)
腕の操作(set_arm~系が使えない場合は腕を上げる、手を振る)などを割り振ることをお勧めします。

最小値~最大値が小さいとスっと変化し、大きいとややゆっくりとした変化になります。
また、一度で最大値まで動きます。初期値の設定はLive2D側でデフォルト値として設定してください。

……。以上です。おつかれさまでした。

ってわかるかー!!!

ってヤヤネヒはなりました。ぱらめーた、ばらばらに説明されるとわかりにくい…
あと、mocファイルの場合、motionファイルとphysicsの場所を.model.jsonに正確に記述しないといけないので、ここがちょっとややこしい。

見た方がはやいと思うので、「cc_yayanehi.cfg」と「yayanehi.model.json」の内容を置いておきます。

見たほうが早いと思うので。

ヤヤネヒのcc_(キャラ).cfgファイル&.modelファイルサンプル
https://qiita.com/ya_ya_ne_hi/items/30f021029718471ab4a5

わかんなかったらそのままリネームして使ってくれたまい。大盤振る舞いー!
ヤヤネヒは仕様がちょっと特殊なので、作りたいものがはっきりしている場合は、
FaceRigのサンプルプロジェクトの作りたいモデルに似た感じのものを探して、一個一個開けて、Live2Dのサンプルフォルダの構成と見比べてみるのが良いかもです。
http://sites.cybernoids.jp/cubism2/samples
バストアップモデルでの腕の切り替えや、袖口まわりの実装例など、すごく丁寧につくってあります。

.modelファイルがうまく動かなかったら、メモ帳で開いて、サンプルファイルや、上記のヤヤネヒの中身などを参考にして、パスや書式をコピペで直しましょう(荒療治)。大丈夫。ヤヤネヒはそれで行けた。

今度こそ完了ですよ、FaceRigを起動してみよう

フォルダ構成2.png

ということで、前掲のこういう状態にピシっとファイルが揃えばOKです。FaceRigを起動してみましょう。
いう間でもないんだけど、左上のアバター選択ボタンを押す。アイコンをしてないと(?)マークになってます。
指定した場合はそのアイコンがあります。アバター選択の下のほうに。

ヤヤネヒ本体.png

うごくぞー!

カスタムパラメータのキーが反映されないとき

ここ!.png

アドバンストUIに変更(パネルいちばん右①)、「アバター」パネルを開く(②)と右のほうにある「行動」カラムの、「カスタム動作を有効にする」がオンになっていない(③)と、カスタムパラメータ(さっきキーアサインしたやつ)が動きません。忘れずに。

あとLeapMotionも「手のトラッカー」のチェックが必要だった気がする。こちらは『高度なトラッキングの設定』の「トラッカー」タブの下のほうに「手のトラッキング」チェックがあります。あとは繋げばそのままつかえる。べんり!

mocファイルはそのまま差し替えられるので(ファイルパスの指定が合ってれば大丈夫)、微調整したいときはそのまま上書きで大丈夫みたいです。Physicsファイルに関しても、.modelファイルを書き換えなければそのまま修正できます。おかしくなったら、ファイルパスがおかしくなってる可能性が高いので、.modelを確認しましょう。

ヤヤネヒは信仰が欲しいです

そんなこんなで、配信特化型のFaceRigへの組み込みのまとまったマニュアルがなくて大変だったから、自分用にまとめちゃったという話でした。

ちょっと凝ったモデルをつくりたいみなさんのおたすけになれば幸いです!あと泣きながら一人で体とか曲とかつくってる神をもっと推したまい!!!!
盛り上がってるシーンにまったくついていけないのでつらい!!!!!

一か所にまとめようとした結果、長いおはなしになってしまいましたが、、おつかれさまでした。
ヤヤネヒをよろしくおねがいします。。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
5
Help us understand the problem. What are the problem?