見出し画像

【仕事/Live2D/メモ】1つのパーツを2つ以上のand条件でマスクする

Live2Dモデリングの備忘録。

あるパーツを他のパーツ上だけで表示したい時はマスクを使用するが、1つのパーツを2つ以上のパーツが同時に重なる箇所でのみ表示したい場合は少々手順が複雑になる。

まずは瞳を白目の上でだけ表示したい場合など、1:1のパターン。

瞳全体は白目からはみ出している
これを白目の範囲だけで表示したい

この場合は瞳関連のパーツに、白目でマスクをかけると解決する。

白目でマスクをかけた状態
ID【ArtMesh16】が白目

1:1のマスクならばこれでいいのだが、ここに条件となるパーツが
加わると
途端にややこしくなる。
この場合は「瞳の上でだけ表示されるパーツ」として影を用意する。

瞳の影を、瞳の上だけでマスクしたい
影を瞳でマスクした状態

単純に瞳でマスクしても、影が白目からはみ出してしまう
条件はあくまで「瞳のパーツがある範囲上のみに影を表示する」であり、白目は無視されてしまった。

では、白目と瞳の両方でマスクするとどうなるか。

瞳だけでなく、白目の範囲にも影が表示されてしまった。
ID【ArtMesh16】が白目
ID【ArtMesh14】が瞳

これはCubismEditorの内部処理では、マスクの同時指定はorで繋がってしまうことが原因。
つまり、以下の状態。

「瞳のパーツがある範囲上のみに影を表示する」
または(or)
「白目のパーツがある範囲上のみに影を表示する」

こちらの意図としては、両方の条件を満たす箇所にのみ表示して欲しい。

「瞳のパーツがある範囲上のみに影を表示する」
かつ(and)
「白目のパーツがある範囲上のみに影を表示する」

残念ながら現在のCubismEditorでは、マスクのand条件は指定できないため、設定の変更のみでは解決できない。

ただし以下のようなパーツを2つほど追加することで、正しくマスクすることができる。

瞳の形にくりぬいた四角パーツ【瞳マスク】
サイズは、瞳より大きい程度
白目の形にくりぬいた四角パーツ【白目マスク】
サイズは、白目より大きい程度

各パーツに、このマスク用パーツをマスク反転で指定する。
また、マスク用パーツは不透明度を0%に設定。
すると条件と結果は以下のようになる。

「瞳マスクのパーツがある範囲上以外に影を表示する」
または(or)
「白目マスクのパーツがある範囲上以外に影を表示する」

影が瞳の上でのみ表示された
ID【ArtMesh17】が白目マスク
ID【ArtMesh18】が瞳マスク
マスク反転にチェック

無事、理想の結果となった。
ただし瞳の移動や瞬きの動きをつける際、マスク用パーツも対応させる必要がある。

瞳と瞳マスクは同時に移動させる
白目と白目マスクの穴をグルーで接続
重みを白目100%に設定
白目の形を変えると、白目マスクも連動して変形
(まぶたの線は一時的に非表示)

欲を言えばCubismEditor側にマスク指定の自由度を上げて欲しいところだが、他の機能がばんばん強化されているのでこれくらいは手元で対応したい。
使いこなせば自由度の高くなるテクニックなので、目以外でも活用できる箇所は多いと思う。

関連パーツすべてにand条件マスクを適用
これで各パーツを自由に動かすことができる

他にand条件マスクで有用なテクニックがあれば、コメントいただけると嬉しい。

#印備忘録
#Live2D
#Live2Dモデリング
#CubismEditor
#Vtuber

この記事が気に入ったらサポートをしてみませんか?