Unity のマテリアルは 3D オブジェクトをレンダリングするための重要なコンポーネントです

記事ディレクトリ

ここに画像の説明を挿入します

導入

Unity では、マテリアルは 3D オブジェクトのレンダリングに使用される重要なコンポーネントです。マテリアルは、色、テクスチャ、照明特性、反射などを含むオブジェクトの外観を定義します。以下はマテリアルの詳細な紹介です。

  1. マテリアルの作成:
    マテリアルを作成するには、通常、シェーダ (Shader) と 1 つ以上のテクスチャが必要です。次の手順に従ってマテリアルを作成できます。

    • Unity のプロジェクト ビューで、Assets フォルダーまたはそのサブフォルダーを右クリックします。
    • 「作成」>「マテリアル」を選択し、マテリアルに名前を付けます。
    • 目的のシェーダーを選択し、テクスチャ、色、その他のプロパティをそれに割り当てます。
  2. シェーダ:
    シェーダは、3D オブジェクトの各ピクセルがどのようにレンダリングされるかを定義するプログラムです。Unity は、Standard Shader、Unlit Shader、PBR Shader など、さまざまな組み込みシェーダーを提供します。カスタム シェーダを作成して、特定のレンダリング効果を実現することもできます。

  3. プロパティ:
    マテリアルには、インスペクター ウィンドウで編集できる多くのプロパティがあります。いくつかの一般的なプロパティは次のとおりです。

    • Main Color : オブジェクトの基本色を定義します。
    • Main Texture : オブジェクトを覆うために使用されるテクスチャ イメージを指定します。
    • Normal Map : サーフェスの詳細と凹凸をシミュレートするために使用される法線マップ。
    • メタリック: 表面の金属性を制御するプロパティ。
    • Smoothness : 表面の滑らかさを制御するプロパティ。
    • Emission : 自己照明効果を定義するプロパティ。
  4. テクスチャ マップ:
    テクスチャ マップはマテリアルで一般的に使用されるテクスチャで、次のものが含まれます。

    • Albedo Texture : オブジェクトの色と反射のプロパティを定義します。
    • 法線マップ: 表面の粗さをシミュレートします。
    • メタリック マップ: オブジェクトの金属部分と非金属部分を定義します。
    • 粗さマップ: 表面の粗さを制御します。
    • Emission Map : 自己発光部分を定義します。
    • Specular Map : 鏡面反射を制御します。
    • アンビエント オクルージョン マップ: オクルージョン効果をシミュレートします。
  5. マテリアルの使用:
    マテリアルは通常、3D オブジェクトのレンダラー コンポーネントにアタッチされます。マテリアルがオブジェクトに関連付けられると、オブジェクトはマテリアルのプロパティとシェーダに基づいてレンダリングされます。マテリアルをオブジェクトのレンダラー コンポーネントに適用したり、スクリプトでマテリアルのプロパティを動的に変更したりできます。

  6. スクリプトでのマテリアル操作:
    スクリプトでマテリアルのプロパティにアクセスして変更し、動的な効果を実現できます。以下は、マテリアルの色を変更する方法を示す例です。

    using UnityEngine;
    
    public class ChangeMaterialColor : MonoBehaviour
    {
          
          
        public Material material;
        public Color newColor = Color.red;
    
        void Start()
        {
          
          
            // 获取对象上的Renderer组件的Material
            material = GetComponent<Renderer>().material;
    
            // 更改Material的颜色属性
            material.color = newColor;
        }
    }
    
  7. バッチ処理:
    多数のオブジェクトをレンダリングする場合、Unity は同じマテリアルのオブジェクトをバッチ処理できるため、同じマテリアルを使用するとパフォーマンスが向上し、レンダリングの呼び出しが減ります。

マテリアルは、Unity で視覚効果を実装する際の重要な部分の 1 つです。適切なシェーダーを選択し、マテリアルのプロパティを調整することで、リアルタイムの照明から漫画スタイルまで、さまざまな外観を作成できます。マテリアルを使用してゲーム オブジェクトをレンダリングする方法を知ることは、ゲーム開発において重要なスキルです。

いくつかのコード例

例1: マテリアルの色を変更する

この例では、Unity でオブジェクトのマテリアル カラーを変更する方法を示します。これを実現するにはスクリプトを使用します。

using UnityEngine;

public class ChangeMaterialColor : MonoBehaviour
{
    
    
    public Material material; // 将要更改的Material
    public Color newColor = Color.red; // 新颜色

    void Start()
    {
    
    
        // 获取对象上的Renderer组件的Material
        material = GetComponent<Renderer>().material;

        // 更改Material的颜色属性
        material.color = newColor;
    }
}

注記:

  • materialまず、変更されるマテリアルを格納するマテリアル変数を宣言します。
  • Startゲーム オブジェクトの開始時に、オブジェクト上の Renderer コンポーネントのマテリアルを取得するメソッドを使用します。
  • 次に、マテリアルの color プロパティを新しい color に設定しますnewColor

例 2: マテリアルのメイン テクスチャを変更する

この例では、オブジェクトのマテリアルのメイン テクスチャを変更して外観を変更する方法を示します。

using UnityEngine;

public class ChangeMaterialTexture : MonoBehaviour
{
    
    
    public Material material; // 将要更改的Material
    public Texture newTexture; // 新纹理

    void Start()
    {
    
    
        // 获取对象上的Renderer组件的Material
        material = GetComponent<Renderer>().material;

        // 更改Material的主纹理属性
        material.mainTexture = newTexture;
    }
}

注記:

  • material同様に、最初に変更されるマテリアルを格納するマテリアル変数を宣言します。
  • newTexture次に、新しいテクスチャを保存するテクスチャ変数を宣言します。
  • このメソッドではStart、オブジェクト上の Renderer コンポーネントのマテリアルを取得し、そのメイン テクスチャ プロパティを新しいテクスチャに設定しますnewTexture

これら 2 つのサンプルは、スクリプトを使用して、色やメイン テクスチャなどのマテリアルのプロパティを変更する方法を示しています。これらのテクノロジーを使用すると、ゲームで動的な効果とインタラクティブ性を実現できます。特定のニーズを満たすために、必要に応じてこれらの例を拡張できます。

おすすめ

転載: blog.csdn.net/weixin_74850661/article/details/132747157