Notifications
bg
ゆに丸1号
Community Mascot - Other
50
Likes
21
Followers
0
Connections
All
Articles2
Games0
Showcases0
Column2
Jobs0
【ライト周りの話】#8
この定期投稿では、これからUnityを始める人の助けになるような情報を伝えていきます。
バックナンバーはこちら:http://bit.ly/omanabi-back

今回は GI(グローバルイルミネーション) についてです。
Unity のライトは初期設定だとゲーム実行時にその場で計算してライトがどのように影響するかを決定します。それでもゲームを遊ぶのには問題ない見た目にはなるのですが、現実のライトと比較するといくつか違う点もあるようです。

例えば、

・現実のライトは何回も反射して直接当たったところ以外にも影響を与えますが、Unityのライトを真っ暗なシーンで使っても普通は光が当たったところだけ照らして、その周りには影響しません
・現実のライトはあるオブジェクトに光が当たったあとそのオブジェクトの色を周囲に反射して影響を与えますが、Unityのライトは普通影響しません

という違いがあります。
現実のライトだと柔らかい見た目になる、と言えるのかもしれませんし、逆にメリハリのある見た目が欲しい場合には普通のUnityのライトで良いのかもしれません。

GI はこういった現実に近い見た目のライトを再現するシステムです。詳しくは下記のページを読んでみてください!
https://docs.unity3d.com/ja/current/Manual/GIIntro.html

現実のライトに即した見た目にする計算はとても大変らしく、リアルタイムでその計算をすることは現時点ではできません。そのため、そのような見た目を実現するには事前に計算を行います。

これが昨日もチラッと触れたベイク(bake) です。
これをするとその時点のオブジェクトとライトの配置に応じてライトの計算を行い、結果をメモリかデータアセットに保存します。
動かないオブジェクトに対して行うのが前提であるため、ベイクを行いたいオブジェクトはインスペクターで Static にチェックを入れます。また、影響を与えたくないライトもあると思いますが、そのライトは Mode を Realtime に変更します。

ベイクは直近のバージョン(2018.2)だとオブジェクトを Static にするだけで起こるようです。そのままだと困るので自分でベイクタイミングを選びたい、という方はメニューから Window > Rendering > Lighting Settings を選択し、 Auto Generate を外してベイクしたいときに Generate Lighting を押してください。

なお、ベイク結果がメモリに乗るか、データアセットになるかは下記のページが参考になると思います。 Auto Generate が有効だとどうなるかも掲載されています。
https://qiita.com/Gok/items/b5bc1219a0a5303e2dcc

今回は以上です。明日は Enlighten、プログレッシブライトマッパー についてです。
結構穴あきの知識に基づいて書いているのでツッコミなどお待ちしてます!

【ライト周りの話】#7
この定期投稿では、これからUnityを始める人の助けになるような情報を伝えていきます。
バックナンバーはこちら:http://bit.ly/omanabi-back

今回はエリアライトと発光(Emissive)マテリアルについてです。

エリアライトというのは片面だけに光が投射されるライトです。発光する領域は板状に設定することができ、発光する方向はシーンビューで確認できます。動作を確認するには、これまで紹介したライトと同じく照らされるオブジェクトが必要になります。また、照らされるオブジェクトは static にする必要があるので注意しましょう。

発光マテリアルは Standard シェーダーの Emissive にチェックを入れ、色を設定するパネルから Intensity を 0 より大きくし、さらに static にすること有効になります。こちらはオブジェクト全体が発光するようになるので、複雑な形状にも対応することができます。

これらのライトを試しに配置した画像を添付しています。
結構綺麗、という印象を受けるかなと思います!

しかしこれらはバージョンによっては何も起こらなかったり、右下で何かバーが動いててエディタがカクついたり、変な絵が徐々に綺麗な絵になったり挙動が色々異なると思います。

これは、上記のライトは「ベイク」することではじめて有効になるもので、 Unity のバージョンや設定によってベイク方法が変わったりするためです。

明日からはこのベイクに関する話を見ていきます!

ちなみに、ベイクとかせずにエリアライトの形状のライトだけ使いたいという方向けのプラグインがあります。
https://github.com/Unity-Technologies/VolumetricLighting

これはリアルタイムで動くしボリュームライトもあるというUnityから出ている良さげプラグインなのですが、ボクの環境ではなぜかボリュームライトが動かず何度かシーンをロードすると表示がバグったりしたので環境によっては動作しないとかあるのかもしれません。

今日はここまでです。
質問やコメントお待ちしてます!

【ライト周りの話】#6
この定期投稿では、これからUnityを始める人の助けになるような情報を伝えていきます。
バックナンバーはこちら:http://bit.ly/omanabi-back

今回は2D作品でのライト周りの話です。
2Dでゲームを作る場合、多くの場合スプライトを使うと思いますが、普通に使っていると Sprite Renderer はライトの影響を受けません。
初期設定だと割り当てられているマテリアルがライトの影響を受けないものだからです。
マテリアルを自分で作り、設定を Sprites/Default ではなく Sprites/Diffuse にするとライトの影響を与えることができるようになります。
違いは画像にして載せてみました。

これでライトは適用できるのですが、何かに当たって影ができる、みたいなことはできないはずです(ボクがやり方知らないだけかもしれませんが)。

それができればもう少し面白い表現もできます。
例えば以下のような例があります。
https://note.mu/tarrcake/n/n8b623e08694f

厳密に言うと、この例は3Dのゲームですし、オブジェクトを照らしているのではなく、オブジェクトの後ろにあたる部分だけ表示している扇型の色を変えている、という例ですが似たようなことをできるようにする方法をいくつか探してみました。

今回の場合一番良いのはアセットストアのアセットを使うことだと思います。
http://kan-kikuchi.hatenablog.com/entry/2DDL_Pro

これは2Dライトのアセットで、オブジェクトの背後は照らされなくなったり、同じスプライト内でもライトから離れている場所ほど暗くなるなど2Dでのライトの挙動を再現していると思います。

あとは GitHub で同様に2Dでのライトを実装している例がありました。例えば以下のものです。
https://github.com/Alx101/Unity2DShadows

ただ、更新が4年前だったり、少し機能が物足りない印象でした。そこは無料なので割り切って活用できそうな範囲で活用するのが良いかなと思います。

今回はここまでです。
コメントや感想待ってますー!

【ライト周りの話】#5
この定期投稿では、これからUnityを始める人の助けになるような情報を伝えていきます。
バックナンバーはこちら:http://bit.ly/omanabi-back

今回は環境光(Ambient Light)についてです。
環境光はアンビエントライトとも呼ばれる、ざっくり言うとシーン全体に影響を与える光のことです。そしてUnityではデフォルトでこれが有効になっていて、空の色に影響されたライトがシーンのオブジェクト全てに影響します。

そのため、シーンを作ると最初からディレクショナルライトが存在していますが、これの Intensity(輝度)を 0 にしてもシーンは真っ暗にはなりません。
暗くならないし若干青みがかっているのは空の環境光の影響を受けているから、ということです。

その影響を回避してシーンを真っ暗にする方法はいくつかあり、それについての記事も書かれています(記事タイトルが面白いw)。
http://tsubakit1.hateblo.jp/entry/2015/03/26/011351

個人的には変更箇所が少ないという理由で、Lighting ウィンドウの設定変更がオススメです。

ちなみに、上記の記事は少し古いので各パラメータの名前が若干変わっています。最新のものはこちらのマニュアルを見ると載っています。
https://docs.unity3d.com/ja/current/Manual/GlobalIllumination.html

この辺りの項目とリフレクションプローブは密接に関わっているようなのですが、この連載の最初に書いた通りリフレクションプローブについては分からない故に書けません…。
いずれ綺麗な画面を作る連載、みたいなものを書くときに完全に理解した上でこちらについても記事を書きたいと思っています!
https://docs.unity3d.com/ja/current/Manual/ReflectionProbes.html

ライト周り解説も折り返し。来週はGI周りについて書きますー。

質問やコメントお待ちしてます!

【ライト周りの話】#4
この定期投稿では、これからUnityを始める人の助けになるような情報を伝えていきます。
バックナンバーはこちら:http://bit.ly/omanabi-back

今回はポイントライト(Point Light)についてです。
このライトはスポットライトのように動かせるものですが、全方位に対して光が飛ぶという違いがあります。
現実のスポットライトなどはライトの周りを正面以外覆ったりして任意の方向のみ光らせているので、Unityのライトの中ではポイントライトが一番光の本質を表していると言えるかもしれません(個人の感想です)。

そんなポイントライトに関連する要素として、ハロー(Halo)というものがありました(記事を書きながら初めて知りました)。
暈(かさ)とかヘイローとも言う、光学現象の1つです。詳しくはウィキペディアを読んでみてください。
太陽に関連するものならディレクショナルライト関連なのでは?と思うかもしれませんが、とりあえず読み進めてください。
https://ja.wikipedia.org/wiki/%E6%9A%88

Unity には Halo という「名前だけは」同じコンポーネントがあります。
これは残念ながらウィキペディアに載っているようなステキ光輪…ではなかったのですが、ポイントライトのように全方位にボリュームライトみたいなものを展開するというコンポーネントでした。ポイントライトの可視化コンポーネントと言えるかなと思います。

なお、実際に光学現象としてのハローを再現する時は、ディレクショナルライトの時に紹介したレンズフレアを使うとできそうな気がしています。

Halo コンポーネントは、ちょっと驚いたのですがライト以外のものにも使えました。昨日の Aura のような突き抜けた綺麗さなどはないのですが、モバイルなど環境を選ばず使えてお手軽に「光ってる感」のあるアイテムを出したりするのに良いかなーと思いました。
ただし、ライトではないので他のオブジェクトを照らすことはできません。

ちなみに Halo コンポーネントはスクリプトからアクセスすることができませんでした。描画処理順の関係で下手なタイミングで弄ると映像が破綻するなどの理由で意図的に封じられてるのかなと思います。無理やりアクセスすることもできますが、嫌な予感がするのでやめておきます。

質問や「それでもHaloにアクセスしてみてほしい!」みたいなご意見があれば是非コメントしてくださいー!

【ライト周りの話】#3
この定期投稿では、これからUnityを始める人の助けになるような情報を伝えていきます。
バックナンバーはこちら:http://bit.ly/omanabi-back

今回はスポットライト(Spot Light)についてです。
このライトはディレクショナルライトとは異なり位置を変更するとその場所に移動します。

スポットライトはいくつかあるライトの種類の中では一番日常生活で聞くことが多く、イメージしやすいものだと思っています。
身近なものだと懐中電灯が近いですかね。

懐中電灯といえば、普通モノにライトを当てるとライトが当たっている場所だけ明るくなり普通ライトの光そのものを見ることはできません。しかし、ホコリが舞っている場所を懐中電灯で照らすとホコリに光が当たり、光が通る場所にシルエットが浮かぶことで光を認識できるようになります。
これをボリュームライトと呼ぶらしいです。
http://www.asahi-net.or.jp/~qb3k-kwsk/3dcg/know/layout/lay32.html

あと似たようなものとして、雨上がりなどに雲の隙間から光が漏れることなどを薄明光線や光芒、ゴッドレイなどと呼ぶらしい(呼び方カッコいい…)です。
https://ja.wikipedia.org/wiki/%E8%96%84%E6%98%8E%E5%85%89%E7%B7%9A

これらの差はよく分からない(結果だけを見ると無い?)のですが、今回はスポットライトでこちらを再現してみました。

以前だと前回も活用した StandardAssets の中に LightShaft コンポーネントというものがありそちらを活用できたらしいのですが、今は見当たらないので代替手段として Aura という無料アセットを使ってみました。
https://assetstore.unity.com/packages/vfx/shaders/aura-volumetric-lighting-111664

このアセットはディレクショナルライトやスポットライトに Aura Light を、カメラに Aura Main Component を追加することで動作するようになります。

そして色々パラメータをいじって適当に物を配置した結果を動画にしてみたので見てみてください!

注意点はパラメータの意味が分かりづらいことと、メインカメラの表示がゲームを再生していない時によくバグることです。
ボクの場合、それぞれサンプルシーンを参考にしたり、ゲームを再生していない時はカメラの Aura Main Component を無効にしたりして対応しました。あとコンピュートシェーダが使われているので環境が限られることに注意です。

質問や「光芒とかゴッドレイって言いかたカッコいい…」などの感想を是非コメントしてくださいー!

About Me
No description
See more
Skills
No skills added yet
Certifications (0)
Import
See all
ゆに丸1号's liked projects (6)
Following (2)
Followers (21)
Following Companies (0)
Not following anyone yet