Unity+Oculus+MMD とりあえず書き留めておく場所

Unity+Oculus+MMD VRでキャラクターと遊ぶ

7. Unityの照明効果①(Directional LightとSkyBox)

今回からは、Unityの照明効果について説明します。

Unityの照明は…沼もいいところ…MMDとは比較にならないレベルの色んなことが出来ます。

しかしそれを全部説明など到底無理…

とりあえずのざっくり説明(それでも長い)をさせていただきます。

Unityの照明

Unityは何種類かの照明があります。

まず、最初からSceneに存在していた「Directional Light」をHierarchy上で選択してみましょう。

f:id:emifuwa:20171127103915j:plain

太陽のマークで示されているのが、Directional Lightです。

Directional Light

Unityの世界を照らす、基本となる照明です。MMDの照明に近いです。

他のオブジェクトと同じように位置情報を持っていますが、どこに位置していても光の強さは変わらず、設定した方向に均一に世界を照らします。Inspectorで光の強さの情報を変えることによって、明るさが変化します。

なので、邪魔だと思ったら方向だけ決めて遠くに置いておいてもいいし、細かく調整する時だけ近くに持ってきておいてもいいです。重要なのは方向だけです。

これがないと世界は暗い状態になってしまいますが、室内を表現する時などは、Directional Lightを削除して他のライト複数で表現したりもします。

f:id:emifuwa:20171127110122j:plain

※説明がわかりやすいようにInspectorをSceneの下に持ってきました

黄色いラインで構成された物体が、光の方向を表しています。

TransformコンポーネントのRotation(角度)を数値入力することによって、光の当たる向きを変えることが出来ます。

f:id:emifuwa:20171127110331j:plain

また、もちろんSceneビュー上の操作ツール「回転」を使用することでも、見た目わかりやすく光の当たり具合を調節することができます。

f:id:emifuwa:20171127110624j:plain

 

Directional Lightのパラメータ設定

では、Hierarchy上でDirectional Lightを選択し、Inspectorを見てみましょう。

様々な項目がありますが、重要なものだけを説明します。

(※Unityのバージョンによって、ここにある項目があったりなかったり別の名前だったりします…超重要なものは変わってないので、違ってたら自力で調べるなどしてください…)

f:id:emifuwa:20171127124310j:plain

Type照明のタイプの切り替えが出来ます。

※ここで照明を「SpotLight」に切り替えたとしても、Hierarchy上での名前は「DirectinalLight」のままです。気をつけましょう。

Color:色のバーの部分をクリックするとカラーピッカーが出現し、照明の色が変えられます。右にあるスポイトをクリックすると、画面上の色を拾ってくることが出来ます。

現在、光の角度とプロシージャル機能のために夕焼けのような画面になっていますが、この状態でColorをグリーンにすると、こんな感じになります。

f:id:emifuwa:20171127122600j:plain

Mode:ここではとりあえずRealtimeにしておいてください。

Intensity光の強さです。暗くしたい時は値を小さく、明るくしたい時は大きく。

Shadow Type:影の落ち具合を選べます。

画像でわかりやすくするため、Sceneに「Plane」というオブジェクトを追加しましょう。

Hierarchy上で右クリック→「3D Object」「Plane」です。

変な場所に出現したら、PlaneのTransformコンポーネントで、PositionのXYZの値を全部0にしてください。

全部ゼロを入力すると、床のように配置され、モデルの影が落ちます。

f:id:emifuwa:20171127125614j:plain

NoShadow:影が落ちません。

HardShadow:輪郭のはっきりした影が落ちます。

SoftShadow:輪郭がふわっとした影が落ちます(Hardより少し重い)。

この下のStrengthという設定で、影の濃さを調整できます。

Resolution:カメラのレンダリングの解像度のレベルを選べます。要するにキレイにするかどうかってことです。一番高いVery Highにしておきましょう。

SkyBoxについて

ここに映っている空は「Sky Box」という、MMDで言うところのスカイドームのようなものです。アセットストアなどで様々なものが入手できますが、ここで使用しているデフォルトのSky Boxには、Unity5から使えるようになった「procedural(プロシージャル)」という機能が適用されており、設定すると光の角度によって空や太陽の色が変化したりします。

これが設定されていないSkyBoxは、角度によって上のように空の色が変化したりはしません(自力で設定をすることは出来ます)。

Unityの照明効果とSkyBoxは密接に関わっているため、今回はSkyBoxについても説明していきたいと思います。

そのための下準備。また新しいウィンドウを増やします。

Lightingタブを設置

メニューバー「Window」→「Lighting」→「Setting」で「Lighting」タブが出てきます(もしかすると最初から表示されていることもあるかもしれません)

f:id:emifuwa:20171127115143j:plain

SkyBoxの差し替えや細かい設定はこのタブで行います。

使いやすいように、タブの名前のところをマウスで掴んで、Inspectorタブの横に仕舞っておきましょう。

f:id:emifuwa:20171127115521j:plain

普段はInspectorの方を前に出しておいて、必要な時に開く感じで。

Lightingの設定(EnvironmentLightingとSkyBox)

世界を照らす光がDirectionalLightのような直接光だけなら、真っ暗な部屋で窓を少しだけ開けると、光がまっすぐに入ってきて、空いた窓の形に四角く光が入るはずです。

ですが、実際は「照り返し」があるので、ふわっとその周囲も明るくなりますね。これが間接光です。

Lightingタブでは、直接の光源となる光ではなく、面から面へ光がどのように反射拡散するかをシミュレートした間接光(環境光)の設定を行います。 

Lightingタブを見ると、一番上に「Environment(環境)」と書かれていますね(Ambient Lightと表現している場合もあります)。

f:id:emifuwa:20171127152621j:plain

まず最初に「SkyBox Material」という項目があります。

ここにSkyBoxのマテリアルを入れることによって、Sceneに空の映像が適用されます。

最初に入っているのは「Default-SkyBox」というものです。

この時点ではSkyBoxは二種類しか入っていないので、それ以外のものはアセットストアで、最初は無料のものを中心に入手すると良いでしょう。

「テクスチャ&マテリアル」という分類で見つかると思います。

とりあえずこのあたりとか…

https://www.assetstore.unity3d.com/jp/#!/content/61217

https://www.assetstore.unity3d.com/jp/#!/content/21737

※パノラマ画像の素材を入手すれば、そこから自分でSkyBoxを作ることも出来ます(のちほど機会があれば説明します)。

インポートしたら、いつものように右の選択ボタンから指定するか、フォルダの中から直接D&Dしてもいいです。

※「Sun Source」の項目にDirectinalLightを設定しておくと、DirectinalLightのある位置に太陽が出ます。 

SkyBoxの下に「Environment Lighting」「Environment Reflection(反射)」という項目があります。

どちらも、Sourceという項目に「SkyBox」が選ばれています。

Reflectionは反射で、「反射で映り込むものを何にするか」の設定。

両方とも「SkyBox」にすると、SkyBoxの素材を利用した光源となり、自動でなんかいい感じにしてくれます。

それはそれでいいんですけど、ちょっと別の雰囲気を出したい場合。

「Environment Lighting」の方のSourceを「Gradient」「Color」にすると、だいぶ違うビジュアルになります。

f:id:emifuwa:20171127155538j:plain

「Gradient」にすると、空の光色、地平線の光色、地面の光色を設定できます。地面のグリーンの光がモデルの顎のあたりに照り返しているのがわかりますね。

「Color」は単色に設定できます。

Inspectorの方でDirectionalLightの色自体を変えると画像のようになるので、直接光(Light)と間接光(環境光)は違うのがわかります。

f:id:emifuwa:20171127160416j:plain

「Environment Reflection」の方はここでは詳しくやりませんが、例えば表面が鏡面のような物体にあらかじめそれ用の画像を設定したりするのに使います。