今回は41h0さんによる記事「RenderTextureで作る監視カメラギミック」を転載します。
色々なギミックに応用できるテクニックなので、ぜひ参考にしてみてください!
Render Textureの基本的な使い方はこちらの記事でも紹介しています。
あいさつ
こんにちは。clusterでワールド制作をしている41h0です。
今回Cluster Creator Advent Calendar 2021の21日目の記事を書くことになりました。(アドベントカレンダーの記事書くの初めて)
テーマをいろいろ悩んだのですが、最近ちょいちょい触っているRenderTextureの解説をすることにしました。文才はあまりないですがよければお付き合いください。
(正直あんまり良いネタを思いつかなかったのでゆ〇ゆ〇勉強会の焼き直しなところもあります。ご了承ください…)
RenderTextureとは?
そもそもRenderTextureとはなんなのでしょう?
普段マテリアルに設定してモデルに貼り付けているテクスチャと何が違うのでしょうか?
Unityのドキュメントには
「Render Texture(レンダーテクスチャ)は、ランタイムに作成、更新される特殊な テクスチャ です」と説明があります。
https://docs.unity3d.com/ja/2021.3/Manual/class-RenderTexture.html
言い換えるとワールドアップロードした後もランタイム(ワールドにプレイヤーがいる間)に表示するものを変更できるテクスチャということです。(自由自在とはいかないですが)
RenderTextureを上手く使えば写真を生成したり、ワールドを中継するカメラが作れたり、
ワールド制作者が用意した動画をメッシュの形に合わせて流したり、UIで画像ではなく動画を表示できたりします。
センター・オブ・ジ・アークの最後で撮られる写真もRenderTextureを活用した撮影ギミックを使っています。

せっかくなので今回はイベントやワールドのセキュリティ向上?も目指して
RenderTextureを使って監視カメラを作ってみましょう。
RenderTextureで監視カメラを作る
まず監視カメラを設置するワールドのモデルを作ります。
私は残念ながらモデリングの才はないのでいつも建物を作るときはSweet Home 3D(http://www.sweethome3d.com/ja/)を利用しています。無料ツールなので簡単な建物を作りたいときはおすすめです。
カメラはなかったですが、机と椅子とモニターとドアはあったため、一緒に作成しておきました。
監視カメラのモデルを作ります。再度になりますが私にモデリングの才はないためオブジェクトを組み合わせてそれっぽい形を作っただけのものになります。
カメラの映像出力用のRenderTextureを作成します。
作り方はプロジェクトタブ上でCreateを選んでRenderTextureを選択すればOKです。
監視カメラにCameraコンポーネントをつけます。
そしてCameraコンポーネントのTargetTextureに先ほど作成したRenderTextureを設定します。
そしてモニターのマテリアルにRenderTextureを設定すれば完成です。
ワールドアップロードしてみるとこんな感じ。
(Denikさんに撮影をご協力いただきました。)
今回はカメラを固定してあるので監視カメラとなっていますが、手で持つカメラにすれば中継カメラにもなります。
あとはカメラの映像を出力する前にシェーダーで出力内容を加工することも頑張ればできるはず…
このようにちょっと加工するだけで便利なギミックになるのでぜひRenderTextureで色々遊んでみてください。