[Shader][Unity]額縁に入った絵の3Dモデルのテクスチャをshaderで書き換える

Unityの空間に絵画の3Dモデルを配置するときに、絵の部分を置き換えたいということは多々あると思います。単純にPlaneを絵の上に重ねればそれで解決はしますが、今回は勉強も兼ねてshaderで実装していこうと思います。

1. 3Dモデルのダウンロード

まずは、元となるフレーム付きの3Dモデルを探してきます。今回はUnity Asset StoreにあるPicture frames with photosを利用します。

イメージ画像を見ると、いろいろな写真をフレームに配置することが出来そうなアセットですが、実際は写真ごとにフレーム込みのテクスチャが用意されています。そのため、中の写真を入れ替えることは出来ません。



今回はこのテクスチャの写真部分をshaderを用いて置き換えます。

2. Shaderファイルの作成

ベースとなるテクスチャの写真部分を任意の画像に置き換えます。今回は幸いなことに、テクスチャが綺麗な矩形で領域が分けられているので簡単に実装することが出来ます。



3.マテリアルの作成

Unity上で新規のマテリアルを作成し、shaderとして、先ほど作成したPhotoFrameShaderを指定します。
Textureに設定したい画像、BaseTextureにPicture frames with photosのTexturesのテクスチャを設定します。
作成したマテリアルを、元のprefabに設定すればこの画像のようにフレーム内の画像を置き換えることが出来ます。



コメントを残す

メールアドレスが公開されることはありません。