0からスタート!ゲーム開発ブログ

ゲーム開発に関する様々な記事を更新します

【Unityゲーム開発の基本】マテリアルを使ってオブジェクトの表面を変化させよう

はじめに

こんにちは。azarashin です。 Unityの基本機能を使うことで立方体や球などの単純な白いオブジェクトを配置できることを今までの記事で触れてきました。 (光の当たり方の関係で白というよりはグレーですが…)

wizardia.hateblo.jp

wizardia.hateblo.jp

実際のゲームではこういったのっぺりとしたオブジェクトを使用することは少なく、模様の付いたオブジェクトを使用することが一般的です。 地面であれば土や岩の画像を模様として使いますし、人体モデルであれば場合によっては顔そのものを模様として扱うこともあります。 Unity ではこのような模様を実現するためにマテリアルという概念を用います。 本記事ではUnity を使ってオブジェクトに対してマテリアルを割り当て、外観を変化させる方法を紹介します。

マテリアルアセットを入手する

マテリアルは自作することも可能ですが、最初は既存のマテリアルを活用する方が楽ですので、 アセットストアから無償提供されているマテリアルアセットを使用することにします。

assetstore.unity.com

上記のサイトに移動すると下記のような画面がでてきます。無償アセットの場合は支払いのステップがなく、 Add to My Assets というボタンがありますので、このボタンをクリックして下さい。

アセットストア

するといくつかの確認画面がでてきますので、内容に問題がないかどうか確認して問題がなければ先に進んでください。 一通り先に進むと、Open in Unity というボタンが表示されますので、このボタンをクリックしてください。 (一緒に表示されるGo to My Assets ボタンを押すと今まで購入したアセットの一覧が表示されます。)

アセットストアからUnityを開く

すると、もし起動していなければUnity が起動し、Package Manager というウィンドウが開きます。 ここで右下のDownload ボタンを押すとアセットがダウンロードされます(まだプロジェクトには追加されていません)。 この時、もし何かしらのエラーが表示されていたらログイン状態に問題があるかもしれませんので、 一度ブラウザでUnity のサイトでログアウトし、Unityエディタも終了、Unity Hubからもログアウトして、 再度Unity Hub へログイン、Unity エディタの起動、Unityのサイトへログインして同様の手順を再実施してください。 (面倒でなければパソコンの再起動でもOKです。)

アセットのダウンロード

ダウンロードが完了しましたら、Import ボタンをクリックし、アセットをプロジェクトに取り込んでください。

アセットのインポート

Import ボタンをクリックすると、この後インストールされるファイルの一覧とその場所とが表示されますので、問題なければ先に進んでください。実際のゲーム開発だと色々なアセットを同様の手順で追加していくことになるため、今追加したアセットがどこにインストールされたのかがわかりにくくなることがあります。そのため、この時インストールされる場所をメモに控えておくことをお勧めします。

パッケージのインポート

マテリアルを割り当てる

これでマテリアルアセットがプロジェクトに追加されましたので、さっそくこのマテリアルを使用していきます。 Hierarchy の適当な場所で右クリックし、3D Object -> Plane と選択して平面を生成します。

Plane の生成

この平面を選択してInspector 欄を見るとMesh Renderer の欄にMaterials という欄があり、この中にDefault Material が設定されているかと思います。これはオブジェクトが生成された時点で割り当てられている初期マテリアルですので、これを別のマテリアルに上書きしていきます。 先ほどインポートしたアセットの中からマテリアルを探し、Default Material のある欄にドラッグ&ドロップしてください。マテリアルのアイコンは球体のような画像になっています。

デフォルトマテリアル

マテリアルの割り当てが正常に終わると、平面の見た目が変化するのがわかると思います。

マテリアル割り当て

マテリアルと周辺要素の関係

エディタ上での操作によりオブジェクトにマテリアルを割り当てる手順を示したのですが、 マテリアルをもっと使いこなすためにはマテリアルと周辺要素との関係についておさえておく必要があります。

まずマテリアルとは何かを改めて考えます。マテリアルは以下のようなものだと考えます。

上記を踏まえた上で、ゲームを実行する前、ゲーム開発のステップとして事前準備しておく事項は以下の通りです。

Step 概要
1 シェーダを記述し、画素の色を計算するのに必要な入力要素と計算手順を定義する
2 マテリアルを作成し、どのシェーダを使うのかを選択する
3 シェーダで定義した入力要素(テクスチャ画像やパラメータ等)を設定する

一方、ゲームを実行している最中のレンダリング時の流れは以下の通りです。

Step 概要
1 モデリングデータにおける画素の位置を算出する
2 テクスチャ画像・パラメータをシェーダに入力する
3 シェーダで出力時の画素色を計算する
4 1. で計算された位置にある画素を、3. で計算された画素色で塗る

マテリアルのパラメータを調整する

上記の流れのうち、今回はパラメータを変更してみます。 Inspector の一番下にあるマテリアル設定欄を開き、パラメータを変化させてみてください。

マテリアルのパラメータ調整

上記で示したように、数値や色といったパラメータだけでなく、テクスチャ画像やバンプマップ(凹凸を示した画像)を変更することもできます。ゲームの内容に応じて様々なマテリアルを制作してみましょう。

終わりに

本記事ではマテリアルの使い方についてご紹介しました。 マテリアルを割り当てることでモデリングデータの表面に模様をつけることができますが、 実際にはアプリケーションを動かしている最中にマテリアルへの入力パラメータを自由に変更し、 材質の見た目をダイナミックに変えることで様々な演出をすることも可能です。 今後様々な応用をしていくためにも、まずはマテリアルの基礎的な使い方を習得し、次につなげていきましょう。