unityでVRMインポートできないエラーが!~Shader_NoneNormal.normal is not converted. 紫色のマテリアルエラーやMToonのURP対応など

mtoon unity URP シェーダー Unity
※記事内に広告が含まれています。

バーチャル3Dクリエイター神部まゆみです(*^-^*)

この記事はunityのVRMインポートでException: UnityEngine.Texture:Shader_NoneNormal.normal is not converted. っていうエラーが出たのでその解決策についての記事です。

以前もVRMインポートでエラーが出たことがあるけど、UniVRMのバージョンを変えたら直ったことがあるので↓こちらも参考になるかもしれません。

使用したバージョンはunity2022.3.22です。

●PRスペース●

〇まゆみマート|BOOTH

BOOTHでVRoidテクスチャやVRChat向けオブジェクトなどを販売しています。いいねしてくれると励みになります(*^-^*)

症状:VRMモデルをインポートしようとしたらエラーが出てインポートできない…

URP用のStarter Assetsをいじろうと思ってVRoid Studioで作った私のモデルをインポートしようとしたら、失敗したのかインポートできませんでした。

↓みたいに謎のファイルと空のフォルダができただけで、モデルがインポートできなかったっぽい。

使ったのは↓のアセットです。

インポート成功するといつもはプレハブができて使えるようになるのだけど、失敗してなんか空のフォルダみたいなのができていた。

Exception: UnityEngine.Texture:Shader_NoneNormal.normal is not converted. UniGLTF.TextureExtractor.Extract (VRMShaders.SubAssetKey key, VRMShaders.TextureDescriptor texDesc) (at Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/TextureExtractor.cs:62)

コンソールにはこんなエラーが出ていた。

Exception: UnityEngine.Texture:Shader_NoneNormal.normal is not converted.
UniGLTF.TextureExtractor.Extract (VRMShaders.SubAssetKey key, VRMShaders.TextureDescriptor texDesc) (at Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/TextureExtractor.cs:62)

Exception: UnityEngine.Texture:Shader_NoneNormal.normal is not converted.
UniGLTF.TextureExtractor.Extract (VRMShaders.SubAssetKey key, VRMShaders.TextureDescriptor texDesc) (at Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/TextureExtractor.cs:62)

ChatGPTに聞いてみたけど「uniVRMかunityのバージョンを確認しろ」と言われるだけでダメだった。

検索しても出ないし、あまり報告例がないエラーだとダメっぽいか…。

実行した環境

実行した環境を書いておきます。

  • unity 2022.3.22(URPプロジェクト)
  • Starter Assets: Character Controllers | URP 使用
  • uniVRM v.0.124.0
  • VRoid Studio v.1.28.2でエクスポートしたVRM 0.0モデル

新しくなったStarter Assets URP をいじっていたらエラーが出ました。

Starter Assets: Character Controllers | URP | Essentials | Unity Asset Store
Get the Starter Assets: Character Controllers | URP package from Unity Technologies and speed up your game development p...

多分URP関係のエラーかな?

でもマテリアルエラーになるなら分かるけど、インポートもできないってあるのかなぁ?

仮説1 : VRM 0.xはURPに対応してないことが問題かも?

VRMの公式ドキュメントを見るとそう書いてあった。

VRM
unity starter assets

VRM-0.X MTOON の URP 対応はありません
unlit に fallback します。 import 時に VRM-1.0 にマイグレートすることで、MToon-1.0 の URP 版を使うことを検討してください。

URP 対応状況 | VRM

でもVRM 1.0は、インスペクターメニューで変換すればURP用のマテリアルに変換できるみたいなことが書いてあります。

glb と vrm-1.0 inspector から URP Material への差し替えができます。 ただし、export はできません。 VRM セットアップには、builtin material をご利用ください。

URP 対応状況 | VRM

じゃあVRoid StudioでVRM 1.0のモデルとしてエクスポートして、uniVRMも1.0用のやつにすれば行けるかな?

2024/12/17追記:UniVRMのバージョンアップで、VRM0.xのモデルをVRM1.0に変換ロードできるようになったみたいです。

URP | VRM
| URP-Shader | | |

VRM-0.x のモデルを VRM-1.0 に変換ロードできます。UniVRM10_Vrm10

【ダメだった】VRoid StudioでVRM 1.0モデルとしてエクスポート、VRM1.0用のuniVRMにしてやってみる

VRoid StudioでVRM1.0モデルとしてエクスポートします。

Exception: UnityEngine.Texture:Shader_NoneNormal.normal is not converted. UniGLTF.TextureExtractor.Extract (VRMShaders.SubAssetKey key, VRMShaders.TextureDescriptor texDesc) (at Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/TextureExtractor.cs:62)

2024/07/02現在で最新版のuniVRM v.0.124.0のVRM1.0のやつを入れてやってみます。

Release v0.124.0 · vrm-c/UniVRM
Release Notes日本語EnglishInstallationThe UniVRM supports Unity 2021.3 LTS or later.You can install UniVRM using the UnityP...
Exception: UnityEngine.Texture:Shader_NoneNormal.normal is not converted. UniGLTF.TextureExtractor.Extract (VRMShaders.SubAssetKey key, VRMShaders.TextureDescriptor texDesc) (at Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/TextureExtractor.cs:62)

これでできるはず……?

いやダメでした(-_-;)

仮説2: uniVRMの不具合か、unityバージョンと相性が悪い?

これまでもVRoidモデルのインポートに失敗することは何度あったけど、大抵はuniVRMのバージョンを変えたら普通にインポートできた記憶がある。

以前も「Shader error in ‘VRM10/Universal Render Pipeline/MToon10’~」っていうシェーダーエラーが出たことがあるけど、uniVRMのバージョン変えたら直った。

一応対応unityバージョンは書いてあるのだけど、まぁすべてのunityバージョンとuniVRMバージョンでテストしてるわけではないだろうし…。

Exception: UnityEngine.Texture:Shader_NoneNormal.normal is not converted. UniGLTF.TextureExtractor.Extract (VRMShaders.SubAssetKey key, VRMShaders.TextureDescriptor texDesc) (at Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/TextureExtractor.cs:62)

uniVRMのバージョンを変えてやってみる

今入れているuniVRM v.0.124.0 は消します。そのまま上書きインポートしてもいけるかも?しれないけど一応。

これパッケージマネージャーに出ないのでいつも手動で削除していますが、この三つを削除する。

削除 uniVRM
  • UniGLTF
  • VRM
  • VRMShaders

の三つのフォルダを削除。

もしかしてUPMパッケージなら削除できるのかな?まぁ後でやってみます。

ひとつ前のuniVRM v.0.123.0でやってみます。

Release v0.123.0 · vrm-c/UniVRM
Release Notes日本語EnglishInstallationThe UniVRM supports Unity 2021.3 LTS or later.You can install UniVRM using the UnityP...

これでダメなら110番台に戻してやってみようかな…。

【一応解決?】インポートはできたけど紫色のマテリアルエラーになったΣ(゚Д゚)

あれ、なんかインポートはできたんですがマテリアルエラー?なのか紫色になりました。

インポートできたのはいいけど、uniVRM v.0.124.0とv.0.123.0の間でそんなに変わったのか…?

まぁインポートはできたから、多分uniVRMの問題は解決かな?(;^_^A

これはHDRPの時もなったような…シェーダーが対応していないやつかな。

Exception: UnityEngine.Texture:Shader_NoneNormal.normal is not converted. UniGLTF.TextureExtractor.Extract (VRMShaders.SubAssetKey key, VRMShaders.TextureDescriptor texDesc) (at Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/TextureExtractor.cs:62)

unlit/Textureシェーダーなら表示されたのでMTOONが対応してないっぽい。

でもインスペクターでマテリアル変換すればいけるとか書いてあったなあ。

unity starter assets

或いはすべてのレンダーパイプラインに対応している、UTS2の後継のUnity Toon Shader(UTS3)を使うのも良いかな。

Unity Toon Shader overview | Unity Toon Shader | 0.10.2-preview

でもその場合はマテリアル作り直しになりそうでめんどくさいので、なんとかできる方法を探してみます。

【解決】モデルのプレハブを開いて、マテリアル設定でRender PipelineをURPにする

これで解決しました。

インポートしたVRM1.0のVRMモデルのファイルを選択、インスペクターのMaterials のところの下にRender Pipelineを選ぶところがあるので、そこでUniversal Render Pipelineを選べばOK。

mtoon unity URP シェーダー
mtoon unity URP シェーダー

これでちゃんとURPに対応できた!

mtoon unity URP シェーダー

ゲーム画面でもちゃんと表示されてました。

おわりに

案外簡単にURP対応できて良かった。

しかしVRM 0.xだと対応してないっぽい?VRM1.0はもう出て結構経つから、そろそろ移行していったほうが良いか…。

また何かあれば追記します(*^-^*)

タイトルとURLをコピーしました