イネ科

すっぺらぴっちょん

RenderTextureで実装する簡易鏡

概要

鏡もどきを簡単に実装する知見です。現実の鏡とは違い、どちらかと言えばカメラの映像を映した液晶ディスプレイ。RenderTextureを用いる事で、そのまま写真撮影にも応用できるので、そういった使い方をするのであれば、この手法がおすすめです。カメラのFOVも好きに調整できるので、平面的な写真が撮りやすい鏡も作れます。(FOVが低いほど平面的に写せてよい感じになる。)

実装方法

1.RenderTextureを作成。サイズは任意に変更。

f:id:sesleria:20190503134641p:plain:w400

2.Materialを作成。Albedoに1で作成したRenderTextureを設定し。ShaderStandardからLegacy Shaders/Self-Illumin/VertexLitに変更することで、明るく良い感じに表示される。

参考:フォーラムの情報

f:id:sesleria:20190503134657p:plain:w400

f:id:sesleria:20190413015403p:plain:w200f:id:sesleria:20190503135545p:plain:w200

※StandardとLitの違い

3.鏡に映すためのカメラを作成。TargetTextureに1で作成したRenderTextureをアタッチする。

4.Quadを作成。SizePositionを調整する。2で作成したMaterialを設定。拡大/縮小Xがマイナスになっているのは、鏡のように反転させるため。

f:id:sesleria:20190503134652p:plain:w400

5.Quadの子オブジェクトにCameraを設定、PositionfieldOfViewnearClipPlaneを調整する。Quadにカメラの映像が写っていれば完成。 f:id:sesleria:20190503140859p:plain:w400

カメラのPositionを計算する方法についてはこちらを参照

完成イメージ

f:id:sesleria:20190503144727g:plain:w400

以下はFOV30のカメラを使用してRenderTextureをPNG保存したものです。PNG化についてはRenderTexture png 保存とかでぐぐれば出てくるので割愛します。この鏡の実装について書いたのは、RenderTextureを適用したMaterialのShader設定について記述している記事が殆ど無かった為です。暗くて泣いていたUnity初心者はきっと私だけなのでしょう。

f:id:sesleria:20190503134704p:plain:w400

f:id:sesleria:20190503134707p:plain:w400