やりたいこと
Fusion360で作成したオブジェクトと、Substance Painterで3DペイントしたテクスチャをUnityに取り込んで、Playボタンを押すとテクスチャが適用されるスクリプトを作成します。
流れ
- Fusion360でオブジェクトを作成して、FBXでエクスポートする
- RizomUVでUV展開する
- Substance Painterで3Dペイントして、Unity用にエクスポートする
- Unityでオブジェクトとテクスチャをインポートする
- Albedoを適用するスクリプトを作成する ← 今回の投稿の対象
- スクリプトとオブジェクトを紐づける ← 今回の投稿の対象
- スクリプトとテクスチャ画像を紐づける ← 今回の投稿の対象
- 実行ボタンを押すと、オブジェクトのAlbedoが変更される ← 今回の投稿の対象
- 実行ボタンを押すと、Albedoが変わる ← 今回の投稿の対象
詳細
3Dモデルやテクスチャの取込方法については、以下の投稿を参考にしてください。
Substance PainterでエクスポートしたテクスチャをUnityに取り込む
5. Albedoを適用するスクリプトを作成する
Hierarchyウィンドウの取り込んだオブジェクトをクリックし、InspectorウィンドウのAdd Component -> New Scriptを選択します。名称をtexture_changeに変更し、Create & addをクリックします。スクリプトが生成されました。
Assets内に生成されたスクリプトtexture_changeをダブルクリックし、Visual Studioを起動、以下のソースに変更し、保存します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class texture_change : MonoBehaviour
{
// Start is called before the first frame update
// スクリプトから画像を扱う場合に Texture または Spriteという形式に変換する必要がある
// クラス変数として Texture型のクラス変数 wood_dark_AlbedoTransparencyを定義する
public Texture wood_dark_AlbedoTransparency;
void Start()
{
GetComponent<Renderer>().material.mainTexture = wood_dark_AlbedoTransparency;
}
// Update is called once per frame
void Update()
{
}
}
6. スクリプトとオブジェクトを紐づける
5で作成したスクリプトを3Dオブジェクトに関連付け(アタッチ)します。スクリプトを選択し、3Dオブジェクト(この例ではBody1)にドラッグ&ドロップします。
7. スクリプトとテクスチャ画像を紐づける
Unityでは変数のアクセス修飾子をpublicにすると、インスペクター上で変数の紐づけを行うことができます。
Hierarchyウィンドウのスクリプトを紐づけた3Dオブジェクト(この例ではBody1)をクリックします。
Inspetorウィンドウを見ると、スクリプトに記載した変数が表示されています。変数の右の丸をクリックし、表示したいAlbedo画像を選択します。