Unityで3Dゲームを作っていると、たまに
と思うことがあります。実はUnityにはこれを簡単に行うことができる「Render Texture」(レンダーテクスチャ)という特殊なテクスチャがあるのですが、
- そんなの初めて聞いたよ
- 知ってるけど、いまいち使い方がよく分からないんだよな
- 一体何に使えるんだろう?
と思っていらっしゃる方も多いのではないでしょうか。
そこでここではこのRender Textureについて
- 基本的な使い方
- 主な応用例
といったことを丁寧に解説していきますね。
Render Textureとは?
まずはじめに「Render Textureとは何か?」という部分を簡潔に説明しようと思います。
Render Textureは一言でいえばカメラの映像をリアルタイムに投影できるテクスチャのことです。サンプルとして次のGIFをご覧ください。
左側は単純な3Dモデルなのですが、その表面にRender Textureを貼ることでゲーム内で「モニター画面のような表現」を実現しています。
普通、カメラの映像はスクリーンに出力されるのですが、出力先をRender Textureに変更することで上のGIFのようにリアルタイムにカメラの映像を投影するテクスチャを実現することができます。そしてもちろんRender Textureはテクスチャの一種なので3Dモデルの表面に貼り付けることができ、工夫次第では面白い表現が可能です。
ちなみに注意点ですが、Render Textureは圧縮されないらしくメモリを食いやすいので乱用しないようにしたほうがよいと思います。あくまでもゲームのアクセントとして使いましょう。
Render Textureの使い方
ではここからが本題で、Render Textureの基本的な使い方を説明します。Render Textureを3Dモデルの表面に貼り付けるまでの主な手順は次のとおりです。
- 新しいRender Textureを作成する
- 新しいカメラを作り、出力先にRender Textureを指定する
- 新しいマテリアルを作り、テクスチャ欄にRender Textureを指定する
それぞれ詳しく見ていきましょう。
手順1:新しい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のディスプレイやテレビ等)の表現
- ミニマップ
- 異世界につながるポータル
まずは冒頭のサンプルのようなモニター画面の表現に使えますし、意外なところだとミニマップの表示に活用できたりもします。ミニマップへの応用の具体的なやり方は下記ページで詳しく解説しているので、ご興味がありましたら併せてご覧いただければと思います。
あとは(文章だと分かりづらいですが)例えばドラえもんの「どこでもドア」のように全く別の場所につながっているポータルの表現とかにも使えますね。面白い表現に使えるのでぜひご活用ください。
おわりに
以上、ごく簡単ではありますがRender Textureの基本的な使い方や応用例について説明しました。
一見すると少しややこしそうな印象があるテクスチャ機能だと思いますが、実際はかなり簡単に使うことができて面白い機能なのでぜひ一度お試しいただければと思います。
この記事がUnityでのゲーム開発のお役に立てば幸いです。