今回は以前Blenderで作成した自作の剣のマテリアルを材質ごとに分けてそれをUnityに取り込んで設定するところをやりたいと思います。
今回の場合は単純に刃とそれ以外の二つに分けるだけですが・・・。
またマテリアルやテクスチャの名前をいいかげんに付けているので、適した分かりやすい名前に変更してください。
剣のモデリングは
剣にテクスチャを貼るのは
を参照してください。
以前の記事で剣にテクスチャを貼り付けるところまでやりましたが、剣のオブジェクト全体に1つのマテリアルを設定している為、剣の刃と柄の部分の質感を分けることが出来ませんでした。
そこで刃の部分とその他の部分のメッシュでマテリアルを分け、それぞれの質感を設定出来るようにしていきます。
剣の刃と柄のマテリアルを作成する
まずは剣の刃と柄のマテリアルのスロットを作成し、そこにそれぞれのマテリアルを設定するところまでをやります。
Objectモードで剣を選択したらプロパティエディタのマテリアルを選択し、+をクリックしマテリアルスロットを作成します(下の画像では既に刃と柄のマテリアルが作成されています)。
次にNewを押しマテリアルを作成します。
マテリアルが作成されたらマテリアルの名前をGripにします(適当に名前を付けてください)。
既に剣には1つのマテリアルを設定していたので、そのマテリアルの名前をSwordに変更します。
これで2つのマテリアルの準備が出来ました。
間違って他のマテリアルスロットを作成してしまった場合はObjectモードでマテリアルスロットの―を押すと削除できます(Editモードの時は削除出来ない)。
刃と柄に対応するメッシュを選択する
刃と柄のマテリアルが作成出来たので、次はそのマテリアルの設定を適用するメッシュを選択していきます。
現時点では剣のメッシュ全てにSwordマテリアルが割り当てられているので、柄の部分に当たるメッシュを柄のマテリアルであるGripに割り当てていきます。
剣のオブジェクトを右クリックで選択したら、Tabキーを押してEditモードにします。
Editモードにしたら、剣の刃以外のメッシュを選択していきます。
刃以外のメッシュを選択したらプロパティエディターのマテリアルのGripを選択し、Assignをクリックします。
これで剣の刃以外のメッシュにGripマテリアルが割り当てられました。
刃以外のメッシュをGripマテリアルに割り当てたことで、刃のメッシュ部分だけがSwordに自動で割り当てられます。
メッシュには必ず何らかのマテリアルが割り当てられる必要がある為、Swordに割り当てられていた刃以外のメッシュ部分がGripに割り当てられたことでその部分はSwordから除外されます。
このことからわかるようにメッシュには必ず何らかのマテリアルが割り当てられている必要があります。
どのメッシュにどのマテリアルが割り当てられているか確認するには、マテリアルを選択しSelectを押すと割り当てられているメッシュが選択され、Deselectを押すと選択を解除します。
一度メッシュ部分が選択されたら一旦解除してからSelectを押さないと既に選択されている部分は選択されたままになっているので注意が必要です。
これでメッシュ毎にマテリアルを分けることが出来ました。
マテリアルにテクスチャを設定する
Swordマテリアルには以前の記事で設定した剣のテクスチャが設定されていますが、Gripマテリアルにはまだテクスチャを設定していません。
そこでGripマテリアルにGrip部分のテクスチャを設定しましょう。
Gripマテリアルを選択した状態でテクスチャアイコンをクリックします。
Newを押して新しいテクスチャを作成します。
テクスチャにわかりやすく名前を付けます。
次は作成したテクスチャに以前作成した剣のテクスチャをOpenを押して開きます。
GripTextureに剣のテクスチャが設定されました。
剣全体のテクスチャをGripに適用して大丈夫なの!?
さて、ここで疑問に思った方もいるかもしれません。
以前、剣のオブジェクトのメッシュ全体のUVMapを作成し、そこに色を塗って剣全体のテクスチャを作成しましたが、そのテクスチャが剣の刃のマテリアルと柄のマテリアル両方に設定されています。
刃の部分は刃のテクスチャ、柄の部分は柄のテクスチャを個別に作らなくてもいいのか?という事です。
ですがこれで問題はないようです。
UVMapはメッシュを3Dから2Dの平面図にしたもので、そのメッシュ部分に対応する色を塗ったのが剣全体のテクスチャです。
UVMapの位置はずらしていないので、剣の刃の部分や絵の部分のメッシュのUVMapは以前のままであるので、それに対して塗った剣全体のテクスチャとの対応は変わっていません。
これで剣の刃と柄のマテリアルを分けることが出来ました。
Blenderから剣を出力する
Blenderから改めて剣のモデルを出力します。
Fileメニュー→Export→FBXを選択します。
FBXの出力設定で、選択した剣のオブジェクトだけを出力するのでSelected Objectsにチェックを入れ、!EXPERIMENTAL! Apply Transformにチェックを入れます。
名前を付けてExport FBXボタンを押して3Dモデルを出力します。
Unityで剣のモデルを取り込む
UnityのAssetsフォルダの剣のモデルを取り込みたいフォルダ上で右クリック→Import New Asset…を選択し、出力した剣のFBXファイルを選択し取り込みます。
すると、剣のモデルと刃のマテリアル、柄のマテリアルが分かれて取り込まれます。
このままだとマテリアルが編集出来ないのでUnity内でSwordとGrip用のマテリアルを新しく作り設定し直します。
Assetsフォルダ内で右クリック→Create→Materialを選択し名前をSwordにします。同じようにGripマテリアルも作成します。
上のように取り込んだ剣のモデルに内包するマテリアルとは別に2つのマテリアルを作成した状態になります。
次に剣のモデルの大元を選択しインスペクタでGripとSwordのマテリアルのスロット部分に今作成したGripとSwordのマテリアルをドラッグ&ドロップします。
設定したらApplyボタンを押し確定します。
すると剣のモデルに内包されたマテリアルが消えます。
剣全体のテクスチャをUnityに取り込み、GripマテリアルとSwordマテリアルのAlbedoに設定すれば剣にテクスチャが張られます。
マテリアルの設定はいいかげんな感じにしていますが、これで刃と柄のマテリアルを分けられるようになったのがわかると思います。
終わりに
剣にノーマルマップを適用する記事を作成する前に、刃と柄の部分で質感を変えたかったので今回の記事を作成しました。
次回は剣の刃部分のノーマルマップを作成し適用する記事を作成していきます。