【Unity】Render Textureの使い方!3Dモデルにカメラの映像を投影してみよう

Render Textureの使い方 Unity

Unityで3Dゲームを作っていると、たまに

テクスチャにカメラの映像を投影したい

と思うことがあります。実はUnityにはこれを簡単に行うことができる「Render Texture」(レンダーテクスチャ)という特殊なテクスチャがあるのですが、

  • そんなの初めて聞いたよ
  • 知ってるけど、いまいち使い方がよく分からないんだよな
  • 一体何に使えるんだろう?

と思っていらっしゃる方も多いのではないでしょうか。

そこでここではこのRender Textureについて

  • 基本的な使い方
  • 主な応用例

といったことを丁寧に解説していきますね。

Render Textureとは?

まずはじめに「Render Textureとは何か?」という部分を簡潔に説明しようと思います。

Render Textureは一言でいえばカメラの映像をリアルタイムに投影できるテクスチャのことです。サンプルとして次のGIFをご覧ください。

Render Textureの例

画像クリックでGIF再生

左側は単純な3Dモデルなのですが、その表面にRender Textureを貼ることでゲーム内で「モニター画面のような表現」を実現しています。

普通、カメラの映像はスクリーンに出力されるのですが、出力先をRender Textureに変更することで上のGIFのようにリアルタイムにカメラの映像を投影するテクスチャを実現することができます。そしてもちろんRender Textureはテクスチャの一種なので3Dモデルの表面に貼り付けることができ、工夫次第では面白い表現が可能です。

ちなみに注意点ですが、Render Textureは圧縮されないらしくメモリを食いやすいので乱用しないようにしたほうがよいと思います。あくまでもゲームのアクセントとして使いましょう。

Render Textureの使い方

ではここからが本題で、Render Textureの基本的な使い方を説明します。Render Textureを3Dモデルの表面に貼り付けるまでの主な手順は次のとおりです。

  1. 新しいRender Textureを作成する
  2. 新しいカメラを作り、出力先にRender Textureを指定する
  3. 新しいマテリアルを作り、テクスチャ欄にRender Textureを指定する

それぞれ詳しく見ていきましょう。

手順1:新しいRender Textureを作成する

まずは新しいRender Textureを作って設定を行います。プロジェクトビューの適当なフォルダのところで右クリック→「作成」→「レンダーテクスチャ」を選択して新しいRender Textureを作りましょう。

Render Textureの設定項目

インスペクターで見てみると色々と設定項目がありますが、一番重要なのが「サイズ」の項目です。ここには2のべき乗(128, 256, 512…)だけを指定できるのでご注意ください。また先ほど書いた通り、このテクスチャは圧縮できないのであまり大きいサイズにしないほうが良いかと思います。必要最低限のサイズを指定しましょう。

手順2:新しいカメラを作り、出力先にRender Textureを指定する

次に新しいカメラを作り、その映像の出力先に先ほど作ったRender Textureを指定します。メインカメラを投影用にしてしまうとスクリーンに何も映らなくなってしまいますので、別途カメラを作ってそちらを投影用にする必要があります。

新しいカメラを作ったらその出力先を変更しましょう。設定欄はお使いのプロジェクトのレンダリングパイプラインによって多少変わりますが、URPの場合は下の図のように「出力テクスチャ」欄があるはずです。

カメラの出力先の変更

ここに先ほどのRender Textureを指定してください。

手順3:新しいマテリアルを作り、テクスチャ欄にRender Textureを指定する

最後に、新しいマテリアルを作ってテクスチャ欄に先ほどのRender Textureを指定します。あとはこれを適当な3Dモデルに適用すればOKです。

Render Textureの主な応用例

さてRender Textureの基本的な使い方はこんなところですが、上にも書いた通り工夫次第で色々な用途に使えるので結構便利です。主な応用例として次のようなものが挙げられます。

  • モニター画面(PCのディスプレイやテレビ等)の表現
  • ミニマップ
  • 異世界につながるポータル

まずは冒頭のサンプルのようなモニター画面の表現に使えますし、意外なところだとミニマップの表示に活用できたりもします。ミニマップへの応用の具体的なやり方は下記ページで詳しく解説しているので、ご興味がありましたら併せてご覧いただければと思います。

【Unity】ミニマップの作り方!敵やアイテムの位置が一目で分かるようにしよう
Unityでゲームを作っていると、ゲーム画面に「ミニマップ」を表示させたくなる時があります。ミニマップとは例えば下の画像のようなやつですね。 これはUntiyなら比較的簡単に作れるのですが、そうは言っても初心者の方からしたら「...

あとは(文章だと分かりづらいですが)例えばドラえもんの「どこでもドア」のように全く別の場所につながっているポータルの表現とかにも使えますね。面白い表現に使えるのでぜひご活用ください。

おわりに

以上、ごく簡単ではありますがRender Textureの基本的な使い方や応用例について説明しました。

一見すると少しややこしそうな印象があるテクスチャ機能だと思いますが、実際はかなり簡単に使うことができて面白い機能なのでぜひ一度お試しいただければと思います。

この記事がUnityでのゲーム開発のお役に立てば幸いです。