UniVRM icon indicating copy to clipboard operation
UniVRM copied to clipboard

Unity WebGLで動的にインポートしたvrmのShadeがおかしい

Open Hayashi-m opened this issue 1 year ago • 4 comments

環境情報

  • UniVRM version: 0.128.1
  • Unity version: Unity-2022.3.42
  • OS: Windows 11
  • Build: WebGL
  • RenderPipline: URP

バグについて

  • バグの内容 Unity URP WebGL環境で、UnityWebRequestを使用して VRM ファイルを読み込む Web サイトを作成しています。 しかし、読み込んだ VRM モデルの ShadeColor の表示が異常です。 画像左:読み込んだモデル(問題が発生している) 画像右:シーン上に配置しておいたモデル(正しく表示されている) ※わかりやすいようにShadeColorを赤に設定しています。 スクリーンショット 2025-01-09 170924

以下のコードを利用してVRMファイルを読み込んでいます: await Vrm10.LoadBytesAsync( webRequest.downloadHandler.data, awaitCaller: new RuntimeOnlyNoThreadAwaitCaller(), materialGenerator: new UrpVrm10MaterialDescriptorGenerator() );

補足情報 エディター上で動作させた場合、またはシーンに直接配置したモデルでは問題が発生しません。 ファイルインポート時のデータサイズは正常でした。

Hayashi-m avatar Jan 09 '25 08:01 Hayashi-m

VertexBuffer のレイアウトが WebGL は違うのかもしれない。

ousttrue avatar Jan 24 '25 17:01 ousttrue

WebGL 環境で Material のランタイムロードをしたときに、 Shader の Variant 解決が正しく動作しないことが原因のようです。

このため、WebGL 環境で URP 版 MToon をランタイムロードしたときに、

  • NormalMap が未使用でも、NormalMap を使う Variant になる
  • NormalMap に無関係なカラーテクスチャーがアサインされる

という事象が再現しました。 NormalMap 以外のテクスチャーでも発生する可能性があります(目立たないかもしれない)。

ousttrue avatar Feb 03 '25 10:02 ousttrue

v0.128.2 で Vrm10Viewer サンプルでカスタムシェーダーのサンプル実装を提供予定です。

https://vrm.dev/api/material/make_custom_material/

ousttrue avatar Feb 03 '25 15:02 ousttrue

とりえあず 代替 Shader を適用するサンプルを作りました。 TinyMToon の機能を増やすのは v0.128.3 以降の予定です。

https://vrm-c.github.io/UniVRM/

ousttrue avatar Feb 07 '25 10:02 ousttrue