・宴のバージョン:4.0.7
・Unityのバージョン:2022.3.21f1
・OSバージョン:Windows11
・Unityの習熟度:宴のSendMessageは使えます
要望ではなく、「解決方法に心当たりがあればご助言いただけたら嬉しい」くらいの温度感の質問です。
他の方の投稿を優先いただいて構いません……!
前提として、コンフィグに独自の「画質設定」を追加しました。
QualitySettings.SetQualityLevelで変更し、その値を宴のシステム変数にも記録しています。
宴のシステム変数での分岐などを利用して、「画質設定に応じてLive2Dのテクスチャサイズを変更」できないかと考えております。
例えば、通常画質時はLive2Dは4096×4096サイズのテクスチャを使用し、低画質時は2048×2048サイズに自動で切り替える……というイメージです。
下記のような実装方法を考えたのですが、何分素人知識なものでどれも最良とは言い難いのが現状です。
より良い解決方法にお心当たりがあれば、お知恵をお借りしたいです。
------------------------------
■現時点での実装案
①テクスチャのサイズが違うLive2Dプレハブを複数用意し、Conditonalで出し分ける
⇒懸念:下記マニュアルに「Conditionalは条件の成否にかかわらず画像を全てロードしてしまう」とあるので、サイズ違いのモデルを全部読み込んでしまって意味がないのでは……?
https://madnesslabo.net/utage/?page_id=4268#i-17 ⇒デメリット:Live2Dモデルをアップデートした時、サイズ違いのモデルも再インポート作業が必要となり、管理の手間が増える
②テクスチャ描き込みを使い、Conditonalで低画質時のみ「RenderTextureScale=0.5」にする
⇒デメリット:画質が悪くなりすぎてしまう
③プログラムから、宴のシステム変数でif分岐させてLive2Dのテクスチャを動的に変更する(これはまだ試していません)
⇒懸念1:元々設定されていたテクスチャを読み込んでLive2Dを表示→プログラムからテクスチャが変更される流れになるので、①と同じく要らないテクスチャを読み込んでしまうのでは……?
⇒懸念2:自力では「Live2Dが表示される度にプログラムが走る」ような実装になりそうなため、ロード時間増加やフレーム落ちが心配
④テクスチャ圧縮形式を変えてそもそもの容量を下げる
⇒懸念:Formatを変えて圧縮すると、グラデーションなどが潰れて汚い見た目になってしまうため採用は難しい
⇒デメリット:MaxSizeでの出し分けだと、「PCだがスペックが低い」「iOSだが最新端末のため高画質でも平気」な場合に対応できない
------------------------------
もし実用的な解決策が見つかりましたら、「画質設定」をプラグインとして配布することも検討したいと思っております。
お手数をおかけしますが、よろしくお願いいたします。