kurotu / VRCQuestTools

Unity editor extension to support uploading VRChat avatars for Oculus Quest
https://kurotu.github.io/VRCQuestTools/
MIT License
218 stars 15 forks source link

TTTAtlasTextureでマテリアルの結合を行うとVQTによるシェーダーの変更が起こらなくなることがある #28

Closed c-colloid closed 2 months ago

c-colloid commented 3 months ago

Describe the bug / バグの説明

TTTAtlasTextureでマテリアルの結合先を参照設定で明示すると何故かVQTでシェーダーが変更されなくなります

参照設定をNoneにすると問題が無くなります

To Reproduce / 再現手順

1.VQT Avatar Converter Settingsをアバタールートに設定 2.アバターの子に新規オブジェクトを作りTTT Atlas Textureを設定 3.TTT Atlas Textureでアバタールートを選択し、アバター内のマテリアルをアトラス化対象に設定 4.そのほかの設定項目はスクリーンショット参照 5.結合時マテリアルの参照をアバター内のマテリアル(lilToonOutline)に設定 6.GestureManagerで確認するとアトラス化対象のマテリアルだけシェーダーがlilToonOutlineのまま (そのほかのマテリアルはToonLitになっている)

5*.結合時マテリアルの参照をNoneのまま実行するとすべてのマテリアルがToonLitへ変更されている

Expected behavior / 期待する動作

アトラス化されたマテリアルもVQTの設定どおりシェーダーが置き換わってほしい

Screenshots / スクリーンショット

image

Used assets / 使用したアセット

No response

VRCQuestTools version / VRCQuestToolsのバージョン

2.4.2

Unity version / Unityのバージョン

2022.3.22f1

Additional context / その他の情報

No response

kurotu commented 3 months ago

現象を確認しました。

NDMFでの実行順が以下のようになっており、結果として意図しないマテリアルの設定変更を引き起こしていました。

  1. Transforming Phase
    1. VQT: テクスチャとマテリアルの生成
  2. Optimizing Phase
    1. TTT: テクスチャ生成とマテリアル結合

対策として、以下の実行順に変更しようと思います。

  1. Optimizing Phase
    1. TTT: テクスチャ生成とマテリアル結合
    2. VQT: テクスチャとマテリアルの生成

当面の回避策としては以下のいずれかになると考えています。

kurotu commented 3 months ago

Ver.2.4.3 で対策しました

kurotu commented 2 months ago

変更の直後に対応が変わってしまい申し訳ないですが、次バージョンではv2.4.3での処理順変更の差し戻しを予定しています。(VRCFuryとの互換性 #31 や、TTTAtlasTexture由来の別問題の対応のため)

代わりに、Avatar Converter Settings で変換の実行フェーズを選択可能にします。

このIssueの問題への対応の際は、上記オプションで実行順を調整いただくか、前のコメントに記載の回避策で対応いただきたいです。特に最後の方法はQuest専用にAtlasTextureを調整できるため、無理に共用化するよりも柔軟に細かな設定ができるメリットがあります。

  • TTT PhaseDefinitionでAtlasTextureの実行順をTransforming Phase内に変更する
  • PC用・Android用(結合時マテリアルの参照:なし)の2つのAtlasTextureをアバター内に設定し、それぞれ必要なプラットフォームに対してのみ有効になるようVQT Platform GameObject Removerで制御する
kurotu commented 2 months ago

v2.5.0 で上記変更を行いました。