投稿記事

技術情報の記事 (1)

なめジョン / excessm 2020/07/01 00:00

進捗番外編 Live2Dモデルの任意箇所の色をunity内で変える

進捗報告・番外編です。
今回はちょっと技術的なノウハウの
ようなものを書き記します。


よく出てくる用語
Live2D:アニメを作成するソフト(L2Dとも表記)
Unity:ゲームのシステムを開発するソフト


アニメ作成ツール「Live2D」はunity内で取り込めるように
ファイルを出力することができます。

unity側でプログラムを入力すると、こうなった時に
このアニメを再生する、とかアニメの再生速度を早くしたり
遅くしたり…などLive2Dで作ったキャラのアニメに多彩な表現を
させることが可能です

ここでunity側で特定のパーツの色を変えられないだろうか、と
考え始めました




unityでL2Dのモデルを表示するにあたって、パーツを並べた画像
「テクスチャアトラス」が必要になるのですが…


たとえばこれは本作「廻るハゴコロ」における
ザコ敵のテクスチャアトラスです。

現状、褐色肌のパーツなどは透明度をいじることで表現しているため
単純に2倍パーツを並べる形になっています。



これをもしノーマルの肌パーツの色を変える処理をunity側でやれれば
テクスチャアトラスのスペースに余裕ができ、同じ負担でより高画質で
描画ができるようになります
(テクスチャアトラスはパーツごとに拡大縮小が可能で、小さくすると
 スペースには楽に収まるけど画質が荒くなる)

というわけで
・髪パーツ
・服の一部
・肌パーツ

それぞれの色変更をunityでできるようにしたい!というのを目標に
色々探すことにしました

unityにL2Dのモデルをインポートできるようにするやり方自体は
Live2Dの公式マニュアルさんが丁寧に説明してくださっているため
そちらをご参考ください。


【Live2D側でやったこと】
L2Dはモデルエディタにおいてパーツごとにユーザデータ
というものを設定できます。
 これを記入しておくとunity側で読み取ることができ、
これが書かれていたらこの処理、あれが書かれていたらあの処理…と
モデルエディタとシステム開発の間で直感的にデータのやり取りができます

考えとしては
・ユーザデータ欄に髪系のパーツには「Hair」等と記入
・Unity側でモデルを表示させる際にパーツを確認し、「Hair」データが
 含まれるパーツがあった場合は任意の色に変更

ということになります


とりあえずLive2D側で髪には「Hair」肌には「Hada」
その他色を変えたい箇所に「Parts1」
などとユーザデータを書いていきます。
(ここの名前は何でもいいです 自分で分かりやすい名前で)

1つのスクリプトでうまいことやりたいのでこのユーザデータの
名前は全キャラで統一したほうが多分楽です

L2D側の設定はひとまずこれで…unity用にモデルを出力します。
(方法不明の方はこれも公式マニュアルをご参照ください)


【Unity側でやったこと】
L2D公式マニュアルに
任意のモデルのパーツ情報をさらっと読み込み、ユーザーデータを取得する
方法が書いてあったので、それを参考にこんなスクリプトを記述

UserDatatest.cs (933.00B)

ダウンロード

読み取ったパーツをゲームオブジェクトとして取っておいて、
そこからLive2D特有の要素「CubismRenderer」の情報を取得して
パーツの色を変える…という感じです

↑の「UserDatatest.cs」は最小限の記述にしていますが、
ランダムで色を変化させたり、肌用やその他パーツ用のカラー変数も
別に準備するなどしてより実戦的にしていきます。

この処理を敵が出現した瞬間、つまりモデルを表示させる時に一度だけ
実行する形になります。

UserDatatest.csに肌の色などを設定する記述を書き足して、
何らかのゲームオブジェクトにアタッチします。


うちのプロジェクトだとそういうのをまとめたオブジェクトが
あるのでそこに追加

このUserDatatest.cs内で作ったpublic void Colorset()が敵出現時に
呼び出されるようにすると…


!?

…褐色を黒くしすぎてしかも緑オーラが
出ているため恐くなってしまいました
しかし「Hada」のユーザデータがついているパーツだけを
変色させる処理はできています。


色を調整して褐色っぽくしました。
unity側で数値をいじって手軽に調節できるのもいい点です



同じ髪型・同じ顔タイプでも印象は割と変わります。
これでザコの見た目にさらに幅が出るようになりました。
服の色なんかはあまりバラバラすぎると戦闘員っぽさは
薄れるのでバランスはうまいことしたいところです



本来見た目が単一であるボスタイプもこの手法で
カラーバリエーションが作れるかもしれません。

この手法は透明度も指定できるのでボス特有の装飾品を透明にして
消して量産型ボス…みたいなこともできるかもしれません。


以上になります。いざ実装できるとこんなやり方でいいの?
というくらいあっさりしていますができるようになるまで結構悩んだので
書いておきます。同じようなことで行き詰まった方の参考になれば
という感じです。

※ここで書いた方法は本ゲーム向けの手法であり、
こうやったらできた!という感じのものなので、もっといい方法があったら
ぜひご教示いただければと思います。
また、問題点などが発生した場合追記します

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

限定特典から探す

記事を検索