見出し画像

RenderTextureで作る監視カメラギミック

あいさつ

こんにちは。clusterでワールド制作をしている41h0です。

今回Cluster Creator Advent Calendar 2021の21日目の記事を書くことになりました。(アドベントカレンダーの記事書くの初めて)
テーマをいろいろ悩んだのですが、最近ちょいちょい触っているRenderTextureの解説をすることにしました。文才はあまりないですがよければお付き合いください。
(正直あんまり良いネタを思いつかなかったのでゆ〇ゆ〇勉強会の焼き直しなところもあります。ご了承ください...)

RenderTextureとは?

そもそもRenderTextureとはなんなのでしょう?
普段マテリアルに設定してモデルに貼り付けているテクスチャと何が違うのでしょうか?

Unityのドキュメントには
「Render Texture (レンダーテクスチャ) は、ランタイムに作成、更新される特殊な テクスチャ です」と説明があります。
https://docs.unity3d.com/ja/2018.4/Manual/class-RenderTexture.html

言い換えるとワールドアップロードした後もランタイム(ワールドにプレイヤーがいる間)に表示するものを変更できるテクスチャということです。(自由自在とはいかないですが)

RenderTextureを上手く使えば写真を生成したり、ワールドを中継するカメラが作れたり、
ワールド制作者が用意した動画をメッシュの形に合わせて流したり、UIで画像ではなく動画を表示できたりします。

画像1

センター・オブ・ジ・アークの最後で撮られる写真もRenderTextureを活用した撮影ギミックを使っています。
https://cluster.mu/w/39e99ad2-8ee3-4a91-a633-6aa9cb920a0e

せっかくなので今回はイベントやワールドのセキュリティ向上?も目指して
RenderTextureを使って監視カメラを作ってみましょう。

RenderTextureで監視カメラを作る

まず監視カメラを設置するワールドのモデルを作ります。
私は残念ながらモデリングの才はないのでいつも建物を作るときはSweet Home 3D(http://www.sweethome3d.com/ja/)を利用しています。無料ツールなので簡単な建物を作りたいときはおすすめです。
カメラはなかったですが、机と椅子とモニターとドアはあったため、一緒に作成しておきました。

画像2

画像3

監視カメラのモデルを作ります。再度になりますが私にモデリングの才はないためオブジェクトを組み合わせてそれっぽい形を作っただけのものになります。

画像4

カメラの映像出力用のRenderTextureを作成します。
作り方はプロジェクトタブ上でCreateを選んでRenderTextureを選択すればOKです。

画像5

監視カメラにCemraコンポーネントをつけます。
そしてCemraコンポーネントのTargetTextureに先ほど作成したRenderTextureを設定します。

画像6

そしてモニターのマテリアルにRenderTextureを設定すれば完成です。

画像7

ワールドアップロードしてみるとこんな感じ。
(Denikさんに撮影をご協力いただきました。)

画像8

今回はカメラを固定してあるので監視カメラとなっていますが、手で持つカメラにすれば中継カメラにもなります。
あとはカメラの映像を出力する前にシェーダーで出力内容を加工することも頑張ればできるはず...

このようにちょっと加工するだけで便利なギミックになるのでぜひRenderTextureで色々遊んでみてください。

今回作ったワールドは以下
https://cluster.mu/w/bef2f325-07c4-44ae-b356-da92a81598b9

この記事が気に入ったらサポートをしてみませんか?