バーチャル3Dクリエイター神部まゆみです(*^-^*)
この記事は、blenderとunityの鏡面反射について調べて動かしてみた備忘録です。
要は鏡の作り方なんだけど、案外簡単にできました。
シェーダーいじったりしないと作れないのかと思ってたけど、そうでもないっぽい。
いくつかやり方はあるみたいだけど、今回のやり方は簡単にできました。
動作確認した最新バージョンはblender 4.5です。
blenderは「反射平面」を追加すると鏡面反射するらしい
blenderのバージョンによって名前が変わってるので注意。
反射平面を追加して、反射させたい方向に矢印を向ける
blender 3前後あたり?だと反射平面って名前でした。



blender 4.5だと単に「平面」って名前になってました。



これだけでも反射はするんだろうけど、立方体を鏡の枠みたいにしてみる。
反射平面は矢印を向いている方に反射するようなので、回転させて向きを調整します。



プレビュー平面にチェックを入れたら表示された!
鏡のアイコンのメニューで、「プレビュー平面」ってのをクリックすると、3Dビューに鏡面反射が反映されるみたい。



blender4.5では「キャプチャ」になってました。



これで表示されたぞ( *´艸`)



難しいと思ってたけど、こんな簡単にできるとはΣ(゚Д゚)
複雑なシェーダーノードを組む必要があると思ってたから、簡単にできて拍子抜けした( ̄▽ ̄;)
絵的にもハッタリが効きそうだから多用してもいいかもしれない。
なんか凄そうに見えるし、技術力のある人に見えそう。たぶん(笑)。
unityで鏡面反射するにはリフレクションプローブを使う
リフレクションプローブを追加して、反射マテリアルを作ると鏡面反射させられます。
スタンダードシェーダーでマテリアルを作る
スタンダードシェーダーでマテリアルを作り、スムースネスとメタリックを1にする。



けどこの段階ではまだ反射しない。
でもこれでアルベドのアルファ値を0にすると透明になるので、窓ガラスとかには使えるっぽい。
光は反射するっぽい?ので、窓ガラスっぽくなるらしい。
リフレクションプローブを追加してミラーと同じ位置に配置
反射させるにはリフレクションプローブを追加する必要がある。
ミラーと同じくらいの位置に配置します。
ちょっと表示がおかしい?位置や解像度を調整する
やってみたけど…横や後ろには映ってるっぽい?けど、なんか設定がおかしいのかもしれない。
んー、もう少し設定をいじってみたほうがいいかも。
あ!ちょっと近すぎたことが原因っぽい。キャラを鏡から離したら映った。



解像度が低いからパラメーターで上げるといいっぽいです。結局解像度2048まで上げました。



お、いい感じになったかも。
これでも大きく映りすぎな気がするけど、どこかのパラメーターをいじる感じかな?



あれ、シーンビューだから大きく映ってるだけで、カメラからのゲームビューなら適正サイズで表示されてるっぽいです。
じゃあこれでいいのかな。



ボックスプロジェクションにチェックを入れると良い感じのサイズで映った
ボックスプロジェクションのチェックを入れたらいい感じのサイズ感で映った!



これボックスのサイズを変えられるから、表示がおかしかったらそのあたりいじると良いかも。
ThirdPersonUserControlスクリプトで動かしたら、無事にできた!
近付いても遠くなってもちゃんと映ってる( *´艸`)



Starter Assetsを使えばこんな感じで手軽に動かせます。
それにしてもガチ恋距離は破壊力あるな…我ながらドキッとした(*ノωノ)
これだからunityはやめられませんね( *´艸`)
せっかくだから鏡の前でポーズを取ってみる(笑)
うんいい。じつにいい。気に入った( *´艸`)



アニメーションはVeryAnimationで簡単に作りました。これ手軽に作れるから便利。
Very Animation|Unity Asset Store
なんか鏡の前でえっちなことしてるシチュエーションに使えそう(笑)。
追記:うまく動作しない時はライトマップの生成?をやったらうまくいった
久々にいじってみたらスカイボックスの風景しか映らない不具合が発生したけど、



新しいライティング設定を作ってライティングの設定をやり直したらちゃんと映るようになった。






表示がおかしくなったら生成し直すと良いかもしれない。



というか自動生成にチェック入れとけば自動でやってくれるけど、重くなるのでマシンスペックないときつそう?



あと距離感がおかしい時はボックスサイズ調整すると良い感じっぽい。



追記終わり。
まとめ
難しいと思ってたけど案外簡単にできた。
ただ、リアルタイムで表示させまくってると結構重くなるかも?
ゲームとかで使う場合は負荷も考えたほうがいいかもしれない。
次は光の感じを少し勉強したいな。
ランプから光が漏れて透過する感じの、ガラスみたいな感じの。
CG Geek氏のチュートリアルでそのあたりをやっているので、続きをやるために勉強していこうと思います。
追記:ビルドしたらリアルタイム反射しなくなった(-_-;)
この記事に書いたやつはビルドせずにエディターで動かしてただけなんだけど、ビルドしてみたらリアルタイム反射しなくなって詰まった(゚Д゚;)
設定次第っぽいけど…どうだろ。
その後いじってみたところ、ビルドのパフォーマンス設定が原因だったみたい。
リアルタイム反射は重くなるので、低品質やモバイル向けの場合は自動でベイクになるから動かなくなるっぽい。
また何かあれば追記します(*^_^*)