★お知らせ(2023/12/27)
いつもLive2D公式コミュニティをご利用いただき誠にありがとうございます。
本コミュニティは2023年12月27日 11:00をもって閉鎖いたしました。
今後の運営はすべて新Live2D公式クリエイターズフォーラムに移行します。
閉鎖に伴い、以下機能は利用不可となります。
・アカウントの新規作成
・トピック投稿、返信
たくさんのご利用誠にありがとうございました。

新Live2D公式クリエイターズフォーラムは以下バナーよりご利用いただけます。
Live2D公式クリエイターズフォーラム

なお、本コミュニティに投稿されたトピックはすべて残りますが、今後削除する可能性がございますので予めご了承ください。
閉鎖に関するお問い合わせにつきましてはLive2D公式クリエイターズフォーラムへご連絡ください。

Live2Dモデルの軽量化について

編集済: 8月 2021 Cubism 4 Editor
失礼します。

現在、ゲームに使用するLive2Dモデルを作成中なのですが
SDKを使用してゲーム(RPGツクールMV)に組み込んだところ、非常にモデルの動作が重くなってしまいました。
そこで、軽量化するためにモデルの改良をしたいのですが
具体的に何処をどのようにすればモデルの動作が軽くなるのでしょうか?

一応こちらが
モデルの統計情報になります。

============================
< 共通データ >>
 パーツ数  : 3

<< デフォーマデータ >>
 ワープデフォーマの数 : 285
 回転デフォーマの数 : 47
 デフォーマの補間数     : 3202

 描画要素を1つだけ持つデフォーマの数   : 48
 デフォーマを1つだけ持つデフォーマの数  : 139
 中身のないデフォーマの数  : 1

<< アートメッシュ関連 >>
 アートメッシュの数 : 488
 アートメッシュの補間数 : 1784
 頂点の数 : 21407
 ポリゴン(三角形)の数   : 31889
 アートパスの数:0
 アートパスのコントロールポイントの数:0

<< クリッピングマスク関連 >>
 クリッピング使用数:32
 マスクIDの順列の種類:19
 moc3出力で問題のあるマスクとするオブジェクト数:20
============================


・テクスチャ
 テクスチャ関連でモデルを軽くするには、
 テクスチャの枚数を減らしてテクスチャサイズを大きくするのか
 それとも、テクスチャのサイズを小さくして枚数を多くするのか
 どちらの方が良いのでしょうか?
 例えば、4096×4096のテクスチャ1枚と
 2048×2048のテクスチャ4枚、
 もしくは4096×2048のテクスチャ2枚であれば
 どのパターンが一番動作が軽くなるのでしょうか?
 それとも、どれも大差はないのでしょうか?

・ワープデフォーマやアートメッシュ、ポリゴン数等
 このあたりの数を減らすと軽くなるのでしょうか?
 それとも、あまり影響はないのでしょうか?

・クリッピング使用数
 36か所を超えないように32か所で調整しましたが
 これでもまだ多く、
 もう少しクリッピングの数を減らすことで動作は軽くなるのでしょうか?
 それとも、大差はないのでしょうか?

・パラメータ数
 デフォルトのパラメータと合わせて
 80ぐらいのパラメータがあるのですが
 これも重さに影響するのでしょうか?
 1つのデフォーマには最大3つまでしかパラメータは関連付けていません。

・クリッピングでのエラー
 ワープデフォーマの中にあるクリッピングマスク用のパーツに対して
 「キーフォームが満たされていません」とのエラーが出ますが
 パラメータのキーはワープデフォーマ側で設定しており
 解決法がわからないため放置しています。
 エディタやゲーム上の表示に問題はありませんが
 これによって動作が重くなることがあるのでしょうか?

・pixcelsPerUnit
 書き出し設定にあるものの
 いまいち、ツクールMVにおいてどんな意味を持つのかわからないのですが
 5にしても1にしても、特に変化は見られませんでした。
 この部分でも重さに影響があるのでしょうか?

・キャンバスサイズ
 1000×1838ですが
 画質を保つためにこのぐらいの大きさは欲しいのですが
 大きすぎるのでしょうか?


この他にも
動作を重くする要因があるでしょうか?
ご教授いただけると助かります。
 

コメント

  • 冬空橙さん

    初めましてこんにちは、アカウントを削除してから返信は控えておりましたが、ゲーム制作かつすごくお困りのようでしたので
    返信させていただきます 簡潔に質問内容だけ

    ・テクスチャ
    読み込む面積で比例しますが、枚数が多くなるとその分呼び出す回数が増えるので処理が重くなります
    結局、読み込む面積は同じなので、そこはユーザー側のメモリに依存して重くなる時は重くなるって感じです
    また、3Dツールと同じで基本テクスチャは正方形で1回読み込みます、長方形で設定するとその分2回読むことになります
    なので、
    4096×4096 テクスチャ1枚 読み込み1回 が軽く
    4096×2048のテクスチャ2枚 読み込み4回 2048×2048のテクスチャ4枚、読み込み4回 同一になるかと
    ゲームでオンラインの場合、テクスチャが通信障害で読まないってこともあるので、複数枚にする場合、常時表示する必要なものは
    最初のテクスチャ、エフェクトなどさほど出ない場合は次のテクスチャにすると事故が少ないです
    それからゲーム画面サイズにもよりますが、2048x2048を設定しでテクスチャアトラスの拡大率を顔80%、そのほかのパーツ20~50%、エフェクトなど10~20%にして1枚に収めると明らかに軽く、輪郭が良さげな感じでぼやけて妙に輪郭がソリッドなモデルになりずらいと思いますのでそちらもご考慮ください

    ・ワープデフォーマやアートメッシュ、ポリゴン数等
    減らすともちろん処理は軽くなります、一番面倒なのは親ワープデフォーマーから子デフォーマはみ出る時ですね
    こちらは計算処理が2割から3割ほど重くなると公式さんがおっしゃってました
    また、髪の毛に隠れてしまう、頭頂部、体の中心などさほど動かさない場所は大胆にポリゴンを割っても全然かまいません
    細かくなればなるほど重くなりますので、安易にポリゴン割を自動で行ってそのままにしておくとまずい事が多いです
    また、表示されないのが確定な場所は、アートメッシュのポリゴンを削っても問題ありません、ポリゴンを打ち直すと復活します

    ・クリッピング
    クリッピングは想定より重くなります、またゲームのツールによっては正しく表示されない事もしばしばあるので、極力さけるか
    使ってもあまり多数、使わないようにしたほうがいいと思います

    ・パラメータ数
    特に問題は無いと思います、ただ多くし過ぎるとアニメーション作るのがちょっと手間になるかなって感じですかね?

    ・クリッピングでのエラー
    「キーフォームが満たされていません」のエラーはエラー表示のパーツ、デフォーマに関係しているパラメーターのどこかに
    上限と下限が空白の時に表示されます、一見変な所が無い場合でも0.9999....と近似値を設定している事があるので
    いちど調査してみてください、パラメーター設定するときに、右クリックの吸着を使わずに、ドラックで選択しているとよく起きます(live2dcubismはカーソルが暴れることが多いので…)
    たしかエラーをそのままにしておくとマスクが正常に機能せずパーツが表示されなかったような覚えが

    ・pixcelsPerUnit
    unityとかシーンカメラがあるときに必要になる値のようです、なのでツクールMVには必要ないかと思われます
    参考リンク→https://pengoya.net/unity/pixelsperunit/ https://docs.live2d.com/cubism-sdk-manual/drawablevertexposition-checking/?locale=ja

    ・キャンバスサイズ
    現在自分の作業環境では5000x10000程度で絵を描いているので今のままで問題ないと思います
    結局テクスチャアトラスで調整してしまうので出力データーにはあまり影響はないかと、
    印刷もしないので、72dpiのままで大丈夫です

    以上です
    取り急ぎ失礼いたします
  • 編集済: 8月 2021
    なべまる様


    丁寧なご解説、ありがとうございます。
    自分で調べても閑散とした情報が多く
    なかなか総合的なパフォーマンスに対する知見が見つからなかったので
    とても助かります。

    モデルの軽量化の優先順位としては

    テクスチャ>クリッピング数>デフォーマ・メッシュ・ポリゴン数

    といったところでしょうか?

    ゲームの仕様上、色々な制限があり中々難しいですが
    ご助言に従って
    モデルの改良を進めていきたいと思います。


    重ねてお礼を申し上げます。
  • 編集済: 8月 2021
    ・テクスチャ>クリッピング数>デフォーマ・メッシュ・ポリゴン数

    コチラですが、RPGツクールがどういった処理を行っているかわからないのですが、

    テクスチャがでかい→読み込むまで時間がかかるが、一回読み込むと動きが重たくならない ただしメモリの許容量を超えてしまうと最初から最後まで重い、最悪、非表示のままモデル(もしくはゲーム本体)が落ちる

    クリッピング→表示している数が多いと重くなる その状況ではアイドルでもおそらく重い

    デフォーマ・メッシュ・ポリゴン→アイドルではそうでもないが、モーションによっては重くなる(アイドルが激しい動きを想定していると別) おそらく遅くなるけどメモリオーバーで落ちることはないかも

    RPGツクールはモデルを表示、非表示で毎回リソースを開放しているとおもうので、設定で回避できるなら良く使うモデルのリソースを開放しないようにする工夫が出てくると思います

    質問内容を振り返ってみると、表示はされて挙動が重いらしいので、クリッピング→デフォーマ・メッシュ・ポリゴンで見直しをされてみてはどうでしょうか?

    念のため参考までに
  • なべまる様


    ご返事、ありがとうございます。

    テクスチャは読み込みさえできてしまえば
    後はそれほど影響はないのですね。
    β版公開時に、モデルが読み込めずにエラーが出る方が結構いた際に
    テクスチャを小さくすると改善が見込めたので
    テクスチャ関係が一番の問題かと考えていました。
    クリッピングの数を減らすのはなかなか大変そうですが
    出来る限り頑張ってみようと思います。

    アドバイス、ありがとうございました。
  • 編集済: 8月 2021
    冬空橙さん

    そうですね、ユーザー環境で読み込めずにエラーってのはやはりテクスチャが大きすぎるってのが原因ですね
    私が携わってきた案件では、1920×1080のブラウザゲー、今のスマフォ標準にて
    テクスチャサイズ1024x1024~2048x2048を縮小して1500x1500程度1枚って感じでやっていたので、4096x4096は相当でかいと認識してもらって大丈夫です

    やはりテクスチャのメモリ占有が減るといろいろ軽くなるのは事実なので、もしクリッピング修正が難しい場合は
    テクスチャの大きさをまず落としてください!(テクスチャアトラスの並べなおしが発生しますが多分、それが一番手っ取り早く、簡単です)

    それから、テクスチャアトラスを並べる場合、角度をいろいろ変えて並べていると思うのですが、極力 0度90度180度270度を守り、最悪でも45度の法則を守ると原画が劣化しずらいです
    出力した時のPNGを直で見てもらえれば劣化具合がわかります、こちらもご参考までに

    それから、RPGツクールで再現できるかわからないのですが、エフェクトなどあまり重要でない物(動かない武器とか)を別のモデルにして出力し、同じ場所に重ねるのもありです、デフォマー構成が同じでパラメーターが同じであれば動きは一緒になるので…(良くムービーとかカットインで使われる手法です)

    以上です、素晴らしい作品を期待しております
  • 軽量化についての一つヒントができましたので報告させてください

    https://forum.live2d.com/discussion/comment/6733#Comment_6733

    https://docs.live2d.com/cubism-editor-manual/performance/

    テクスチャを複数枚使用するときはアートメッシュの順番が重要なようで、これ以上モデルの簡略化できないといった時の
    一つの解決法としてお使い下さいませ
コメントするにはサインインまたは登録して下さい。