このチュートリアルでは、Adobe Stockからダウンロードした3DモデルをUnityにインポートし、Built-in ShaderとUniversal Render Pipelineの両方にPBRテクスチャを設定する方法を見ていきます。
動画の書き起こし
皆さん、こんにちは!このチュートリアルでは、Adobe Stockからダウンロードした3DモデルをUnityにインポートし、Built-in ShaderとUniversal Render Pipelineの両方にPBRテクスチャを設定する方法を見ていきます。
実際に、この2つのレンダリングエンジンにはいくつかの小さな違いがあり、このチュートリアルでそれを確認しますので、最後までご覧いただくことをお勧めします。High Definition Rendering Pipelineに関しては、Universal Render Pipelineと大差ないため、ここでは説明しません。
実際の例として、Business Jetという3Dモデルを使用します。
Adobe Stockのウェブサイトには、数千の3Dモデルが用意されています。
各3DモデルはPBRテクスチャを伴うOBJ形式で提供されているため、Unity、Unreal、Blender、3D Studio MAXなど、ほぼすべての3Dグラフィックスソフトウェアやゲームエンジンで使用できます。
ニーズに応じて、3Dモデルを個別に購入することも、クレジットパックで購入することもできます。非常にお得な価格で提供されています。
モデルのテクスチャはPNG形式で、PBRメタリックワークフローのための個別のチャンネルを含んでいます。したがって、Base Color、Normal、Metallic、Roughness、Glow、およびOpacityチャンネルのテクスチャがあります。
しかし、Unityのデフォルトのマテリアルでは、Smoothnessの情報がMetallicテクスチャに統合されている必要があります。さらに、SmoothnessはAdobeパッケージで提供されるRoughnessとは逆の関係にあります。
Metallicの情報を外部ソフトウェアで変換およびパッケージ化することも可能ですが、UnityではMetallicワークフローのテクスチャを個別の画像として指定する方法があり、すぐにその方法を見ていきます。
まず、ビルトインシェーダーを使用したプロジェクトから始めて、これらの3DモデルをUnityにインポートして設定する方法を見ていきましょう。
まず、Adobeからダウンロードしたパッケージから、OBJファイルとMTLファイルの両方をProjectタブにドラッグします。MTLファイルは、どのマテリアルを作成し、それを3Dモデルにどのようにマッピングするかを指定するために必要です。

変更をリアルタイムで確認するために、3DモデルをProjectからシーンにドラッグし、次にFキーを押してモデルをフレーム内に収めます。

Unityはインポートされた3Dモデル内のマテリアルとテクスチャを探しますが、この場合、テクスチャは統合されていません。
したがって、Project内の3Dモデルを選択し、InspectorウィンドウのMaterialsタブを開きます。

LocationメニューでLegacyオプションを選択し、Applyをクリックします。

UnityはProjectウィンドウに「Materials」という新しいフォルダーを作成します。このフォルダーには、3Dモデルに既に関連付けられている2つのマテリアルが見つかりますが、テクスチャはありません。

次に、Adobeパッケージから興味のあるテクスチャをこのフォルダーにドラッグします。今回は、光を放つマテリアルを使用しないため、Glowテクスチャはインポートしません。

まず、完全に不透明なマテリアルを選択します。
InspectorウィンドウでShaderメニューをクリックし、Autodesk Interactiveオプションを選択します。

ご覧のとおり、Rendering Modeにいくつかのオプションがありますが、今回はOpaqueのままにしておきます。特に重要なのは、PBR Metallic Workflowの個別のテクスチャを指定できることです!

それでは、AdobeパッケージからインポートしたテクスチャをShaderのそれぞれのチャンネルに関連付けます。
特にNormal Mapの場合、インポート直後に表示されるFix Nowボタンをクリックします。

また、Base Color(ここではAlbedoと呼ばれる)とRoughnessの外観に関して、いくつかの注意点があります。
Base Colorは、実際にはテクスチャとその隣にある色のミックスから派生します。
したがって、その色をクリックして純白にし、結果としてテクスチャの色だけを得ます。

また、さまざまな色をテクスチャと混ぜて、その効果を楽しむこともできます。

Roughnessテクスチャに関して、最終的な効果が期待通りでない場合は、Project内でテクスチャを選択し、InspectorウィンドウでsRGB Color Textureボックスのチェックを外してからApplyをクリックし、結果を評価します。

これらの操作は、ガラス素材にも繰り返す必要がありますが、明らかに異なる点は、この場合、Autodesk InteractiveをRendering ModeをTransparentに設定する必要があることです。

このモードは、Base Colorテクスチャのアルファチャンネルから不透明度を取得します(利用可能な場合)。しかし、このテクスチャのインポートを避け、Albedoの隣にある色付きのスロットで手動でアルファ値を0に設定することもできます。

次に、他のテクスチャを適用する必要があります。この際、RoughnessとNormal Mapテクスチャの場合に言及したように、sRGBボックスのチェックを外し、Fix Nowボタンをクリックすることに注意してください。

次に、最初からUniversal Rendering Pipelineを使用して作成されたプロジェクトにモデルとテクスチャをインポートする方法を見ていきます。
3Dモデルのインポートとマテリアルの作成は、ビルトインシェーダーの場合と同様に行われます。したがって、OBJファイルとMTLファイルの両方をProjectウィンドウにインポートします。

次に、3DモデルのInspectorウィンドウのMaterialsタブで、マテリアルのLegacyオプションを選択し、Applyをクリックします。これにより、Unityはモデルに指定するマテリアルを含むMaterialsフォルダーを作成します。

Materialsフォルダーに、既存のマテリアルに関連付けるテクスチャ画像をインポートします。

しかし、この時点では、各マテリアルのシェーダーの種類を直接Autodesk Interactiveに変更することはできません。なぜなら、そのオプションはビルトインシェーダーでのみ使用できるからです。

心配しないでください!Autodesk Interactiveは、ShaderメニューのUniversal Render Pipelineオプションの中にもあります!

また、Base、Masked、Transparentの3つの異なるモードがあることにも気づきます。
飛行機の不透明なマテリアルにはBaseモードを使用し、ガラスにはTransparentマテリアルを使用します。

まず、Universal Render PipelineのAutodesk Interactiveマテリアルの各チャンネルにテクスチャを関連付けます。
シェーダーが自動的にテクスチャを適用しないことにすぐに気づきますので、各テクスチャに対してUse Mapチェックボックスを選択するのは私たちの役目です。

Normal Mapの場合、UnityはFix Nowボタンをクリックしてテクスチャを修正するオプションを提供してくれるはずです。

このボタンが表示されない場合は、Projectでテクスチャを選択し、InspectorウィンドウのTexture Typeメニューで正しいタイプ(Normal Map)を指定することで、テクスチャを修正できます。

Roughnessテクスチャに関しては、ビルトインシェーダーの場合と同じ考慮事項が適用されるため、このテクスチャのInspectorウィンドウでsRGBオプションを解除し、変更を適用する必要があるかもしれません。

ガラスのマテリアルについては、同様の操作を行いますが、いくつかの違いがあります。まず、シェーダーはAutodesk Interactive Transparentでなければなりません。

Base Color、Normal Map、Metallic、およびRoughnessテクスチャは、他の場合と同様に設定しますが、透明性テクスチャ(Opacity)に関しては重要な違いがあります。
Autodesk Interactive Transparentの場合、Use Opacity Mapチェックボックスを選択すると、Base Colorテクスチャに含まれる透明性チャンネルを使用できます。しかし、Opacityチャンネル用の別のテクスチャがある場合、それを使用することができます。
どのように進めればよいでしょうか?素材が完全に透明かどうかに応じて、2つの選択肢があります。素材が完全に透明な場合(今回のケースのように)、Opacityフィールドで透明度の値を直接指定し、テクスチャを使用せずにOpacity値を0に設定できます。

素材が一部の領域のみ透明な場合、Autodesk Interactive Maskedシェーダーを選択し、Opacityテクスチャを使用することができます。


これらの場合も、ビルトインシェーダーの場合と同様に、Adobeパッケージで提供されているGlowマップをEmissiveチャンネルに使用することができます。このプロジェクトでは必要ないためこのテクスチャを使用しませんでしたが、このオプションが利用可能であることを知っておくと良いでしょう。

さて、これでこのチュートリアルは終了です!お役に立てたなら幸いです。またお会いしましょう!