Skip to content

v1.1.19 インポート時の未使用マテリアル非作成・削除機能について #73

@MasamiYitsuse

Description

@MasamiYitsuse

Ver.1.1.19から、SS6Playerモードのデータインポート時に
「データ中で使用していないマテリアルを作成しない」
「データ中で使用していない既存マテリアルの削除」
の機能が付きました。
※その他のVer.1.1.9(b)からVer.1.1.19への更新詳細については、 #53 をご参照ください。

本項目について(2019年7/1段階で)ドキュメントがおいついていないため、使用法・注意点などを解説いたします。


Unity上でのSS6Player for Unity(以下SS6PU)のインポータで
[Options: Basic]の中に

  • No-Create unreferenced Materials

という項目が増えています。
これは「参照されていないマテリアルを作成しない」機能で、下記の分別種類が選択可能です。

  • None (Create all)
    使用していないマテリアルも全て生成します(Ver.1.1.9以前までの挙動と同じです)。
  • Check only Blending
    全アニメーションのパーツのブレンド種別をチェックして、参照されていないブレンド種別のマテリアルを生成しません。
  • Check Blending and CellMaps
    全アニメーションのパーツのブレンド種別と使用されているセルマップをチェックした上で、参照されていないマテリアルを作成しません。

※マスキングの有無で分かれているマテリアルについては、どちらかの状態で使用されているものについては(マスキングの有無の)両方とも作成されます。これはマスキングの有無はインポート時点よりはインスタンス/エフェクト再生やマスク優先度などのランタイムでの使用状況で決定される要素が強いので(データ状況では誤判定を行う確率が非常に高いため)、再生事故防止のために意図的に選別から外しております。


「No-Create unreferenced Materials」を「Check only Blending」「Check Blending and CellMaps」のどちらかに設定すると、下に

  • Delete unreferenced Materials

というチェックが出現します。
これは、チェックすると「参照していない既存のマテリアルを削除」します。
上書きインストール時などに既存マテリアルで未参照のものを自動削除する際に使用します。
非チェックの場合、上書きインストール時の時などに「上書き対象であるものの未参照であるマテリアル」は、そのまま(更新などもされずに)残存します。
チェックしている場合、対象のマテリアルが削除されます。


上記の2機能については、その機能面から使用に際して注意が必要です。
特にランタイムでスクリプトなどから「マテリアル変更」「セル変更」などを行っている場合に、必要とするマテリアルが作成されていなかったり・削除されてしまっていたりすることが起こりえます。

No-Create unreferenced Materialsを「None」以外に設定した場合、アニメーション及びエフェクトデータから使用していないと判定されるマテリアルを作成しませんが……
特にDelete unreferenced Materialsをチェックした場合に既存のマテリアルも消去されるため、ランタイム側のプログラム等で必要とするマテリアルが消失する可能性があります。
※ランタイム側でマテリアル変更やセルマップ・セル変更などでの使用状況は考慮しません(できません)ので、それらなどで使用しているマテリアルなどはあらかじめ別アセットフォルダなどに退避しておくなどの処置が必要になる場合があります。
※「Check Blending and CellMaps」を指定すると、ほぼ厳密に(マスク以外の)使用状況を判定しますが、動的にマテリアルやセルマップ・セルなどを変更するような実装状況の場合、用心をとって「Check only Blending」を指定しておくと使用しているブレンド種別のセルマップは全て作成されますので、運用上安全かと思われます(現在パーツのブレンド種別変更はランタイムではマテリアルに割り当てるシェーダを変更しない限り不可能なため、ブレンド種別の使用状況についてはインポート時のデータ解析時点でほぼ100%割り出せると思われるためです)。

また、Delete unreferenced Materialsのオプションがチェックの時に削除対象になるマテリアルですが、(上記にある通り)「上書き対象となる」マテリアルになりますため、Tracking Assetsなどの設定も加味して検知されることに注意してください。
※インポート後のデータのMarterialフォルダ内とアニメーションのデータ・プレハブから参照しているマテリアル群が検知対象となりますため、インポート後フォルダと異なるフォルダに移動してあるマテリアルでも、上書きされるアニメーションデータから参照されていた場合、削除対象となる場合があります。


結論として、本機能を使用する際には、ランタイム側での実装・希望仕様状況も加味した上で行うようにしないと、意図しない結果になる場合がある……ということになります。

以前から度々ご要望をいただいていた機能であるので、皆様作成中のプロジェクトの状況に合わせて、適切な設定でご使用いただくことで、よりSS6PUが利便的に使用できるようになるかと思われます。

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions