脱"Unity感" UE4ですか？と言わせる為の動画リンク集~ライティング編~

#脱Unity感＝綺麗なライティング#
綺麗なライティングとは？
短的に言うと、直接光と間接光を複合的に計算したライティングのことです。と勝手に定義しました。
"Unity感"とは間接光の計算のなさ、ライト強すぎ、などライティングから産まれやがるんや！
異論はもちろん認めます。

#読書対象者
Bakeしてない人
Directional LightのColorをいじったことがない人
RefrectionProbe？という人
Light Probe？という人



#ライティングの基礎#


まず基本的にライトはざっくりと
リアルタイムライト　と　事前計算ライト
2つにわけられます。↓参照

https://docs.unity3d.com/ja/2018.4/Manual/LightingInUnity.html

__リアルタイムライト__
動的だが反射しない
（何！？）

__事前計算ライト__
Staticなオブジェクトに対してGI（グローバルイルミネーション）を適用して、計算しておいた光
反射光も含むので綺麗
Staticなオブジェクト　や　Staticなライトのベイク　
によって適用される
つまりこいつで"Unity感"を消せそうちゃうか。。？

この記事がかなりわかりやすいので詳しくはみてください↓

http://corevale.com/unity/2080

この記事の結論は
GIが適用されるのは
オブジェクトがStaticであり、リアルタイムGI or ライトのBake　が適応されている場合であると言うことです。

###これらの基礎をまとめて学習できる神動画

多分、ライティングにおいて2021年６月までに存在する日本語と英語の動画資料は全て目を通しました！
でその中でも特に見やすかったのを紹介させていただきます。

__ライティングのおさらい - Unity道場2019 3月__

https://www.youtube.com/watch?v=Ek7vlUTKTNs&t=1976s

まずこれを見てください。
概念をめちゃくちゃわかりやすく説明してくれてます。
以降この動画のまとめと補足みたいな感じです。

__ライトマップの基礎知識 #1 : リアルタイムライト | Unite Now 2020__

https://www.youtube.com/watch?v=sA7AQPbXdZ4&t=315s

次にこれを見てください。非常にわかりやすくライティングの実践的な解説があります。

__［Unite 2016 Tokyo］Unityとアセットツールで学ぶ「絵づくり」の基礎（ライト、シェーダー、イメージエフェクト）__

https://www.youtube.com/watch?v=iWf-Y1rTSu0

これもお勧めです。
これは上記の２つをしっかりと覚えているかの確認に使えます！


__以下は上記の動画たちのまとめと補足みたいな感じです！__


#グローバルイルミネーション(GI)とは#

グローバルイルミネーションとは、直接光だけでなく間接光なども考慮したシミュレーションの光。
(enlighten　から引用)
Progressive Lightmapperと言うもので計算される

GIとは何か？？？という疑問を解決する神資料↓ここまでめちゃわかりやすいの意外とない

https://light11.hatenadiary.com/entry/2019/01/27/235637

__UnityにおけるGIの処理の流れ__
主にリアルタイムGI　と　Probes と　BakeGIの3つで別れる

https://docs.unity3d.com/ja/2018.4/Manual/UsingPrecomputedLighting.html


__Unityにおけるライティングの基本的な処理の方法__
一つのオブジェクトに対して、光源が近い順から、ライティングが行われる。
近さや順番によって計算方法が変わる
より複雑な計算を求めると、ハイクオリティ設定になる↓

https://docs.unity3d.com/ja/2018.4/Manual/RenderTech-ForwardRendering.html



#綺麗なライティングのための設定はどうすれば良いのか#
##LightのBake##
ライトをBakeする方法と、オブジェクトを軽くする細かい設定↓

https://www.k-youhinten.com/post/lightmap_bake_mina

基本的に背景はStaticにしてGenerativeLightしないと損するや！
ワイもしてないアプリを世に出したことあるで！今までの自分を恥じたらあかん。

##LightMappingを使用##
ライトマッピングは、シーンのサーフェスの明るさを事前計算し、チャートやライトマップに結果を保存して後で使用するための処理
ピンとこない人は、Scene Viewの設定で、GIの処理の１つ１つのフィルターがみれるのでみてみることをお勧めします。
オブジェクトに対するテクセルの大きさなどをみれます。

__Progressive Lightmapper__
ビルド完了まで待たなくても、ある程度完成形が見える
見えていくところから優先して焼かれるGPUにも対応した優れものであるので選択すると良い（現段階ではPreview）
細かい設定などの詳細動画↓

https://www.youtube.com/watch?v=dflNkg0U454

細かい設定の資料↓ 軽くしたい時にみるといいかも

https://light11.hatenadiary.com/entry/2019/04/07/214025



__Indirect Samples__：各テクセルから放たれるサンプル（パス）数。この設定により、プログレッシブライトマッパーが間接光の計算で計上するサンプルの数を制御します。一部のシーン（特に屋外のシーン）では、サンプル数は 100 で十分ですが、屋内のシーン（特に発光ジオメトリを使用している場合）では、より大きな値を指定する必要があります。サンプル数 512 くらいから始めて、最終結果のノイズが多すぎる場合にだけサンプル数を増やしてください。

__Lightmap Resolution__ : こちらで定義したテクセル数が、この単位キューブの各辺に配置されます。

https://unity3d.com/profiles/unity3d/themes/unity/images/eloqua/article/Unity-progressive-lightmapper-optimizations-texel-numbers.jpg

__Bounces__　反射光の跳ね返りの数の決定

__Filter__ Gaussian か　A-Trous を選択できる
↓比較画像　　主に影に違いがある

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/195953/62b263ad-2c63-720d-fa72-87dff06e54bb.png)
https://unity3d.com/profiles/unity3d/themes/unity/images/eloqua/article/Unity-progressive-lightmapper-optimizations-filters.jpg


詳しくは↓こちらをみてください。非常にわかりやすくまとめてくれてます。

https://forpro.unity3d.jp/unity_pro_tips/2019/10/30/290/



##RealTimeShadowColorの調整##
リアルタイムに生成される影の色を調整する項目

詳しくはこちら⇩

https://someiyoshino.info/entry/2020/08/16/181046

##RefrectionProbeの使用と設定##
ざっくりいうとRefrectionProbeとは、水面やコップなどに環境を反射させるのに使えるものです。

使い方はこちら⇩

https://light11.hatenadiary.com/entry/2018/07/10/231546

動画の解説はこちら

https://www.youtube.com/watch?v=NIAG2QsLqsA

##LightのModeを選択する##
・Modeの種類
__RealTime__
動的だが、直接光しか計算ができない
(何！？)
__Mixed__
さまざまな種類がある
後で解説します。
__Baked__
メリット
ふわっとした影が作れる（味わいのあるいい感じの影）
間接光の影響でリアルタイムより空間の輝度が上がることもある
→（indirect Multiplerを調整すると改善）
CPU負荷が軽い
高解像度な影を作成すると必然定期にメモリは圧迫されます
→影の品質はLight-Map Resolutionに強く依存しする
デメリット
光源情報が失われるので光沢がなくなる（スペキュラーライトが表現できない）
これはやばいで。"Unity感"エグくなるからめっちゃ気をつけるんや。
→RefrectionProbeで多少誤魔化せる
ダイナミックなオブジェクトには影は落ちない まぁ当たり前

###Mixedの種類###
MixedLightingの設定の種類

__ShadowMask__
メリット
一番高品質と言える
スペキュラーライトも表現できる、ただしボケた影はできない
デメリット
重い
LightProbeで影響を与えて違和感を数なくすることはできる

__Distance Shadowmask__
距離によって近い物だけに影をつける設定
デメリット
1つのオブジェクトに対して４つ以上の影響するライトがあると、５つ目からBakeされる
LightOverlapでどれがBakeされるかは確認することができる（赤がBakeされるライト）

__BakedIndirect__
メリット
間接光のみをテクスチャにベイクできる
デメリット
遠距離の影は表示できない

うん。結局どういう時にどういう設定がいいのか・・？！という疑問に答えてくれる
神資料↓

https://light11.hatenadiary.com/entry/2019/02/03/225210

##Shadowの設定##

__影の解像度__
影は一枚のTextureとして処理されます。なので__広範囲の影をつけるためにはカスケードを使用__して距離に応じた優先順位をつけないといけない。

Shadowの設定項目
Resolution
カスケード距離の修正
アーティファクトの修正

https://light11.hatenadiary.com/entry/2019/08/30/080812


##用途にあったライトの選択と数値の設定##
ここの数値の設定は忘れがちや！
ライトオブジェクトの種類
__Spot Light__
角度のみが影に影響　距離は関係ない
解像度は１で固定なので、広範囲にしすぎると、雑な影になります。

__PointLight__
距離で品質が変わる　角度は関係ない
6回描画する必要があるため、解像度は低く設定されている
太陽の代わりに使うと品質が落ちるので注意

__DirectionalLight__
どこに位置していても光の強さは変わらない。設定した方向に均一に世界を照らします
このライトの色とSkyBoxの色を合わせてないと"Unity感"が出るので注意や！
Directional Light の Ambient Color の色を、空の色と同期するのは絶対必須で、よく忘れられるんや。
昼　オレンジの色
夜　濃い青色
にするのがおすすめやで〜

設定項目
DirectionalLightの色は設定しましたか？
光源が足りない場所に、AreaLightをBakeしましたか？

##Light Probeを配置する##
シーン内にある小さなオブジェクト（フェンス、電線、チューブ、小物などのテクセルをあまり必要としないオブジェクト）やサイズのわりに表面積が非常に大きいオブジェクト（特に樹木）を照らすには、ライトプローブの使用が有効なもの。
ライトマップがシーン内のサーフェスに当たるライトに関するライティング情報を保持するのに対し、ライトプローブはシーン内の__スペースを通過するライトに関する情報__を保持します。
主として、ライトプローブは、シーン内の__動くオブジェクト__に対して質の高いライティング（間接光を含む）を提供します。また、景観に Unity の LOD システムを使用する場合には静的な景観のライティング情報を提供します。

####どうやって使ったらええんや？####
・基本的にキャラクターの移動範囲全てに散りばめると良い
Dynamicなオブジェクトは、間接光が計算されない。なのでそれを補う形でこれを使用する。

・Light Mapでは表現できない細かいディテールのオブジェクトに使用する


Light Probeの使い方はこちら⇩

https://light11.hatenadiary.com/entry/2019/04/08/221444

設定方法

http://tsubakit1.hateblo.jp/entry/2015/01/17/233000

##LPPVを使う##
Light Probe Proxy Volume (LPPV) コンポーネントを使うと、ベイクしたライトマップを使う事が出来ない、大きくて動的なゲームオブジェクト(例えば、大きなパーティクルやスキンメッシュ等)に、ライティングインフォメーションを追加する事ができます。
なんと！Unity感を脱せそうな感じしますよね。

http://tsubakit1.hateblo.jp/entry/2016/03/18/003021

https://docs.unity3d.com/ja/2019.4/Manual/class-LightProbeProxyVolume.html


##MeshRendererの光の設定##
光の当たり方を２種類を選択できる！

GI or Light Probe
を選ぶことができます。

詳細↓

https://dodagon.com/unity/meshrenderer1



#後書き#
正直理解がまだまだなので、間違ってる部分多いと思います。
もし僕の理解が間違っていたら訂正メッセージお願いいたします。即座に修正いたします。


#今後の予定#
カラーグレーディング編
LightProbe編
ポストプロセス編
Terrain編
リフレクションプローブ編
投影マッピング編
VFXGraph編
レンダリング編

を書いていく予定なので、温かい目で応援よろしく願いします。