SpriteStudio / SS6PlayerForUnity

OPTPiX SpriteStudio 6 Player for Unity http://www.webtech.co.jp/spritestudio/
MIT License
21 stars 8 forks source link

v1.0.26 テクスチャにレンダリングするとパーツの継ぎ目が黒ずむ場合がある #37

Open MasamiYitsuse opened 6 years ago

MasamiYitsuse commented 6 years ago

フレームバッファに直接レンダリングせず、テクスチャにレンダリングした場合に、元データのテクスチャの状況によってはパーツの継ぎ目が黒ずんでしまう場合があります。

Ver1.0.26以降でこれを解消する場合、テクスチャにレンダリングするアニメーションオブジェクトに対して下記の手順を行うようにしてください。

※下記の手順の最初にも書かれていますが、できる限り設定を変更するマテリアルは、大元のマテリアル(Assets/SpriteStudio6/Material/*)を直接変更しないようにしてください(元の環境に戻さなくてはならない場合に非常に苦労することになります)。 SS6PUモードでは、インポートしたデータのマテリアル(インポートしたフォルダのMaterialフォルダの中)は、大元のデータ(インポータ設定のAdvanced Options>Preset Materialに定義されているマテリアル……以降「インポータ設定マテリアル」)の複製になります。 UnityNativeモードでは、初期状態では、インポータ設定マテリアルで指定されている大元のマテリアルを直接使用しています。


インポート後のデータを直接変更する場合

※紹介はしていますが非推奨です。できるだけ2か3の方法を採るようにしてください。非推奨の理由としては、今後のバージョンアップなどでデータすべてを再インポートなどする時に手間がかかる可能性があるためです(一応インポート前のマテリアルの設定は維持するようにはなってはいますが……ヒューマンエラーを減らすためにも、アプリケーションにインポートすることが決定したデータは、できるだけバッチインポートリストなどで管理した方が、後の再インポートなどが楽になります)。

  1. インポートしたデータのアセットフォルダ内「Material」の下にインポートしたデータで使用するマテリアルが格納されています。
  2. 「~_MIX」「~_ADD」「~_SUB」のマテリアルを選択し、
    • 「Output PreMultiplied Alpha」をチェックします。
    • 「Blend Source」を「One」に変更します。

インポートするデータ全てに適用する場合

  1. 「Assets/SpriteStudio6/Material/」の下にあるマテリアル群を、プロジェクトのフォルダ内に複製します。
  2. 複製したマテリアル群の「~_MIX」「~_ADD」「~_SUB」のマテリアルを選択し、
    • 「Output PreMultiplied Alpha」をチェックします。
    • 「Blend Source」を「One」に変更します。
  3. インポータの「Advanced Oprions > Preset Materials」の各項目に、複製したマテリアルを割り当てます。

バッチインポータのリストで設定する場合

  1. 「Assets/SpriteStudio6/Material/」の下にあるマテリアル群を、プロジェクトのフォルダ内に複製します。
  2. 複製したマテリアル群の「~_MIX」「~_ADD」「~_SUB」のマテリアルを選択し、
    • 「Output PreMultiplied Alpha」をチェックします。
    • 「Blend Source」を「One」に変更します。
  3. インポータの「Advanced Oprions > Preset Materials」の各項目に、複製したマテリアルを割り当てて、その設定をファイルに保存します。
  4. バッチインポータのリスト(の当該データのインポートの前)に保存した設定を読み込むように記載します。

上記処置で通常時と何が変わるかの具体的な内容についてですが…… マテリアルの「Output PreMultiplied Alpha」をチェックすることによって、シェーダが出力するピクセル色が「乗算済アルファ」の色成分になります(計算としては、ピクセルのRGBの値に、Aを乗算した値になります)。

それとともに乗算済アルファの場合、すでに色成分にAが加味されている形となりますので、ブレンド時の合成式で描画ピクセルのアルファを使用している場合、それを加味しないように変更する必要があります。


Ver.1.0.23以前は、本機能は対応しておりませんので、Ver.1.0.26以降に更新するか・Ver.1.0.23以前用のシェーダを直接書き変える必要があります。


本件については、念のため、 #36 も参照して下さいますようお願い致します。

MasamiYitsuse commented 5 years ago

[補足] Ver.1.1.0以降でインポートしたSS6Playerモードのデータは、上記の再設定を行う必要はありません。 ※Ver.1.1.0以降では上記の設定を標準状態に変更しました。