忍者ブログ

でんきみちブロgu。(あ行。)

大変古い古すぎるレビューの置場。お絵かき掲示板消失により3年ぶりに雑記に転用(2017年)。現在はノベルゲーム制作とライブ2Dがマイブーム。

ライブ2Dモデル ビューアーでのモーションファイルとの紐づけ方

俺式ゲーム用(ティラノ)Live2Dモデルの作り方

で解説したライブ2Dビューアーでの設定について
詳しく書きます


ライブ2Dモデルを作成し、モーションファイルとmocファイルを書き出したら

①ビューアーでmdele3.jsonファイル or mocファイルを開きます



②開けたら、motionsフォルダにモーションファイルを入れて置きフォルダごと
 ドラックして入れます



③motionsファイルを開いたあと、ひとつひとつ『再生』して
 不具合が無いかチェックします。
 モーションを順にクリックしてモーションが切り替わった時や
 思ってた挙動と違うモーションになった場合はアニメーターに戻って修正します



OKであれば、グループ名のところにモーショングループ名を記入します。
Kao とか Reset とか Body  です。
半角英数で入れます。




④すべてのモーションに、モーショングループ名をつけたらモデル設定を書き出します。


⑤モデル設定が書き出せたら、model3.jsonファイルを開くとしっかり記述されている
 はずです。


※ちなみに、ティラノスクリプトのプラグインはモーショングループの一番上が0
 ツクールのプラグインだと一番上が1になります。

ティラノスクリプトだと↓のような感じで呼び出します
[live2d_motion name="モデル名" mtn="Kao" no=0 ]
[live2d_motion name="モデル名" mtn="Kao" no=1 ]



⑥紐づけが終わったら、必要ファイルをまとめます。


この中に↑

必要ファイル↑のみにします。

フォルダ名と中のファイルの名前は同じにします。

これでライブ2Dモデルデータの完成です。


フォルダ名と中のファイルの名前は同じというのはこういうことです。
これがファイル構造

このフォルダをつっこめば
ティラノでも、Animazeでも動くはずです。
(動かない場合はmocファイルのバージョンか、jsonファイルの記述になにか不具合がある可能性)

以上です。









PR

メニュー画面拡張プラグインをお借りしよう!

ティラノスクリプトでメニュー画面拡張プラグインお借りしよう!!

使い方迷ったのでメモしておきますー。


メニュー画面拡張プラグイン とは

さくた様が作られた、ティラノスクリプト用のプラグインです。
こちらで配布されています。
https://skskpnt.booth.pm/items/4572575


ティラノのデフォルトメニューでは、
コンフィグやバックログをメニューに入れられないので
レイアウトをいじったりティラノスクリプトのスクリプトが
メニュー画面で使えるようになるすばらしい、プラグインなので
ありがたいのですが、
導入するときに迷われる方(私も迷ったので)もいるかなと、
勝手に、使い方をメモしています。



++++++++++

ティラノスタジオで新規ゲーム作成。

作成したゲームデータのtyranoフォルダを
 ver520以上のティラノスクリプトにバージョンアップする。


ティラノスタジオのバージョンにもよると思いますが、
V110だと作成されるデータがティラノスクリプト505あたりなので
ティラノスクリプト公式サイトから520以上のティラノスクリプトを
ダウンロードして、tyranoフォルダを上書きしてバージョンアップしてください。

メニュー画面拡張プラグインの説明書にもありますが、
このプラグインはv520以上のティラノスクリプトに対応しています。
なので、それより以前のバージョンのゲームデータだと動きません。


メニュー画面拡張プラグインを
 ティラノのdata\others\plugin
  にプラグインのフォルダを入れる。

first.ksにプラグイン呼び出しタグを記入

★メニュー画面拡張プラグインを読み込むと
 メニュー画面拡張プラグインのhtml、cssでデフォルトメニュー画面が上書きされます。

 init.ks ファイルにメニュー画面拡張プラグインのタグを記入する。
(私はどのファイルにタグ記入すればいいのかわからずhtmlファイルに書いてアレってなってました… (・p・;)
あとは

;背景
[menuimage storage="bg_base.jpg" x=0 y=0 zindex="-1"]  
;クローズボタン
[menubutton graphic="modoru.png" enterimg="modoru2.png" clickimg="modoru2.png"  x=1100 y=100 type="close" ]
 
;バックログボタン
 [menubutton graphic="menu_button_log.png" enterimg="menu_button_log2.png" clickimg="menu_button_log2.png"  x=40 y=150 type="backlog" ]
;コンフィグボタン
 [menubutton graphic="menu_button_sleep.png" enterimg="menu_button_sleep2.png" clickimg="menu_button_sleep2.png" x=640 y=450 type="sleepgame" storage="config.ks"]
[return ]


★[return ] の上に記述するのがポイントです。

コンフィグボタンだけは例文がのってますが他はのってないので。

あと、このファイルはksファイルなので、
背景表示やその他のことがティラノスクリプトのタグでできます。
つまり animタグとか使えるわけですな。

というわけで、こちらのプラグインで
デフォルトメニューボタンから呼び出せるメニューが無限大です!!!
感謝感激!!!ありがとうございました!!




ティラノスクリプト。ハンガーメニュー風ボタン

ティラノスクリプトで表示している
fixボタン、 roleボタンについて

[button  graphic="button/log.png"  name="auto"  x="960"  y="450" fix="true "  role="backlog"  ]

とかで
ゲームの進行中にずっと表示しておけるボタンです。
これを、開いたり閉じたりできるようにする方法です。

ハンガーメニュー風、スライドメニュー風なのをksファイル(シナリオファイル)を
つかって表示したり消しています。

まず、
[button  graphic="button/menu.png"  name="menu_0" x="1050"  y="520"  fix="true " storage="menuopen.ks"  ]
 roleを使用せずfix="true "でfixボタンを作成します。

そしてクリックするとstorage="menuopen.ks" ファイルにジャンプするようにします。


menuopen.ksというシナリオファイルは************

;メニューボタンを消す
[clearfix  name="menu_0"  ]
;表示させたいボタン
[button  graphic="button/save.png"  name="mb"  x="1050"  y="520"   role="save"  ]
 
[button  graphic="button/load.png"  name="mb2"  x="1050"  y="520"  role="load"  ]
 
[button  graphic="button/close.png"  name="mb3"  x="1050"  y="520"   role="window"  ]
 
[button  graphic="button/sleep.png"  name="mb4"  x="1050"  y="520"   role="sleepgame"  storage="config.ks"  ]
 
 
;表示させたボタンを消すためのメニュークローズボタン
[button  graphic="button/menu.png" enterimg="button/menu2.png"  clickimg="button/menu2.png" name="mbc"x="1050"  y="520"   fix="true" storage="menu_kesu.ks"  ]
 
;表示させたボタンをスライドアニメするアニメタグ
[anim name="mb" left="900"  top="520" time="200" method="easeInSine"]
[anim name="mb2" left="800" top="520"    time="200" method="easeInSine"]
[anim name="mb3" left="700" top="520"    time="200" method="easeInSine"]
[anim name="mb4" left="600" top="520"    time="100" method="easeInSine"]
[wait time=200]
 
;リターン
[return]

***********************************

という中身にしておきます。


menu_kesu.ks シナリオファイルも必須なので
***********************************
;表示させたメニューを消す
[clearfix  name="mb"  ]
[clearfix  name="mb2"  ]
[clearfix  name="mb3"  ]
[clearfix  name="mb4"  ]
[clearfix  name="mbc"  ]
;メニューオープンボタン表示
[button  graphic="button/menu.png"  name="menu_0" x="1050"  y="520"  fix="true " storage="menuopen.ks"  ]
[return]

***********************************
と保存しておきます。

メニューを閉じたり開いたりしてみる方法でした。




スキップボタン付きスタッフロールで画像変更したい

以前書いた

スキップボタン付きスタッフロール

の記事にメールフォームよりメッセージを頂きまして、
ノベルゲーム制作への気持ちも書かれていて
応援したかったのでお返事を送ろうとしたのですが
返信先アドレスに送信したところデリバリーエラーになってしまって送れなかったので
記事で書かせていただきます。

ティラノスクリプトで

スタッフロールを動かしながら、画像を変更したい。
画像変更中にスキップボタンが反応しない!!

ということで

続・スキップボタン付きスタッフロールの巻

動作テストをしてみました。



スタッフロールのptextのアニメーションがスタートした後に
 
[bg storage="0_midori.png" time="3000" ]
[bg storage="0_kiiro.png" time="3000"]
[bg storage="0_kuro.png" time="3000" ]
 
とスタッフロールしている間にバックで画像を変更してみました。
なんと、画像変更中はボタンが反応しません。なるほどな。


[bg storage="0_kuro.png" time="3000" ]
はtime=3000のウェイトを待っている。

3000かけて背景画像を変更するまで次の処理に進まないということです。
wait=の記述がないため デフォルトでwait="true"
→ [bg storage="" wait="true" time="3000" ]

になっている。

つまりこうすればいいんだ!
[bg storage="0_midori.png" time="3000" wait="false"]
[bg storage="0_kiiro.png" time="3000" wait="false"]
[bg storage="0_kuro.png" time="3000" wait="false"]



…あ!!
しまった。
ただし、wait="false"にすると、待たずに次の処理にすすんでしまうため
画像がすごいスピードで変わり続けてしまいました…Orz

ならば!

[bg storage="0_midori.png" time="3000" wait="false"]
[wait time="3000"]
[bg storage="0_kiiro.png" time="3000" wait="false"]
[wait time="3000"]
[bg storage="0_kuro.png" time="3000" wait="false"]
[wait time="3000"] 


こうだ!!!
やりました。

画像変更中のwait=trueはボタンのジャンプを受け付けないようですが
waitタグのみの待ち時間はボタンのジャンプを受け付けるので
いけるのではないかと思います。

以下、スクリプトです。++++++++++++++
;エンディングテスト
[cm]
;背景変更
[bg storage="0_kuro.png" time="100"]
;メニューボタンの非表示
@hidemenubutton
;スキップボタン
[glink name="sukip" color="btn_05_black" size="18"  width="200"  x="800"  y="5"  text="skip"  storage=""  target="skip" ]
@anim name="sukip" time=10 opacity=150
;スタッフロール
@layopt layer=0 visible=false
[ptext layer=0 text="クレジット" size=20 x=400 y=300 color=snow name="text"]
[ptext layer=0 text="スタッフロール" size=20 x=400 y=400 color=snow name="text"]
[ptext layer=0 text="スタッフロール" size=20 x=400 y=500 color=snow name="text"]
[ptext layer=0 text="スタッフロール" size=20 x=400 y=600 color=snow name="text"]
[ptext layer=0 text="スタッフロール" size=20 x=400 y=700 color=snow name="text"]
[ptext layer=0 text="スタッフロール" size=20 x=400 y=800 color=snow name="text"]
[ptext layer=0 text="スタッフロール" size=20 x=400 y=900 color=snow name="text"]
[wait time=1]
;スタッフロールの文字がアニメーションする設定
[keyframe name="animation1"]
[frame p=0% y="400"]
[frame p=100% y="-1000"]
[endkeyframe]
;アニメーションの実行 3秒かけてキーフレームアニメーションを実行
[kanim name="text" keyframe="animation1" time="30000" easing="linear" ]
;スタッフロールを描写したレイヤーが見えるように
@layopt layer=0 visible=true

;背景画像を変更
[bg storage="0_midori.png" time="3000" wait="false"]
[wait time="3000"]
[bg storage="0_kiiro.png" time="3000" wait="false"]
[wait time="3000"]
[bg storage="0_kuro.png" time="3000" wait="false"]
[wait time="3000"] 
;アニメーションの再生を待つ(waを使うとボタンが使えないためウェイト)
;ここの待ち時間は画像変更中のタイムを引いて計算しています。
[wait time="20000"]


[cm]
;エンドテキスト
[ptext text="The End" layer="0"  x="580"  y="250"  size="35"  edge="0xffffff"  color="0xffffff" name="end" time="2000" name=end]
;クリッカブルでクリックでs(ゲーム停止)を飛ばす
[clickable  width="1100"  height="760"  target="skip"  ]
;ゲーム停止
[s]
;クレジット終了
*skip
[cm]
[wait_cancel]
;テキストを消去
[freelayer layer="0"]
;タイトルへジャンプ
*title
@bg storage ="title.jpg" time=2000
@jump storage="title.ks" target="start"


++++++++++++++
制作したいと頑張る
みなさんの作品が無事公開できることを応援しています。




俺式ゲーム用(ティラノ)Live2Dモデルの作り方

ティラノスクリプトやツクール用プラグインで呼び出すモデルを作る時の
私なりのやり方です。(あくまで俺式)

まず、モデルについてですがパラメータ等は通常と同じですが、
ゲーム用にするなら
●フェードイン、フェードアウトパラメータを作っています。





ここにデフォーマーたくさん使いたくないので(1個でやってる)
重なるところが透けるのがしかたないのですが、
ティラノスクリプトのライブ2Dプラグインは
ライブ2D表示レイヤーのフェードインフェードアウトはあるけれど
モデル単体の表示非表示時のフェードインフェードアウトがないので
使い方やゲームの内容にもよるのですが、
モデル自体にフェードインアウトのパラメータをつけてモーションを作っておくと
便利な時があります。

●口の開閉のみのリップシンクを入れておく。


ティラノのプラグインだと、モデルに設定した名前と同じ名前をメッセージウィンドウに
居れるとオートで口パクしてくれる機能があるので
入れておくと便利です。
まばたきは、ついていると目を閉じる場面とかで動いてしまうので
無いほうがいいです。
※オート口パクは万全ではないので口パクモーションは作っておくと吉
 (口の開閉のみ動いている2秒程度のモーション)




●リピートパラメータは使えない
リピートパラメータはリピートできません。プラグインにもっていくと…
プラグインのバージョンによっては使えるかもしれませんが、
要検証



●mocファイル、モデルの書き出しバージョンのチェック!
モデルの書き出しですが、
ライブ2Dプラグインのバージョンとライブ2Dモデルの書き出しバージョンがあってないと
ゲームで表示されません。
ビューアーでちゃんと表示されてライブ2Dファイルに問題がないのに
ティラノで映らない、表示されないとかがあったときは
書き出しバージョンもチェックです。

ティラノライブ2Dプラグイン4.x系でしたら
4.0で書き出したモデルじゃないとうつりません。
(4.1、4.2は×)







つぎ、モーションファイルづくりに行きます。


●アイドリングモーションは5秒より長いものにする
●その他のモーションは大体3秒くらいで作っている


その他のモーションはシナリオ上の演出に合わせてなんでもいいんですが
アイドリングモーションは5秒より長いファイルで作っておかないと
アイドリングとして認識されないことがあるようで(ツクール?)
ちょっと長めにしておくのが吉のようです

その他のモーション長めにすると、長くポーズしたいときはいいけど
クリックして次にシナリオ進めてるのに、ずっとやってたり
モーションの切り替わりが合わず変なポーズになると嫌なので
主要な動きは0:10~1:10の間に終わるようにしています。
これはびっくり顔になるモーション↓

0:00じゃなくて0:10からキーフレームつけだしてるのは
切り替えのインに0:00だと前のモーションから変わるときに
急すぎたりすることがあるためです。



●必須なのがリセットモーションを作っておくこと!



シナリオ上で再生したときに、デフォルトポーズに戻したり
パラメータを設定していない、モーションに移行するときに
無いと不便だったりします。
びっくり顔から笑顔になるときに、瞳孔が小さくなったまま口だけ笑ってしまう
とかなったりするので、
表情が複数あればあるほど、移行の組み合わせをすべて網羅して移行するの難しい場合があるのでリセットモーションを挟んで移行すると意図しない変な顔になるのを防げます。
フェードインや帽子、手に持っているものなどのオンオフはリセットから
外しておけば吉


●静止のアイドリングモーションを作っておく



長くや、プレイヤーがクリックするまで同じポーズや表情をしていてほしい時のための
アイドリングモーションを用意します。
それが、モーションの変更がないモーションファイルです。
↑は呼吸のみ入っています。
呼吸なしもあったら静止するからいろいろ演出として使えます。



  


必要箇所にのみキーフレームを付けます↑
リセットモーションはフェードのキーフレームは0個
フェードのモーションはフェード以外のキーフレーム0個です。

※アイドリングに呼吸しかキーフレームを入れていないのは
 表情を変化させるモーションを入れたときに(にっこり目等)
 瞬きにキーフレームがあると目が戻ってしまうからです。
操作する人がクリックするまで同じ表情を続けてもらうために
アイドリングに呼吸しか入れていません。
アイドリングも呼吸のみ、呼吸+瞬きと複数用意しておくことで
場面合わせて使い分けができます。



●モーションファイル名はわかりやすく


↑みたいな感じで、体、顔(表情)、リセット、アイドリング
と、わかりやすく名前を付けます。
わかりやすさは命です。
制作スパン長いと忘れます。自分の脳みそは信用できません。





●モーションファイルはmotionsというフォルダにまとめます。


モーションファイルができたら
モデル名.model3.json
にモーションファイルの紐づけをします。

ライブ2dビューアーが使えるなら
ビューアーでモーショングループ名を付けていただければOKです。
モーショングループ名は頭文字を大文字でつけます。
スクリプトうちミス防止に短くわかりやすい名前が推奨
●モーショングループ名もわかりやすく



モーショングループ名の一番上のファイルが
ティラノでは
[live2d_motion name="モデル名" mtn="Kao" no=0 ]
上から二段目のモーションが
[live2d_motion name="モデル名" mtn="Kao" no=1 ]


になります。
ちなみにツクールプラグインだと
一番上が no=1
2番目が no=2
になります。



●アイドリングモーションは1つのグループに1つにする


アイドリングモーションに設定するモーションに
複数モーションがあると、アイドリング中連続で再生されてしまうため
1個ずつにしておきます。
複数のアイドリングがあるときは
Idle    Idle2    Idle3
とかモーショングループ名をわけます。 


●expressionは使わない。

→これは、私がexpressionをうまく使いこなせないからです。
(秒数とか、モーションの移行とかを)
モーションファイルで表情を設定して作っておけば細かい調整が可能なので
ライブ2Dビューアー等のデフォルト機能で作成した表情ファイルは
秒数のコントロールや、自分で作ったモーションファイルで再生が移行するときに
どのパラメータが反応するか読みにくいので使ってません。
(顔の比率が人間じゃない奴とかいっぱい作ってるので)
使いこなせる方はじゃんじゃん使えばいいと思います!!!


●後からモーションを追加するときは
モーショングループの中での上下の順が変わらないように!!
ゲームのライブ2Dプラグインにもっていくと
モーショングループ名=2 呼び出しとかで
スクリプトを入れていきます。
あとから動きを追加したくなることが、あると思います。
そのときに、モーショングループ内で順番がかわると
スクリプトを組んだシナリオファイルの修正がえらいこっちゃになるので
追加モーションは新しいモーショングループ名にするか
既にあるモーショングループのモーションの下に追加されるように
モデル名.model3.jsonファイルを作りましょう!!重要です!!

まとめ

ライブ2Dモデラーでの設定
●フェードイン、フェードアウトパラメータを作っておく
●口の開閉のみのリップシンクを入れておく。
●リピートパラメータは使えない
●mocファイル、モデルの書き出しバージョンのチェック!


ライブ2Dアニメーターでの設定
●アイドリングモーションは5秒より長いものにする
●その他のモーションは大体3秒くらいで作っている
●リセットモーション必須
●静止のアイドリングモーションを作っておく
●モーションファイル名はわかりやすく
●モーションファイルはmotionsというフォルダにまとめる

ライブ2Dビューアーでの設定
●アイドリングモーションは1つのグループに1つにする
●モーショングループ名は頭文字大文字、短くわかりやすく
●expressionは使わない。
●シナリオスクリプト作成中や作成後から
モーションを追加するときは新しいモーショングループ名を付ける

↓ビューアーでの設定の仕方詳しく加筆しました。(2024/2/25)

ビューアーでのモーションファイルとの紐づけ方



ライブ2Dモデルセットが完成したら
ゲームに入れて動作確認をしようー
動作確認してからパラメータの微修正いることよくあるので。
(モーションの移行で粗がでることがある)

あくまでも私個人のやりかたです。(2023/11/12現在)
ではでは。