バーチャル3Dクリエイター神部まゆみです(*^-^*)
この記事は、blenderとunityの鏡面反射について調べて動かしてみた備忘録です。
要は鏡の作り方なんだけど、案外簡単にできました。
シェーダーいじったりしないと作れないのかと思ってたけど、そうでもないっぽい。
いくつかやり方はあるみたいだけど、今回のやり方は簡単にできました。
参考にできそうなところがあれば参考にしてね。
blenderは「反射平面」を追加すると鏡面反射するらしい
こちらの先輩のページが参考になりました。
ありがとうございます(*^-^*)

blenderの使用バージョンは2.93です。
反射平面を追加して、反射させたい方向に矢印を向ける
反射平面ってのはこれです。
これだけでも反射はするんだろうけど、立方体を鏡の枠みたいにしてみる。
反射平面は矢印を向いている方に反射するようなので、回転させて向きを調整します。
プレビュー平面にチェックを入れたら表示された!
鏡のアイコンのメニューで、「プレビュー平面」ってのをクリックすると、3Dビューに鏡面反射が反映されるみたい。
これで表示されたぞ( *´艸`)
難しいと思ってたけど、こんな簡単にできるとはΣ(゚Д゚)
複雑なシェーダーノードを組む必要があると思ってたから、簡単にできて拍子抜けした( ̄▽ ̄;)
絵的にもハッタリが効きそうだから多用してもいいかもしれない。
なんか凄そうに見えるし、技術力のある人に見えそう。たぶん(笑)。
unityで鏡面反射するにはリフレクションプローブを使う
こちらの先輩のページが参考になりました。
ありがとうございます(*^-^*)




先輩のページによると、unityで鏡を作るにはいくつかやり方があるみたい。
でもこのやり方が簡単そうなので、これでやってみます。
スタンダードシェーダーでマテリアルを作る
スタンダードシェーダーでマテリアルを作り、スムースネスとメタリックを1にする。
けどこの段階ではまだ反射しない。
でもこれでアルベドのアルファ値を0にすると透明になるので、窓ガラスとかには使えるっぽいです。
光は反射するっぽい?ので、窓ガラスっぽくなるらしい。
リフレクションプローブを追加してミラーと同じ位置に配置
反射させるにはリフレクションプローブを追加する必要がある。
ちょっと表示がおかしい?位置や解像度を調整する
やってみたけど…横や後ろには映ってるっぽい?けど、なんか設定がおかしいのかもしれない。
あ!ちょっと近すぎたことが原因っぽい。キャラを鏡から離したら映った。
解像度が低いからパラメーターで上げるといいっぽいです。結局2048まで上げた。
お、いい感じになったかも。
これでも大きく映りすぎな気がするけど、どこかのパラメーターをいじる感じかな?
あれ、シーンビューだから大きく映ってるだけで、カメラからのゲームビューなら適正サイズで表示されてるっぽいです。
じゃあこれでいいのかな。
ボックスプロジェクションにチェックを入れると良い感じのサイズで映った
ボックスプロジェクションのチェックを入れたらいい感じのサイズ感で映った!
これボックスのサイズを変えられるから、表示がおかしかったらそのあたりいじると良いかも。
ThirdPersonUserControlスクリプトで動かしたら、無事にできた!
近付いても遠くなってもちゃんと映ってる( *´艸`)
これはスタンダードアセットに入ってる ThirdPersonUserControl スクリプトを入れて動かしました。
それにしてもガチ恋距離は破壊力あるな…我ながらドキッとした(*ノωノ)
これだからunityはやめられませんね( *´艸`)
せっかくだから鏡の前でポーズを取ってみる(笑)
うんいい。じつにいい。気に入った( *´艸`)
アニメーションはVeryAnimationで簡単に作りました。これ手軽に作れるから便利。
Very Animation|Unity Asset Store
なんか鏡の前でえっちなことしてるシチュエーションに使えそう(笑)。
2023/06/07追記:うまく動作しない時はライトマップの生成?をやったらうまくいった
久々にいじってみたらスカイボックスの風景しか映らない不具合が発生したけど、
新しいライティング設定を作ってライティングの設定をやり直したらちゃんと映るようになった。
表示がおかしくなったら生成し直すと良いかもしれない。
というか自動生成にチェック入れとけば自動でやってくれるか(;^_^A
久々にいじると忘れるね(;^_^A
あと距離感がおかしい時はボックスサイズ調整すると良い感じっぽい。
追記終わり。
まとめ
難しいと思ってたけど案外簡単にできるっぽいです。
ただ、リアルタイムで表示させまくってると結構重くなるかも?
ゲームとかで使う場合は負荷も考えたほうがいいかもしれない。
次は光の感じを少し勉強したいな。
ランプから光が漏れて透過する感じの、ガラスみたいな感じの。
CG Geek氏のチュートリアルでそのあたりをやっているので、続きをやるために勉強していこうと思います。



2022/02/16追記:ビルドしたらリアルタイム反射しなくなった(-_-;)
この記事に書いたやつはビルドせずにエディターで動かしてただけなんだけど、ビルドしてみたらリアルタイム反射しなくなって詰まった(゚Д゚;)
設定次第っぽいけど…どうだろ。



今のところリアルタイムじゃない静的(static)にしたオブジェクトは、ちゃんとWebGLでも表示されてるけど。
まぁ解決したら後で追記しときます。