マテリアルの基本の基本

unity_chan_logo

概要

最終更新日:2020/02/18

マテリアルの基本的な説明を書いた記事です。
この記事は以下の内容を知りたい方に向けて書いています。
  • マテリアルが何かを知りたい
  • マテリアルの使い方が知りたい
  • マテリアルの色を変えてみたい
  • マテリアルに画像を設定してみたい

サンプル

サンプルはスタートアップ版完成版を用意しています。
二つのサンプルの内容は以下の通りです。

サンプルの種類 Unityのバージョン 説明
スタートアップ版 Unity2019.2.19f1 色変更で使用するSphereオブジェクトと
画像設定用の画像を入れたプロジェクトです。
完成版 Unity2019.2.19f1 この記事の内容を全て実装したプロジェクトです。


マテリアルとは

マテリアルとは色や光沢、テクスチャの情報によって、
金属やプラスチックなどの物質の材質を表現する概念です。

Unityにもオブジェクトの材質表現をできるようにするために
マテリアルコンポーネントが用意されています。
この記事ではマテリアルの作成や関連付けの方法、色やテクスチャの設定等、
マテリアルコンポーネントの簡易的な使い方の説明をします。

マテリアルを確認する

マテリアルは3Dのゲームオブジェクトに関連付けされており、
Inspectorから確認することができます。

unity_0103

デフォルトマテリアル

BoxやShpereなどのUnityが用意している既存のオブジェクトは
デフォルトマテリアルが使用されています。
「マテリアルを確認する」の画像は既存オブジェクトである
Sphereのマテリアルなのでデフォルトマテリアルです。

このデフォルトマテリアルで注意すべき点が一つあります。
それは、Inspectorによる変更ができないということです。

本来のマテリアルは色の変更、テクスチャの設定など様々な変更が可能ですが、
デフォルトマテリアルは、Inspectorでそれらの変更ができないようになっています。

その為、デフォルトマテリアルが使用されているオブジェクトの
色などを変更する場合は新しいマテリアルを作成するか、
スクリプトを使用して変更する必要があります。

作成方法

マテリアルの作成は以下のどちらかの手順で作成できます。

メニューから作成

  1. 上段メニューのAssetsを選択する
  2. 表示されたメニューリストからCreateを選択する
  3. 更に新しく表示されたリストからMaterialを選択する
  4. Projectビューに追加されたMaterialに名前を付ける
unity_0104

Projectビューから作成

  1. Projectビュー上で右クリック
  2. 表示されたメニューリストからCreateを選択する
  3. 更に新しく表示されたリストからMaterialを選択する
  4. Projectビューに追加されたMaterialに名前を付ける
unity_0105

ゲームオブジェクトに関連付ける

作成したマテリアルに対してどれだけパラメータを変更しても意味がありません。
マテリアルはいずれかのゲームオブジェクトに関連付け(適用)することで、
初めて意味を持ちます。
そこで、この記事ではマテリアルを関連付けする方法を二つ紹介します。
  • ゲームオブジェクトにD&D(ドラッグ アンド ドロップ)する
  • Inspectorから関連付けする

ゲームオブジェクトにD&Dする

この方法は非常にシンプルです。
設定したいマテリアルを対象のゲームオブジェクトにD&Dします。

unity_0106

成功したらInspectorのマテリアルがD&Dしたマテリアルに変わります。

unity_0107

Inspectorから関連付けする

3Dオブジェクトには「MeshRenderer」や「SkinMeshRenderer」などの
3Dを表示するためのコンポーネントが関連付けされています。
このコンポーネントの項目にはマテリアルを設定する項目があるので、
そこに対象のマテリアルを設定します。
項目は「Materials」です。
unity_0108

以下の二つの方法で設定します。
  • 直接D&Dする
  • リストから設定する

直接D&Dする

一つ目はマテリアルを直接D&Dする方法です。
MaterialsのElementに設定したいマテリアルをD&Dするだけです。

unity_0109

成功したらD&Dしたマテリアルの名前に変わります。

unity_0110

リストから設定する

リストから設定する方法は、次の手順で実行します。

Projectビューから作成

  1. Materialsのマテリアルの「◎」をクリック
  2. リストから設定したいマテリアルを選ぶ
まずは、Materialsのマテリアルの「◎」をクリックします。

unity_0111

表示されたリストは設定可能なマテリアルのリストです。
ここから設定したいマテリアルを選びます。

unity_0112

設定完了したら選択したマテリアルの名前に変わります。

unity_0110

マテリアルで色を変える

マテリアルの色を変える方法を二つ紹介します。
  • Inspectorから変更する
  • スクリプトから変更する

Inspectorから変更する

Inspectorからの変更は、まず変更したいマテリアルを選択して
Inspectorに情報を表示させます。

unity_0113

次にマテリアルの「MainMap」の項目のすぐ下にある「Albedo」を見つけてください。
この項目で色の変更を行います。

unity_0114

Albedoの項目の右にある長方形をクリックします。

unity_0115

するとColorウィンドウが表示されるので、変更したい色に変えます。

unity_0116

するとマテリアルのアイコンが変更した色に変わります。

unity_0117

スクリプトから変更する

スクリプトからの変更をするために、まずはスクリプトを作成します。
そして、変更したいマテリアルを持つゲームオブジェクトに関連付けして下さい。

unity_0118

今回の実装は関連付けしたスクリプトのStartメソッドに書きます。
※あくまでサンプルではStartに書いているだけです。
 実践では色の変更が必要な場所に書いてください。

void Start()
{
	
}

GetComponentを使用してRendererを取得します。
スクリプトの変更では直接マテリアルを取得するのではなく、
オブジェクトの表示を管理してるRendererコンポーネントを取得します。
マテリアルはこのコンポーネントの「material」に保存されています。

// マテリアルを管理してるコンポーネントの取得
Renderer renderer = GetComponent<Renderer>();

取得が完了したらmaterialのColorを変更することで、色が変わります。

// マテリアルの色を青に変更する
renderer.material.color = Color.blue;

これでスクリプト側の実装は終了したので、Unityに戻りPlayボタンを押してください。
ゲームオブジェクトの色が青色に変化します。

unity_0119

これでスクリプトによるマテリアルの色変更は終了です。
※スクリプトによるマテリアルの変更はデフォルトマテリアルでも行えます

マテリアルに画像を設定する

色の変更の説明が終わったので、次はマテリアルに画像を設定する方法の説明をします。
設定の前に以下のモノを新規で用意してください。
  • Planeオブジェクト
  • マテリアル
  • 画像
用意ができたら次の作業を行い、マテリアルに画像を設定します。
  • 画像をマテリアルに設定する
  • マテリアルをゲームオブジェクトに関連付けする
上の作業はどちらが先でも構いません。
※マテリアルをゲームオブジェクトに関連付けするやり方は
 「マテリアルを関連付ける」で行っていますので省略します。

画像をマテリアルに設定する

画像の設定はマテリアルの色の変更と同じくAlbedo項目で行います。

unity_0120

変更方法は以下の二通りです。
  • リストから選択する
  • 直接設定する

リストから選択する

Albedoの左側にある「◎」をクリックすると
画像選択のウィンドウが表示されるので、設定したい画像を指定します。

unity_0121

Projectビューのマテリアルアイコンが変わったら設定完了です。

unity_0122

直接設定する

Albedoの左側にある「□」に直接画像をD&Dすることで設定ができます。

unity_0123

Projectビューのマテリアルアイコンが変わったら設定完了です。

unity_0124
画像を設定したPlaneは以下のようになります。

unity_0125
以上でマテリアルを使用したオブジェクトの見映え変更の説明は終了です。
今回説明した内容はマテリアル機能のチュートリアル的な説明なので
色々と調べてみてください。