クリッピングマスク
最終更新: 2022年11月29日
クリッピングマスクはまばたきの動作などによく用いられます。
ここではクリッピングマスクの手順について解説します。
クリッピングマスクの手順
マスクにするアートメッシュのIDを指定することで、クリッピングマスクを使用することができるようになります。
ここでは、白目のアートメッシュで黒目部分のアートメッシュに対してクリッピングマスクを適用するまでの手順を紹介します。
まずはマスクにするアートメッシュ(白目の部分)を選択し、コピーします。
クリッピングするアートメッシュ(黒目の部分)を選択し、[インスペクタ]パレットの[クリッピング]の欄にペーストします。
[クリッピング]にマスクにするアートメッシュのID(ArtMesh36)がペーストされ、黒目の部分がクリッピングされます。
下記の手順でも同様にクリッピングマスクを適用することができます。
- マスクにするアートメッシュを選択し、[インスペクタ]パレットで[ID]のテキストをコピーします。
- クリッピングするアートメッシュを選択し、[インスペクタ]パレットの[クリッピング]にペーストします。
TIPS
コンマで区切ることで複数のアートメッシュを指定できます。(例:ArtMesh1, ArtMesh2…)
POINT
SDK以外の動画作品などで使用される場合、クリッピングマスクは多用しても問題ありません。
パーツツリーからオブジェクトを追加・削除
下図の赤枠のボタンからもクリッピングマスクを適用することができます。
- 下図の赤枠のボタンをクリックします。
- マスクにするアートメッシュにチェックを入れます。
クリッピングの関係からオブジェクトを選択する
クリッピングマスクを選択
対象のオブジェクトを選択して[クリッピング]右端の的マークのボタンをクリックすると、クリッピングマスクに使用しているオブジェクトを選択できます。
また、[モデリング]メニュー→[クリッピング]→[クリッピングマスクを選択]からも実行できます。
クリッピングを逆引き
[モデリング]メニュー→[クリッピング]→[クリッピングを逆引き]から、選択しているオブジェクトをクリッピングマスクとして使用しているオブジェクトを逆引きして選択できます。
例として、サンプルモデル『虹色まお』では左白目を選択して[クリッピングを逆引き]をクリックすると、左白目をクリッピングマスクとして使用している以下のオブジェクトが選択されます。
・左きらきら
・左ハイライト(1,2,3)
・左目玉
SDK使用時のクリッピング注意点
ゲーム開発などを目的とし、SDKへの組み込みを想定している場合は、必ず下記の注意点をご確認ください。
- クリッピング上限
-
Cubism 3 SDK以降のクリッピング描画方式では、クリッピングに指定しているIDの順列の種類が一定数を超えると表示が乱れるなど不具合が出る可能性があります。
実際の特性はプログラムの実装に依存するため、実機で表示を確認してください。詳しい原理に関してはSDKマニュアルの「マスクの前処理方式」を確認してください。
- 負荷・パフォーマンスの低下
- 環境によってはクリッピングによる負荷が大きくなることがあります。
利用は必要最低限に留めることをお勧めします。 - 表現の違い
- 環境、表示サイズなどによって、表現・見た目に違いが出ることがあります。
厳密な表現が求められる場合は事前に実機でご確認ください。
TIPS
各プラットホームSDKで標準のマスクの特性は以下のようになります。
プラットホーム名 | マスクの上限数 | 用意されるマスクの範囲 | 用意されるマスクのサイズ |
---|---|---|---|
Cubism SDK for Native | 36/モデル ※1 | クリッピングされるすべてのアートメッシュの入る矩形 | 数に応じて可変 |
Cubism SDK for Web | 36/モデル | クリッピングされるすべてのアートメッシュの入る矩形 | 数に応じて可変 |
Cubism SDK for Unity | 64/シーン | マスクするすべてのアートメッシュの入る矩形 ※2 | 固定 |
※1
Cubism SDK for NativeではCubismRenderer::_useHighPrecisionMaskをtrueに変更することで描画ごとにマスクを生成するようになます。
これにより、マスク数の上限がなくなり、マスクのクオリティは常に最大で描画されるようになります。
※2
Cubism SDK for Unityでは他のfor Native, for Webとマスクの用意する範囲が異なります。
詳しくは「各Cubism SDKの比較」のマスク特性の項目を確認してください。
マスクの白フチについて
Cubism EditorやCubism SDKでクリッピングマスクを設定したモデルを表示すると、アウトラインにフチが見えることがあります。
これは、マスクのアウトラインにある半透明部分によって、下にあるアートメッシュの色が透けて見えていることが原因です。
Cubismのクリッピングマスクは以下2つによって表現されおり、それぞれ別のアートメッシュとして存在しています。
- マスク用のアートメッシュ
- マスクによって切り取られるクリッピング用のアートメッシュ
マスクのアウトラインにある半透明部分は、切り取られるアートメッシュにその不透明度が適用されます。
もし、マスク用のアートメッシュが表示状態であれば、切り取られたアウトラインの半透明部分からマスク用アートメッシュの半透明部分の色が見えてしまいます。
マスクの形状が複雑でなければ、以下の手順でモデルを修正することで回避可能です。
- マスク用のアートメッシュを複製する
- 指定しているマスク用のアートメッシュを、複製元のアートメッシュから複製したアートメッシュに変更する
- 複製したアートメッシュを、複製元のアウトラインが隠れるように拡大させる
- このアートメッシュの不透明度を0%に設定
- 複製元と同じ変形をする
マスクの数の確認
エディタ上でのマスクの数の確認
Cubism Editorでは統計情報でモデルに含まれるクリッピングの数、マスクの順列の種類を確認できます。
SDKで認識されるマスクの数え方
SDKで認識されるマスクの数はIDの順列によって識別されます。
例を示すと以下のような数え方になります。
マスクIDの表示 | 認識される枚数 |
---|---|
ArtMesh1 ArtMesh1 ArtMesh2 | 2枚 |
ArtMesh1 , ArtMesh2 ArtMesh1 ArtMesh1 , ArtMesh2 ArtMesh2 | 3枚 |
ArtMesh1 , ArtMesh2, ArtMesh3 ArtMesh1 , ArtMesh2, ArtMesh3 ArtMesh1 , ArtMesh2, ArtMesh3 ArtMesh1 , ArtMesh2, ArtMesh3 | 1枚 |
組み合わせが同じで順番が異なる場合、for Native, for Webでは同一のマスクとして認識されますがfor Unityでは異なるマスクとして認識されます。
マスクIDの表示 | for Native, for Webでの認識数 | for Unityでの認識数 |
---|---|---|
ArtMesh1,ArtMesh2 ArtMesh2,ArtMesh1 ArtMesh1,ArtMesh2 ArtMesh2,ArtMesh1 | 1枚 | 2枚 |
Cubism Viewer (for OW)での確認
Cubism Viewer (for OW)でも統計情報でマスクIDの順列の数を確認することができます。
マスクに関する警告について
クリッピングマスクに使用されるマスクが不正な状態にあると警告が出ます。
警告発生時の注意点
「マスクに関する警告」が発生した状態で組み込み用ファイルを出力し、それをSDKを使ったアプリケーションで読み込んでしまうと以下のような問題が発生する可能性があります。
発生する問題:
- 強制終了する
- 組み込み用ファイルを読み込めない
- SDKとEditor上の表示が異なる
以上の問題を回避するため、「編集上一時的に許容されるが、出力時には好ましくない」状態に対して警告が出ます。
Animator上では問題ないように見えますが、今後のアップデートの影響で表示内容が変化する可能性があるため、修正をお勧めしています。
警告発生時の状況について
「マスクに関する警告」が発生する状況は、大きく分けて2つの種類があります。
- キーロスト:
- マスクになるアートメッシュが、パラメータのキーフォーム外に存在しているため見えない状態。
アプリケーションの実装状況によっては表示が大きく異なる可能性があります。 - 非表示・下絵に設定されたアートメッシュ:
- 非表示や下絵に設定されたアートメッシュは、組み込み用ファイルを出力する際に標準の設定で出力されません。
このため、そのままSDKで読み込みを行うとマスクのアートメッシュは不正な値を指示した状態になり、強制終了などの問題が
発生する可能性があります。 - マスクが削除済み:
- マスクになるアートメッシュが削除済みで、クリッピングのアートメッシュのインスペクタのクリッピング欄が「null」になっている状態。
ケース別のモデル修正方法
- 1.透明なアートメッシュを、マスクとして参照したい場合
- マスクに設定したアートメッシュの不透明度を0%にして対応してください。
アートメッシュにすでにキーフォームが打たれていて不透明度の操作が難しい場合は、「マルチキー編集」を使用したり、デフォーマをアートメッシュの親に設定し不透明度だけを一括で操作する方法もあります。
- 2.非表示パーツの中に存在するアートメッシュを、マスクとして参照したい場合
- Cubism Editor 3.2.05以降では、すべてのマスクが非表示状態になった際に、クリッピングマスク自体が解除されるようになりました。
非表示パーツ内のアートメッシュをマスクに設定している場合、クリッピングマスクが解除された見た目になってしまいます。
編集がしにくい場合は、マスクに設定されたアートメッシュを一時的に表示パーツへ移動させて対応してください。
TIPS
非表示状態になるマスクが存在すると、前述した警告や、moc3書き出し時にエラーが表示されます。
組み込み用途として使用する場合、非表示のままmoc3を書き出してしまうと、意図しない表示になる場合があるため、パーツを表示状態にするのを忘れないよう注意してください。
- 3.腕の切り替えなどで、補間せず消えるアートメッシュをマスクとして参照したい場合
-
キーフォームの範囲外にキーが移動した際に、アートメッシュの表示が消える効果をそのままに使用したいケースです。
Cubism Editor 3.2.05以降では、すべてのマスクが非表示状態になったり、マスクに設定しているオブジェクトがキーフォームの範囲外で非表示状態になる場合、クリッピングマスク自体が解除されてしまいます。
回避策として、空のアートメッシュを作成しておき、常に表示状態のマスクとして使用します。
空のアートメッシュは「当たり判定用アートメッシュ」を利用しましょう。作成した空のアートメッシュを「表示を消したいマスク」と一緒にマスクとして設定しておくことで、常に表示状態のマスクが存在することになります。
これにより、クリッピングマスク自体は解除されず、キーフォームの範囲外の表示を消す効果を使用できるようになります。※この場合、空のアートメッシュにはキーを打つ必要はありません。位置やサイズも影響はない為、自由に設定してください。
※非表示状態になるマスクが存在すると、前述した警告や、moc3書き出し時にエラーが表示されます。
組み込み用途として使用する場合、実装状況によって意図しない表示になる場合があるため、開発担当者と相談の上モデルを作成することをお勧めします。
警告を非表示にする
警告の表示は「ファイル/設定/マスクの設定を常に表示する」のチェックを外すことで非表示にすることができます。
警告を無視して作成する際は、実機での表示具合を確認しながら行ってください。