[Unity] Render Textureを使って、擬似的に鏡を表現する方法

では早速、疑似的に鏡を表現する方法はというと、、

  1. 鏡として見立てるオブジェクトを配置(Cubeでも何でも平面ならOK)
  2. 「Assets->Create->Render Texture」と選択して作成
  3. 2.で作成した Render Texture のSizeを「1024 x 1024」に変更
  4. Hierarchyビューにある1.で作成したオブジェクトに、ProjectビューにあるRender Texture をドラッグアンドドロップで設定
  5. 「GameObject->Camera」を選択して、サブカメラを作成
  6. 5.で作成したサブカメラを、鏡の位置から写すように配置
  7. サブカメラの「Target Texture」に、2. で作成したRender Textureを設定
  8. 1. で作成した鏡の Scale.X の値を反転して、マイナス値に変更

ざっと、こんな形で擬似的な鏡が出来上がると思います。ここまで書いてふと気付きましたが、ノンコーディングでいけましたね。

あとは諸々細かい調整してもらえれば良いかと。例えば、Render Texture の Sizeを下げると画質が粗くなりますし、Camera の Size を変更すれば写す範囲が変わったり等々できます。

ただ、リアルタイムに描画することになるので負荷が高くなるのでその辺りは注意しておきたいですね。

その他、鏡を表現する方法としては「アセットを買う(あるのかな?)」か、「シェーダーで反射鏡面を表現」する方法があるかと思います。前者は置いといて、後者に関してはどこかから拝借してくるのがよい感じでしょうか。シェーダーはあまりよく分かってないですが、時間が出来たら調べてみようと考えています。鏡シェーダーはもしかしたらUnity標準で提供されているかもしれないですし。

それで、話は戻りますが、この擬似的に鏡を表現する方法は、ライブのバックスクリーンに映像を表示するのにも使えるみたいなのでそっちの用途が主流だと思われます。(その場合、Scale.Xの値を反転する必要はなさそうかなと)

スポンサーリンク