あまりこの用途での日本語記事情報がみつからなかったので
色々参照しつつぼくなりに捻り出した方法の覚書を共有します
長いんで敬語省きます
MOHOとかLive2Dとか以前触ったことあるけどあんま覚えてないので
ここ数年寝食共にしたblenderで色々できるならぼくはとても助かる
目標ゴール
イラストにUnityで命令通りうごいてもらう
揺れものに揺れてもらう
メリット
そもそも3Dソフトだけあってウェイト塗る力がグンバツ
立体を併用した表現もできそう
dynamicboneとかのアセット使って直感的に揺らせる
アニメーションもシェイプキーも簡単にできるしシェーダーノードも使えるし講座やノウハウが充実している思いつく限りのblenderの恩恵が享受できる
デメリット
調べ方が悪いのかなんかあんま関連記事出てこない
blenderとUnityの機能をある程度知っている前提なのでハードル高いのかもしれない
べつにLive2Dを想定しているアセットで使えるようになる方法ではないので
Facerigで動くわけでもない
じゃあLive2Dでよくねってのはほんとそう
前提
blender4.1 アドオンは今回の作業では特に使わないでできるよ
blenderやUnityの細かい説明は省略します
揺らしにはDynamicBone(有料アセット)を使うけどspringbone的挙動をするものならなんでもいいと思うよ
いるかわかりませんがぼくのフォロワーは以下の下絵と展開図画像を使ってOKです
自作発言とひどいことしなければ自由に使っていいです
下絵
展開図
plane用意
画像取り込む
Kキーでざっくざくパーツごとに切り抜く(楽しい)
後日試行錯誤した結果
ここはモディファイアの細分化適用したやつ使ってパーツ分けた方がよかった
あとから編集しやすくなる
選択してPキーで選択分離
hairとかheadとかリネームしとく
自分さえわかればいいので命名規則はないけど日本語使うとUnityでバグる恐れあるので一応半角英数で名前つける
下絵の透過の値弄って分割したパーツを重ねる
パーツの重なりがぎゃざぎゃざになるのでGキー→Yキーで奥行をちょっとずつずつずらす
動かすメッシュをざくざく刻む
物理演算使うパーツ(スカートとか髪とか)は
モディファイヤで細分化したらいいと思った
メッシュの位置が気に食わなかったらG二回おして頂点移動で位置調整すると
UVずれなくてめんどくさくなくていい
(だいぶあとの作業から遡って髪の毛周辺を加筆修正したので髪のハネが消失しています)
ボーンいれる
Humanoid準拠じゃなくていいので
ここで折れ曲がれば矛盾が少ないなってとこに気軽にボーンをいれる
連動したらうれしいとこは親子になってもらう
腰と上体と首で制御
腕はワンチャン曲げらんないかなと肘で分割
足のボーンは結局ニート
揺れもの入れるとこだけ細かくボーンいれる
髪は正中線に極太ボーンいれてサイドに細かいのいれた
絵のアウトラインのキワに骨いれると綺麗に曲がりそう
だってMOHOとかで骨いれてたのがそういう位置だった
ctrl+Pで骨とメッシュくっつけて
ウェイト塗る
ここの作業がとても気楽
さすがblender
アニメーションタブで
ボーン選択して回転とキー入力で
必要なループアニメ作る
必要に応じていくつでも作れる
今回はIdleとkubihuriの二種を制作(弱肉強食幻想郷リスペクト)
動かすとこう
シェイプキーもつくっておこ
メッシュなのでModelingタブから好き勝手に動かせる
のでシェイプキーに使うメッシュはまとめて選択してctrl+Jで結合しとくといいと思った
ひと段落したらFBXで書き出し
Unityいってからも気軽に帰ってこれるので気軽にUnityいこ
Unityに取り込む
materialつくってさっきの展開図あてこんで
それを取り込んだFBXのインスペクターから貼り付ける
hierarchyに置いたらなんか向きおかしくなったりしたけど180度回転させたら出てきた
VRCにPB実装されて以降一生死蔵してたdynamicboneをアセットストアから引っ張り出す
揺れものが存在するボーンにべたべたアタッチして
preview参照しながら数値調整
そういえば2DなのでZ方向フリーズさせとくといいのかもしれない
この時点でも再生してsceneで掴んで振り回せば動くっちゃ動く
以下蛇足
動かす為のひと手間
作ったアニメーションをFBXから取り出して
アニメーターでステートとパラメーター作ったものをFBXにアタッチする
エモートはtoggleにしたかったのでBool
Blinkは一瞬ONにするだけなのでtriggerにした
ベースレイヤー
IdleとEmoteにそれぞれのループアニメいれて
トランジションでEmoteとつないでパラメーターのオンオフで遷移させる
Blinkレイヤー
(どのポーズの時でもまばたきオーバーライドさせたいのでレイヤわけた)
(animatorのレイヤーでは下に表記されているレイヤーほど優先度が高いとVRCで学んだ)
entryからは空のステートにつないでdefault状態ではなんの感情もない状態にしといて
AnyStateからトランジションひっぱってBlinkのtrigger入力を受け取ったときだけまばたきするようにした
動くけどこれが最適かは ごめんわかんない
スクリプトで遷移パラメーター送信するやーつ作る
独学なので依然ふわふわしてるけど
Scriptの中で使うオブジェクトを最初に宣言して
箱にそれぞれ固有機能つけてって
それをStartやUpdateの箱から呼び出し方を指示すると動くって雑な理解をしてる
動くので多分あってる 筈
このスクリプトは
ボタンを押すとanimatorにエモートの状態を切り替える指示と
指定秒数ごとにまばたきする指示を送る
これを空のゲームオブジェクトにアタッチして
インスペクターからさっきのanimator保有FBXと
Canvasでボタン作って指定する
動かすとこう
動いたね
これを応用すると絵の任意の場所をClickすると揺れものを起動できるようになるんですね
以下その実装例
生意気そうな猫耳盗賊娘のケツを一生ひっぱたける俺だけ幸せになれる電子ドラッグ
このゲームはなんかレギュ的にどこに上げたらいいのかいまいちわかんないので
調整終わったら各種支援サイトで配布しようかなと思います
Unityroomっておしりアップロードしていいのかわかんない