Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9749

Unity上でPlayボタンを押すとオブジェクトのAlbedoが変わるスクリプト

$
0
0

やりたいこと

Fusion360で作成したオブジェクトと、Substance Painterで3DペイントしたテクスチャをUnityに取り込んで、Playボタンを押すとテクスチャが適用されるスクリプトを作成します。

流れ

  1. Fusion360でオブジェクトを作成して、FBXでエクスポートする
  2. RizomUVでUV展開する
  3. Substance Painterで3Dペイントして、Unity用にエクスポートする
  4. Unityでオブジェクトとテクスチャをインポートする
  5. Albedoを適用するスクリプトを作成する ← 今回の投稿の対象
  6. スクリプトとオブジェクトを紐づける ← 今回の投稿の対象
  7. スクリプトとテクスチャ画像を紐づける ← 今回の投稿の対象
  8. 実行ボタンを押すと、オブジェクトのAlbedoが変更される ← 今回の投稿の対象
  9. 実行ボタンを押すと、Albedoが変わる ← 今回の投稿の対象

詳細

3Dモデルやテクスチャの取込方法については、以下の投稿を参考にしてください。
Substance PainterでエクスポートしたテクスチャをUnityに取り込む

5. Albedoを適用するスクリプトを作成する

Hierarchyウィンドウの取り込んだオブジェクトをクリックし、InspectorウィンドウのAdd Component -> New Scriptを選択します。名称をtexture_changeに変更し、Create & addをクリックします。スクリプトが生成されました。
image.png

Assets内に生成されたスクリプトtexture_changeをダブルクリックし、Visual Studioを起動、以下のソースに変更し、保存します。

usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclasstexture_change:MonoBehaviour{// Start is called before the first frame update// スクリプトから画像を扱う場合に Texture または Spriteという形式に変換する必要がある// クラス変数として Texture型のクラス変数 wood_dark_AlbedoTransparencyを定義するpublicTexturewood_dark_AlbedoTransparency;voidStart(){GetComponent<Renderer>().material.mainTexture=wood_dark_AlbedoTransparency;}// Update is called once per framevoidUpdate(){}}

6. スクリプトとオブジェクトを紐づける

5で作成したスクリプトを3Dオブジェクトに関連付け(アタッチ)します。スクリプトを選択し、3Dオブジェクト(この例ではBody1)にドラッグ&ドロップします。
image.png

7. スクリプトとテクスチャ画像を紐づける

Unityでは変数のアクセス修飾子をpublicにすると、インスペクター上で変数の紐づけを行うことができます。
Hierarchyウィンドウのスクリプトを紐づけた3Dオブジェクト(この例ではBody1)をクリックします。
Inspetorウィンドウを見ると、スクリプトに記載した変数が表示されています。変数の右の丸をクリックし、表示したいAlbedo画像を選択します。
image.png
image.png

8. 実行ボタンを押すと、オブジェクトのAlbedoが変更される

image.png

image.png


Viewing all articles
Browse latest Browse all 9749

Trending Articles