【Unity】マテリアルをURP用に変換する方法!「3Dモデルがピンク色になる問題」を簡単に修正しよう

マテリアルをURP用に変換する方法 Unity

Unityで初心者の方がURPを採用してゲームを作るときに、よくあるトラブルとして

3Dモデルのアセットをインポートしたらピンク色になってしまった!

というものがあります。これはそのアセットのマテリアル(のシェーダー)がURPに対応していないことが原因で発生するのですが、初心者の方からしたら

  • なんでピンク色になっちゃったんだ…?
  • 一体どうすればいいんだろう?簡単に治せるの?

と不安になってしまうこと間違いなしだと思います。

しかしご安心ください。これは理屈さえ分かれば基本的には簡単な作業で修正することが可能です(※直せない場合もありますが…)。

そこでここではURPでマテリアルがピンク色になった場合の対処法をご紹介しますね。

そもそも、なぜURPでマテリアルがピンク色になってしまう場合があるのか?

でははじめに、なぜURPでマテリアルがピンク色になってしまう場合があるのか?という点を簡単に説明しておきます。

そもそもURPというのは、ここ数年で導入されたグラフィックの新しい描画方式の一種のことです。URPについての詳しい話は下記の記事をご覧いただきたいのですが…

【Unity】URP(Universal Render Pipeline)の概要&導入方法
Unityを使っていると、よく「URP」という単語を目にすることがあります。これはざっくり言えばUnityのグラフィックの描画方式の一つなのですが、初心者の方からしてみれば URPって一体何なの? デフォルトのテンプレートと...

ザックリ言うとURPは幅広い用途・デバイスで使える描画方式であり、従来から使われてきたビルトインRPの後継版にあたる存在です。

ただし後継とはいっても仕組みは全く違うようで、以前から使われてきた「Standardシェーダー」等が使えなくなってしまっています。そして古いアセット等にはStandardシェーダーを使ったマテリアルが使用されていることが多いので、それをURPにインポートすると正常に表示されない(つまりエラーを意味するピンク色になる)というわけです。

まあ要するに

従来の描画方式(ビルトインRP)とURPとの間には互換性がない

ということなので、まずはこの点をご理解いただければと思います。

「Render Pipeline Converter」でマテリアルをURP用に変換する方法

ただ互換性がないと言ってもそのままでは非常に不便なので、Unity側でマテリアルをURP用に変換してくれる機能が標準搭載されています。それが「Render Pipeline Converter」です(下図)。

Render Pipeline Converter

ここではこの機能を使ってピンク色になってしまっているマテリアルを修正する方法をご紹介します。

注意事項

まず、Render Pipeline Converterの使い方を説明する前に注意事項をいくつか書いておきます。

  1. この機能はUnity2021から使える新しい変換機能です。それより前のバージョンでも変換する方法がありますが、やり方が全然違います。
  2. また、これはあくまでもUnity標準のシェーダーを使ったマテリアルをURP用に変換するためのものです。アセット独自のシェーダーを使ったマテリアルは変換に失敗するので注意しましょう。
  3. 度マテリアルを変換すると元に戻すのが非常に面倒くさいので、必要ならバックアップを取っておいた方がいいと思います。

上記を知らないとややこしいことになるので予めご注意ください。

使い方

では注意事項をご理解いただいたところでRender Pipeline Converterの使い方についてです。マテリアル変換の主な手順は次のとおり。

  1. Render Pipeline Converterウィンドウを開く
  2. ドロップダウンから「Built-in to URP」を選ぶ
  3. 「Material Upgrade」にチェックを入れる
  4. 「Initialize Converters」ボタンを押す
  5. 「Convert Assets」ボタンを押す

一つずつ見ていきましょう。

手順1:Render Pipeline Converterウィンドウを開く

まずはRender Pipeline Converterウィンドウを開く必要があります。このウィンドウは、メニューバーの「ウィンドウ」→「レンダリング」→「レンダーパイプラインコンバーター」から開くことができます。

手順2:ドロップダウンから「Built-in to URP」を選ぶ

次に、マテリアルをビルトインRP用からURP用に変換する場合は、下の図のようにドロップダウンから「Bulit-in to URP」を選択します。

Bulit-in to URP オプション

手順3:「Material Upgrade」にチェックを入れる

そうすると下半分の内容が切り替わるので、「Material Upgrade」にチェックを入れましょう。

Material Upgrade

手順4:「Initialize Converters」ボタンを押す

次に下の方にある「Initialize Converters」ボタンを押します。

Initialize Converters ボタン

すると変換されるマテリアルの一覧が表示されます。

手順5:「Convert Assets」ボタンを押す

最後に、同じく下の方にある「Convert Assets」ボタンを押せば変換完了です。これでマテリアルをURP用にアップグレードすることができました。

おわりに

以上、旧式のマテリアルをURP用のマテリアルに変換する方法をご紹介しました。ぜひ上記の内容を参考にしていただき、ピンク色のマテリアルを修正してみてください。

…それにしても最近のUnityは新しい描画方式が登場したことによって便利になった一方、仕組みの違いや互換性のなさが余計な混乱を招いている印象があり、今回のマテリアルの件のように初心者の方にとっては分かりづらくなってしまっていると思います(※これに関してはUnityの設計ミスだと言わざるを得ません)。しかしきちんと調べて頂ければ簡単な解決策もあるということで、その辺はユーザーである私たちもUnityとうまく付き合っていく必要があると思います。

ともかく、この記事がUnityでのゲーム開発のお役に立てば幸いです。