アプリ制作⑤マテリアルとテクスチャ

このレッスンでは、Unityのオブジェクトにマテリアルとテクスチャを適用する方法について学んでいきます。マテリアル、テクスチャを適用すると言われてもイメージがわかない人もいるかもしれませんが、簡単に言うとアプリに使われるパーツに色や質感を与えるという作業です。それでは早速、マテリアルとテクスチャの適用方法について見ていきましょう。

オブジェクトに色を付ける

マテリアルの作成

オブジェクトに色を付ける最初の手順としては、色のマテリアル(Material)を作ることです。絵の具で塗り絵をする場合に、塗りたい色の絵の具を用意するのと同じです。

まず、プロジェクトウィンドウ内で、アセット(Asset)を右クリックして、クリエイト(Create)を選択し、マテリアルを作成します。作成したマテリアルには自分にとってわかりやすい名前を付けておくと便利ですね。

色を選択する

続いて、作成したマテリアルをダブルクリックしてマテリアルの設定を開きます。ここでオブジェクトに付けたい色を選択することができます。

オブジェクトにマテリアルを適用する

インスペクターパネル内で、メッシュレンダラー(Mesh Renderer)コンポーネントのマテリアルスロットに、作成したマテリアルをドラッグ&ドロップして適用します。通常、3Dオブジェクトには自動でこのコンポーネントが付いていますが、付いていない場合は、コンポーネントの追加(Add Component)をクリックして、メッシュレンダラーを追加してください。

これでオブジェクトに色を付けることができます。色を変えたいときは、プロジェクトウィンドウのマテリアルをダブルクリックして設定の中で色を変えるとオブジェクトの色も変えることができます。

スクリプトで色を変える

ここまでUnity Editorを使って色を付ける方法を見てきました。続いて、スクリプトを使って色を変える方法も見ておきましょう。

using UnityEngine;

public class ColorChange : MonoBehaviour
{
    // 適用する色を定義する(この例では赤)
    public Color newColor = Color.red; 

    void Start()
    {
        // レンダラーを定義する
        Renderer myRenderer = GetComponent<Renderer>();
        // 色を適用する
        myRenderer.material.color = newColor; 
    }
}

オブジェクトに質感を与える

テクスチャの用意

まずは、マテリアルに使用するテクスチャを用意します。テクスチャにはJPEGやPNGなどの一般にもよく使われる画像ファイルを使うことができます。例えば、タイルの写真があれば、それを使ってアプリ内でもタイルの床を表現することができるという具合です。

マテリアルの作成

オブジェクトに色を付けたのと同じ要領で、プロジェクトウィンドウ内で、セット(Asset)を右クリックし、マテリアルを作成します。

テクスチャのインポート

マテリアルに適用するテクスチャ(最初に用意した画像ファイル)をUnityプロジェクトにインポートします。Assetsフォルダ内にテクスチャ用のフォルダーを作り、そこにドラッグ&ドロップして入れておくと便利です。

マテリアルにテクスチャを割り当てる

プロパティの右側にある小さなサークルのボタンをクリックして、先ほどインポートしたテクスチャを選択します。これで、マテリアルに画像のテクスチャが割り当てられた状態になります。

テクスチャの設定

テクスチャのプロパティは、マテリアルの外観や挙動に影響を与えます。たとえば、アルベド(Diffuse、Albedo”)テクスチャはオブジェクトの基本的な色や外観を定義し、ノーマルマップ(Nero Map)は表面の凹凸や凹みをシミュレートします。必要に応じてマテリアルのインスペクターウィンドウで、テクスチャのプロパティを調整します。

オブジェクトにマテリアルを適用する

階層ウィンドウでマテリアルを適用したいオブジェクトを選択して、インスペクターウィンドウでオブジェクトの設定を開きます。プロジェクトウィンドウ内のマテリアルを、対象となるオブジェクトのプロパティにドラッグ&ドロップします。

インスペクターパネル内で、メッシュレンダラー(Mesh Renderer)コンポーネントのマテリアルスロットに、作成したマテリアルをドラッグ&ドロップして適用します。通常、3Dオブジェクトには自動でこのコンポーネントが付いていますが、付いていない場合は、コンポーネントの追加(Add Component)をクリックして、メッシュレンダラーを追加してください。

スクリプトでマテリアルを変える

ここまでUnity Editorを使ってマテリアルを適用する方法を見てきました。続いて、スクリプトを使ってマテリアルを適用する方法も見ておきましょう。

using UnityEngine;

public class ColorChange : MonoBehaviour
{
  // エディターのインスペクターウィンドウでこの部分に該当マテリアルをドラッグ&ドロップする
    public Material newMaterial; 

    void Start()
    {
        // レンダラーを定義する
        Renderer myRenderer = GetComponent<Renderer>();
        // マテリアルを適用する
        myRenderer.material = newMaterial; // Change the material of the GameObject.
    }
}

まとめ

色を変えるだけでも、マテリアルを作ってオブジェクトに付けるという作業を要するのですが、一度このワークフローを習慣化してしまえばマテリアルを変えるだけで色を変えることができるので便利です。

色や質感の見え方は設定によっても異なるので、ゲームビューでオブジェクトを表示しながら外見を確認して、細かい調整を加えるようにしてみてください。