【Unity】マスターシーケンス内に複数のシーケンスを配置すると、Live2Dモデルのクリッピングの表示がおかしくなる

【Cubism SDKのバージョン】CubismSdkForUnity-4-r.6
【OS名・バージョン】Windows11
【開発使用ツール】2022.1.23f1

【不具合の状況】
・ Unityで始めるLive2Dを使った映像制作【ノンコーディング】

こちらの記事をもとに
①マスターシーケンスを1つ、その子に複数の子シーケンスを作成
②それぞれの子シーケンスごとに個別のモーションを振る舞うように設定(1→mtn_01、2→mtn_02、3→mtn_03、4→mtn_04、special1→special_01、special2→special_02)
③再生を行うとspecial1とspecial2シーケンスのときのモデルのクリッピング箇所(目玉やローブの落影など)が表示されない

のような現象がございました。こちらについて原因等心当たりございますでしょうか。ご回答ご調査よろしくお願いいたします。

gif

@Tani さん

いつも弊社製品をご愛顧くださり誠にありがとうございます。
Live2Dスタッフでございます。

こちらの現象はマスクの使用上限数を超えていることが原因だと思われます。

Cubism SDK for Unityは、デフォルトではひとつのマスク用テクスチャをすべてのモデルのプレハブで共有しています。
プレハブが表示されるとマスク用テクスチャにマスクの領域が割り当てられますが、現在のCubism SDK for Unityではそのプレハブが削除されるまで割り当てられた領域が削除されません。
そのため、表示したモデルのプレハブを非表示にし、次のプレハブを表示するというのを繰り返すと、現在表示中のモデル自体がマスクの上限数を超えていなくても、SDK上ではマスクの上限に達してしまい、表示が崩れることがあります。

おそらくお使いいただいているプロジェクトではシーケンスごとにモデルのプレハブを配置してるかと思われますが、時間経過でシーケンスが切り替わるごとに上記の現象が発生し、特定のタイミングでマスクの表示が崩れているものと思われます。

こちらの現象を解消するには以下のいずれかの手順を行います。

  1. /Assets/Live2D/Cubism/Rendering/Resources/Live2D/Cubism/ にあるGlobalMasktexture を複製し、複製をプレハブの CubismMaskControllerのMask Texture にセットする

  2. CubismMaskControllerの197行目private void OnEnable() に、
    228行目private void OnDisable() に書き換える

以上、ご確認お願いいたします。

「いいね!」 1