はらけんログ

unity触ったりバイクに乗ったり

【Unity】RenderTextureとプロジェクターについて

 

前回の記事で書いたように「Textureを変えずに文字をマテリアルに映す」方法で、TextMeshを使わないバージョンも書いときます。

haraken.hatenablog.com

 

 

 

今回使うのはunityのRenderTextureとプロジェクターです。

 

今回のやり方は、TextMeshを使う方法より綺麗に映せます。

っていうのも、TextMeshはMeshが平らなので、曲がった面に張り付けようとすると変な感じになってしまいます。

 

f:id:HarakeN:20161130200612p:plain

 

 

しかし、プロジェクタなら曲がった面にしっかり張り付きます。

 

f:id:HarakeN:20161130200628p:plain

 

 

ただ、プロジェクターはLightingに左右されるので、調整する箇所がいくつかあって、めんどい。はっきり見せたい場合、しっかり作りこむ必要がありますが、今回はそこまでやりません。

 

 

 

では、プロジェクタの使用方法です。

 

 

まず、StandardAssetをインポートしてくださいな。

これがプロジェクタのプレハブなので、これをドラッグアンドドロップなどで生成してね。

f:id:HarakeN:20161130201655p:plain

 

 

インスペクターのMaterialsの部分がプロジェクタが映すマテリアルになる。

 

f:id:HarakeN:20161130202020p:plain

 

 

 

どうやってScene内の映像を映すのさ!?

 

 

簡単です。

登場、「Render Texture

 

 

Render Textureはカメラで見た映像をTextureにしてくれるものです。(本当は違う用途にもできます)

 

プロジェクトからRender Textureを作って、ヒエラルキーから新しく作ったカメラにアタッチしてください。

f:id:HarakeN:20161130202555p:plain

f:id:HarakeN:20161130202600p:plain

 

 

これで自分が投影したい映像をカメラに見せることで、それがTextureになります。

f:id:HarakeN:20161130204255p:plain

 

 

んで、新しいマテリアルを作成し、シェーダーをプロジェクターに設定して、さっきのRender Textureをアタッチ。

f:id:HarakeN:20161130204715p:plain

 

 

これをプロジェクターのMaterialsに突っ込めば終了。

 

 

 

シェーダーの部分をProjector/Multiplyを利用するとプロジェクタでもはっきり見えるようになるが、やり方は書くのめんどいので察してくれ。