Help us understand the problem. What is going on with this article?

UnityのMirrorRefrectionによる鏡の表現

More than 3 years have passed since last update.

MirrorRefrection

MirrorRefrectionは平面の鏡を表現するのに最適なアセットです。
以下のような特徴があります。

  • 動的な反射ができる
  • リフレクションプローブよりパフォーマンスコストが低い。
  • 平面の反射しか想定していない(球面とか無理)
  • 鏡にTextureを適用できる

MirrorRefrectionイメージ画像
わかりやすいように鏡(MirrorRefrectionを適用したPlane)に色をつけてます。Cubeが鏡に映っている様子がわかると思います。
anim.gif

余談ですが、ユニティちゃん Candy Rock Starのステージの床の反射にもこのアセットの技術が応用されているらしいです。
https://www.youtube.com/watch?v=M_GUlXJ52YA

MirrorRefrectionの使い方

http://wiki.unity3d.com/index.php/MirrorReflection4

  1. 上記リンク先からMirror.shaderと、MirrorReflection.csをコピペしてきます。
  2. Materialを作成して1.で作成したshaderを割り振ります。
  3. Scene上にPlane等の平面のオブジェクトを配置します。
  4. PlaneのMaterialを2.で作成したMaterialに差し替えます。
  5. PlaneにMirrorReflection.csをアタッチします。

上記の手順を踏むと鏡ができます。尚、MirrorRefrectionは平面のオブジェクト(Plane,Quad等)を想定して作られているので、平面以外ではうまく動きません。
またマテリアルのMainTextureに任意のテクスチャをセットすると、そのTextureが反映された鏡ができます。

MirrorRefrectionが何をしているか

MirrorRefrectionがやっていることをざっくり言うと、RenderTextureを生成する反射カメラを常にメインカメラから見て反射の位置関係にしておくことで、あたかも鏡を見ているかのようなTextureを見せているという仕組みです。

refrection.002.png

ソースコード解説

全部説明すると長くて面倒なので概要のみにします。

MirrorReflection.cs

上記ソースコードは鏡に映すRenderTextureを生成します。
RenderTextureは、MainCameraと反射面に対して反射の位置関係にあるRefrection Cameraから作られます。

MirrorReflection.shader

上記シェーダーは、鏡に適応したTextureに対して反射の効果(MirrorReflection.csで生成したRenderTexture)を掛け合わせています。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした