ティラノスクリプトでLive2Dを動かす&ボイスをつけてみよう!(実践編)CV選考ポロリ話もあるよ
こんにちは!はじめましての方ははじめまして!しあんです!
ティラノスクリプト使い、Live2D×フルボイスでノベルゲームを制作しています。
今回はハナダ(縹)様企画のノベル/ADV制作者によるアドベントカレンダー企画に参加させていただき、実際に制作したゲームをもとに「ティラノスクリプトでLive2Dを動かす&ボイスをつけてみよう!(実践編)」という内容で書いてみたいと思います。(CV選考ポロリ話をあるのでお楽しみに!)
Live2Dとは?
Live2D社が開発したイラストに立体的なアニメーションをつける技術。
こちらを使ってキャラクターのまばたきや口を動かす(目パチ口パク)等のキャラクターの動作をつけていきます。
ティラノスクリプトとは?
シケモクMK様が開発した完全無料(商用利用制限なし・改造OK)のノベルゲームエンジン。
こちらを使ってゲーム上でキャラクターの動き等を制御していきます。
なお、今回はティラノスタジオV6とティラノスクリプトv600beta3(tyranoscript_v600beta3)を使用します。
1、Live2Dで動かすキャラクターを用意する
今回は自分でキャラクターを用意します。
やり方を全部書くと長いので、さらっと流れを書いていきます。
ご参考までに。
フォトショやクリスタなどのお絵描きツールで動かしたいキャラを描きます。
このとき重要なのは動かしたいパーツをこの時点で分けておくこと(目や口、腕など)。
動作させたい腕等は分けてフォルダに入れ、同じ1枚絵に描いておきます。
またその際、絵の時点で重なる部分、隠れてしまう部分は書き足してぬりつぶしておきます。
口については上唇、下唇、口中(あと好みで歯)でパーツを分けておくとモデリングしたときにいい感じに作れるようになります。
※上唇と下唇はわかりにくくなってしまうので、口中のパーツを残していますが、実際には不要です
目についてですが、片目ずつでパーツ分けが必要、かつキャラによってはかなり細かいパーツ分けが必要になってくると思いますが、白目、黒目、ハイライト、下まつげ、上まつげ、のパーツで大体は出来ます。
※画像ではハイライトを2つと二重を入れていますが、好みになってくるかなと思います
2、Live2Dでキャラをモデリングする
モデリングと言うと難しそうですが、させたい表情・動作を作っていく作業です。
工数がかなりかかりますが、後がかなり楽になるのでここが山場です!
※Live2Dの最近のアプデでモデルテンプレートというのがあり、かなりモデリングしやすくなったそうなのですが、まだ試せていないので今回は自力でモデリングしていく方法でやっていきます。
ここでポイントなのは何の準備もせずにモデリングをすると「何を作ればいいかわからない」状態になるので、先にエクセルやメモ帳に「このキャラにどんな表情・動きをさせたいか」を書いておくとよいです。
書いたものを全部作らなくてもOK!「これだけは必須!これはなくてもOK」など優先順位をつけるとよいかなと思います。
(自分もグレーにしているものは作成していません)
個人的には基本的な表情(喜怒哀楽)+そのキャラだけに必要な表情・動き+呼吸だけで十分じゃないかなと思ってます。(あとは工数時間との相談💦)
■目のモデリング
目は左右だけではなく、上下・斜めにも動くのでその感じでモデリングします。
■口のモデリング
口は結構動くので閉じる・開く・半開き・にっこり口・すぼめた口・への字口を作ると、口を上下にパクパクした口パクではなく、なめらかにしゃべっているように見えます。
■髪のモデリング
髪は揺れる感を出したいので真ん中・左・右をやや大きめのふり幅で作ると揺れてる感が出ます。
■ランダムに動かしてみる
ランダムに動かすとこんな感じです。
※上記3つ以外のモデリングもしています。
※モデリングをする際、必ずインスペクタのIDにID名を入れておきましょう。
(これを忘れると後々、痛い目にあいます・・・!)
モデリングが終わったら忘れちゃいけないのがリップシンク設定。
モデリング > パラメータ > まばたき・リップシンク設定を開いて口の開閉箇所にチェックを入れます。
これを忘れるとリップシンク(口パク)してくれません💦
モデリング・設定が全て完了したらファイル > 組み込み用ファイル書き出し > moc3ファイル書き出し でモデリングファイル(moc3)を書き出します
書き出すときjsonとかよくわからんのが一緒に出力されますが、「へーそんなのあるんだー」くらいに思っておいてください。
書き出したらそのファイルも保存します(.cmo3ファイル)
3、Live2Dキャラにモーション(動き)をつける
2でつけた表情・動作のモデリングにモーション(動き)をつけていきます。
ここで作った動きがティラノスクリプト上で動くモーションになります。
■手順
①Live2D Cubism Editorのファイル > 新規作成 > アニメーションを選ぶ
②ターゲットバージョン選択時にSDK(その他)を選択。
③.cmo3ファイルをシーン内にドラッグ&ドロップする。
④シーン名に名前をつけ、タイムライン内にさせたいモーションを設定します
⑤ファイル > 組み込み用ファイル書き出し > モーションファイル用書き出しで任意の場所に保存します
※このときにあらかじめ表情・モーションのフォルダを作ってしまうと管理が楽になります。
⑥Live2D Cubism Viewerを起動し、.moc3ファイルを
ドラッグ&ドロップする(Cubism Editorではないので注意)
■表情の場合
ファイル > 読み込み > 表情モーション で表情のファイルを読み込む
■モーションの場合
①モーションファイルが入ったフォルダをドラッグ&ドロップする
②ファイルを選択して、グループ名を入れます(1文字目は大文字推奨)
※モーションが複数ある場合はさらにポーズの追加が必要になります。
①ファイル > 追加 >ポーズでpose3.jsonを追加する
②pose3.jsonの中身を変えていきます。
Part IDの名前のうち、モーションさせるPartIDのグループNo全てに「0」(数字のゼロ)を入力します。
これをすることでデフォルト以外のパーツが表示されなくなります。
※ちなみにモデリング時にインスペクタIDの設定を忘れると自動的に振られているpart〇〇(数字)という名前で表示され、非常にわかりにくくなります(2で忘れると痛い目にあうと書いたのはこのことです)💦
⑦上記設定が終わったらファイル > 書き出し >モデル設定でmodel3.jsonを上書きをします
※今回の場合は主に動くのが右腕だけなのでグループIDを0のみで完了出来ていますが、両手が動く場合別途設定が必要な場合もあります。
4、いざティラノスクリプトに実装!
ここまで出来たらティラノスクリプトに実装してみましょう!
下準備&記述が多くてちょっと大変ですが、1つずつやっていけば大丈夫です!(コード、サンプルコードはコピペOK!)
■下準備
①:ティラノ公式様にある画像の箇所にあるLive2DプラグインをDLして展開します。
②、Live2D社様にあるCubism Core for Web のほうのプラグインをDLして①のフォルダに入れる
③、②を入れた①を自分のゲーム(プロジェクト内)のdata/others/plugin フォルダに入れる
④、scenarioフォルダのfirst.ks に[plugin name="live2d"]と入力する
;Live2D呼び出し
[plugin name="live2d"]
⑤、scenarioフォルダのmake.ks に[live2d_restore ]と入力する
[live2d_restore]
これでLive2Dを表示させる準備が整います。
■ティラノスクリプトにキャラクターを表示させる(組み込む)
準備が出来たので実際に表示します!
①data/others/plugin/live2d/model内に新しいフォルダを作り、モデリングしたLive2Dモデルを入れます。
※このとき作ったフォルダ名がモデルIDになります
②.ksファイル内に[live2d_new name="モデル名" model_id="モデルID" ]を記述します。
※実際に入れるとき、モデル名とモデルIDは日本語NGです。
[live2d_new name="モデル名" model_id="モデルID"]
※表示されないエラーを起こりにくくするために下記は同じ名前にしておくことをオススメします。
・Live2Dの.mocファイル名(モデリング後に書き出すモデルの名前)
・①で作るフォルダ名
・nameのモデル名
※大文字小文字は別で判断されるので注意
③同じksファイル内の表示させたい箇所で[live2d_show name="モデル名" y=-0.8 x=0 scale=2 ]を記述すればOK!
※live2d_showは必ずlive2d_newの下に書いてください。
[live2d_show name="モデル名" y=-0.8 x=0 scale=2]
サンプルコード
;例)syunというモデル名のキャラクターを表示する
[live2d_new name="syun" model_id="syun"]
[live2d_show name="syun" y=-0.8 x=0 scale=2]
※y(縦位置)、x(横位置)、scale(大きさ)の値はキャラクターと表示させる位置によって変わります。ご自身のキャラクターに合った値を探してみてください。
位置と数字の関係を画像にしましたので、ご参考までに。
5、キャラをティラノスクリプト上で動かしてみよう!
2、3で動作を作ってきたので、あとは動かす用のコードをksファイル内に入れるだけ!
今回は楽しい(happy)という表情と左肩に右手を置くモーション(Handson)をさせます。
※必ずlive2d_newとlive2d_showの下に書いてください。
■表情の場合、下記をksファイル内に記述
[live2d_expression name="モデル名" expression="させたい表情名"]
例)syunというLive2Dモデルに楽しい(happy)という表情をさせる
[live2d_expression name="syun" expression="happy"]
サンプルコード
;例)syunというLive2Dモデルに楽しい(happy)という表情をさせる
[live2d_new name="syun" model_id="syun"]
[live2d_show name="syun" y=-0.8 x=0 scale=2]
[live2d_expression name="syun" expression="happy"]
■モーション(動作)の場合、下記をksファイル内に記述
[live2d_motion name="モデル名" mtn="させたいモーション名"]
例)syunというLive2Dモデルに左肩に手を置く(Handson)というモーションをさせる
[live2d_motion name="syun" mtn="Handson"]
サンプルコード
;例)syunというLive2Dモデルに左肩に手を置く(Handson)というモーションをさせる
[live2d_new name="syun" model_id="syun"]
[live2d_show name="syun" y=-0.8 x=0 scale=2]
[live2d_motion name="syun" mtn="Handson"]
※motion後、モーションが戻ってしまうときはモーション終了後の
アニメーションを作り、モーション後に下記を記述すると戻らなくなります。
[live2d_mod name="モデル名" idle="固定させたいモーション名"]
例)syunというLive2Dモデルの左肩に手を置くモーションをHandson_idleという名前で固定させる
[live2d_mod name="syun" idle="Handson_idle"]
サンプルコード
;例)syunというLive2Dモデルに左肩に手を置く(Handson)というモーションをさせる
;(モーションが戻ってしまう場合の処置)
[live2d_new name="syun" model_id="syun"]
[live2d_show name="syun" y=-0.8 x=0 scale=2]
[live2d_motion name="syun" mtn="Handson"]
[live2d_mod name="syun" idle="Handson_idle"]
6、リップシンクさせてボイスをつけてみよう!
※リップシンクとは?
口の動きをテキストやセリフに合わせることです。
4で実装したキャラクターにボイス(声)をつけて喋らせてみよう!
定義とか難しいこと書いてますが、要は使用する前の前段階みたいなものです
■前段階として
ボイスはdata/soundフォルダ内にいれておきます(※bgmではないので注意)
なお、ボイスのファイル名は1,2,3…みたいな書き方にしないとダメです(0001とかだとボイスを再生してくれません)
例)
〇 voice1,voice2…
✖ voice0001,voice0002…
①ksファイル内にlive2d_newを定義する(書く)際、下記のように変更します。
[live2d_new name="モデル名" model_id="モデルID" lip="sound" lip_se="番号" jname="キャラ名" ]
例)桐生俊介という名前のキャラのモデル(モデル名(name)・モデルID:(model_id):syun)を新規で表示させることを定義する。なお、lip_se(カテゴリのようなナンバリング)の番号は1
[live2d_new name="syun" model_id="syun" lip="sound" lip_se="1" jname="桐生俊介" ]
②同じksファイル内に下記のように書きます
[voconfig sebuf=番号 name="モデル名" vostorage="ファイル名{number}.ogg" number=しゃべらせたいボイスの番号]
例)syunという名前のキャラクターのボイス(ファイル名:syun_voice)を1番目から再生する
[voconfig sebuf=1 name="syun" vostorage="syun_voice{number}.ogg" number=1]
sebufの数字はlip_seと同じでよいかなと思います。
(確かボイスのオンオフ設定/コンフィグ設定のときに必要だと思いましたが、詳しく覚えてません。すみません)
③voconfigの下に[vostart]と記述する(これがないとしゃべりません)
[vostart]
ばらばらに分けて書くとわかりにくいのですが、まとめて書くとこんな感じです。
[live2d_new name="syun" model_id="syun" lip="sound" lip_se="1" jname="桐生俊介"]
[voconfig sebuf=1 name="桐生俊介" vostorage="syun_voice{number}.ogg" number=1]
[vostart]
これで[vostart]の下に#桐生俊介と書くと、桐生俊介というキャラクターが1番目のボイスファイルから喋ってくれるようになります。
※必ずキャラクターを表示してから#〇〇(キャラクター名)を書くようにします
コードを書くとこんな感じ。
サンプルコード
;リップシンクさせてキャラクターにボイスをしゃべらせる
[live2d_new name="syun" model_id="syun" lip="sound" lip_se="1" jname="桐生俊介"]
[voconfig sebuf=1 name="桐生俊介" vostorage="syun_voice{number}.ogg" number=1]
[vostart]
;syunというモデル名のキャラクター(桐生俊介)を表示する
[live2d_show name="syun" y=-0.8 x=0 scale=2]
#桐生俊介
うーん。それにしても僕に伝えたいことって何だろう?[p]
vostrageの表記は他にもあるらしい?のですが、自分はこのやり方がやりやすかったのでこの方法を取っています。
実装したのがこちら
もちろんこれまでのコードをまとめて書くことで、動作をまとめて同時にすることも出来ます!
サンプルコード
;これまでの動作(喜ぶ・左肩に手を置く(モーション)・しゃべる)を同時に行う
[live2d_expression name="syun" expression="happy"]
[live2d_motion name="syun" mtn="Handson"]
[live2d_mod name="syun" idle="Handson_idle"]
#桐生俊介
うーん。それにしても僕に伝えたいことって何だろう?[p]
以上で本題のティラノスクリプトでLive2Dを動かす&ボイスをつけてみよう!(実践編)は終了です。
ティラノスクリプトでこんなこと出来るよーと気持ちで書かせていただいたので、どなたかの参考になれば幸いです。
長文にお付き合いいただきありがとうございました!お疲れ様でした!
ポロリ話もあるのでもう少しだけお付き合いいただけると嬉しいです。
CV選考ポロリ話
現在制作中の「因果律 Prison of Memory」を含めてCV募集をさせていただいたのは3回。
初めて募集させていただいたのは3年前(2021年)。年月が経つのは早いなーと思いながら自分が募集&選考時に考えていることをちらっと。
※あくまで個人的に考えていることです。
■募集するときのポイント
募集する側も「何をどうすればいいの?」って思うときありますよね。
自分はわかりやすく簡潔に書くために下記のことを気を付けながら作っています。
・キャラクター名
・キャラの概要
・キャラの性格(特徴等)
・単価(とその時点でわかればセリフ数 / または文字数)
・(あれば)キャラのセリフ
・(あれば)キャラの立ち絵
キャラクターのイメージがしやすければ応募する声優さん側も応募しやすくなるんじゃないかなと思います。
■選考させていただくときのポイント
自分が選考させていただくときには下記の点を見ながら考えています。
▼キャラとの相性
これはもうこのままなのですが、ボイスとキャラのイメージが合うかどうか。
まずはそこを見ています。
▼いただくサンプルボイスの声量
こちらもこのままですね。いただいたサンプルボイスの時点で声量がどうか、ノイズが入っていないかどうか等を見ています。
▼応募への意気込み
自分の性分なのですが、ご応募時にいただく意気込みと言うか熱意を見るのが好きなので全部じっくり拝見しています。
どうしても決められない!というときはご応募時の熱意の有無で判断するときもあります。
(実際、因果律 The First Contact VoiceVer(以下因果律TFC)の楪翔月役の方は、ご応募時の意気込みから「この方面白い!」と感じて採用させていただき、そのまま現在まで続投していただいています)
▼こちらの意図していることを汲み取っていただけているか
募集時にサンプルボイス用としていくつかキャラのセリフをご提示させていただくのですが、キャラの性格やセリフの意味を汲み取っていただけているかを見ています。
(こちらも実際、因果律 Prison of Memoryのアドラメルク役を募集させていただいた際、お1人だけこのキャラのセリフの意味を汲み取っていただけていた方がいらっしゃったのでその方にご依頼しています)
■納品期限はどれくらい?
実際、台本をお渡ししてからの納品期限、どれくらいを設定しているのか?って思いますよね。
自分は特に急いでいない&余裕を持って収録していただきたいので、2~3ヵ月後を納品期限にさせていただいてます。
■ボイスの料金、いくら払ってる?
ボイスの料金なのですが、初めてCV募集をさせていただいた3年前(2021年)に調べたとき「プロの方は200円」というのを見かけて「お金を支払っている以上はプロだよね」と思い、それ以来一律で1セリフ200円でご依頼させていただいてます。
■選考から漏れてもチャンスはあるかも?
選考から漏れても諦めるのはちょっと待って。稀にですが、追加でCV募集をすることがあるかもしれません。
↓こんな感じ
たまにCV募集主さんのポストをチェックしてみるといいことがあるかもしれません。
(実際に自分はこちらでリプライいただいた方にCVをご依頼させていただきました)
■オフラインイベント(展示会など)で名刺交換してみよう
そもそも出会いがない。と言う場合はクリエイターさんが参加しているオフラインイベント(展示会など)に参加して名刺交換してみるのはいかがでしょうか?
クリエイター側としては自分と自分のゲームをより多くの人に知ってもらいたい&いろんな人と知り合いたい関心の高い方ばかりなので、名刺交換に応じてくれる方は多いのではないかと思います。
また、名刺を渡していただく際、ただ渡すだけではなく「こういう声得意です」と教えていただくと、名刺をいただいたほうとしても「そういえばこういう声優さんいたな」と結構覚えていたりします。
もちろんそれでご依頼が決まるわけではないのですが、ご依頼する側としてもドキドキしており、”顔と声と雰囲気を知っている”分、気持ちご依頼のハードルが下がります。
(実際に名刺交換いただいた方にCVをご依頼させていただいた実績もあります)
まさか3回も募集させていただくことになるとは思わなかったのですが、募集させていただくのも選考させていただくのも楽しくてちょっと癖になりそうです。
因果律 Inside The Memoryと因果律TFCのCV選考については下記で読めますので、ぜひご覧ください。
あと付け加えるとすれば、ボイスは、いいぞ。
この表情・ポーズを使っているゲームがこちら!(宣伝)
おかげさまでSteamのLifetime total units(ライブラリ所持ユーザ数) 14,000!累計プレイ・DL数3000!
Live2D×ほぼフルボイス!1枚の招待状から始まる記憶にまつわるミステリーノベルゲーム「因果律 Inside The Memory」、配信中です!
実際に使っている表情・ポーズを眺めてみるのも、普通に楽しんで遊んでいただくのもありがたいです!
Steam:
ノベコレ様、Steamどちらも無料なのでぜひ、遊んでみてください✨
最後まで記事をお読みいただきありがとうございました!
明日(21日)は、まさんさんによる「ビジュアルノベルYouTuberのススメ」です。
チャンネル登録者数 1.48万人のすごい方が書く記事内容・・・気になります!
▼▼まさんさんのyoutubeチャンネルはこちら!▼▼
https://www.youtube.com/@masanlive
明日の記事もお楽しみに!✨
ゲ制アドベントカレンダーの参加者様と記事一覧はこちら!