Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

【Unity道場 3月 ~ライティングとVFX Graph~】Unityのライティング機能のおさらい

2,762 views

Published on

2019/03/29に開催された【Unity道場 3月 ~ライティングとVFX Graph~】の講演スライドです。
講師:山村 達彦 (ユニティ・テクノロジーズ・ジャパン合同会社)

Unityのイベント資料はこちらから:https://www.slideshare.net/UnityTechnologiesJapan/clipboards

Published in: Technology

【Unity道場 3月 ~ライティングとVFX Graph~】Unityのライティング機能のおさらい

  1. 1. ライティングの おさらい Tatsuhiko Yamamura @ Unity
  2. 2. こんにちは
  3. 3. ↓Twitterで紹介用に作ったが、紹介前に埋まってた
  4. 4. 光はライトソースから
  5. 5. 光が当たる場所は明るい
  6. 6. 光が当たらない場所は暗い
  7. 7. 光が届かなければ影になる
  8. 8. 光は反射する
  9. 9. 光は反射する
  10. 10. 反射する光は色に依存
  11. 11. 白い光+
 青い板 =反射 青い光+
 青い板 =反射 赤い光+
 青い板 =反射せず 緑の光+
 青い板 =反射せず
  12. 12. 反射した光は空間を作る
  13. 13. 光の表現 全てをリアルタイムに実行するのは高負荷 事前にテクスチャに焼き込んでおく + 動くキャラクターは動的なライト
  14. 14. ライティングの設定
  15. 15. 光の種類 環境光 光る物体 ライト
  16. 16. DEMO
  17. 17. 光の種類 環境光 光る物体 ライト
  18. 18. 空間の光情報 • 空間の光情報
 (Environment Light) • 陰影を作る • Skyboxもしくは
 Reflection Probe
 Ambient Color
  19. 19. 空間の光情報 • Skyboxに設定 • シーン全体に影響 • Unityの初期設定で
 なんとなく青くなるのは
 コレが原因(空が青い) • 暗いステージを作りたい場合は、
 まずAmbient Colorを操作
  20. 20. 周辺の光がオブジェクトに影響を与える
  21. 21. 単純なグラデーション、もしくは
 単色のEnvironment Lightも
  22. 22. ✕ 1 ✕ 3✕ 6 Environment
 Lightの影響
  23. 23. 暗闇を作りたいなら 設定しておきたい項目
  24. 24. 空間の光情報 • Reflection Probe • 光情報を集めて
 範囲内のオブジェクトに投影 • Box Projectionを有効にして
 簡単な反射の代用としても使える
  25. 25. 空間の光情報 • 部屋や遮られた区画ごとに設定 • 暗い部屋を作りたい場合に有用
  26. 26. 光る材質 • 発光する=光を受けなくても暗くならないマテリアル • 光るパーツ等、Bloomと合わせて使われる事が多い
  27. 27. 光る材質 • Materialの設定 • 光源としても利用可能
 (光沢は表現出来ない) • 光源として使うなら
 要light static • 動的なオブジェクトに影響を与 えるにはライトプローブが必要
  28. 28. ライト • 光を作る • 影を作る
  29. 29. ライトのタイプ RealtimeBaked Mixed 事前準備が不要 動的に光と影を計算 事前計算が必要 テクスチャに光と影の 情報を書き込む 事前計算と動的な影を 組み合わせる (Realtime GIが無効の場合) 複雑な計算は不可 複雑な計算は可 事前計算が必要 一部で複雑な計算が可 ライトは一切動かせない ライトの変化のみ可能 自由に動かせる
  30. 30. リアルタイムなライト • 範囲内のオブジェクトに
 影響を与える • ダイナミックなオブジェクトに
 影が落ちる • 影響範囲が被ると
 負荷が上がる事が多い RealtimeBaked Mixed
  31. 31. リアルタイムなライト • Realtime GIが有効なら
 間接光表現も可能
 (動かないオブジェクトのみ。
 追加でCPUコストが必要) RealtimeBaked Mixed
  32. 32. RealtimeBaked Mixed リアルタイムなライト • Realtime GIは、部屋の形は変更できないが、
 模様替え程度なら整合性を維持したままいろいろと出来る
  33. 33. リアルタイムな影 • 各ライト毎にShadow Mapが作られる • 影の品質はShadow Resolutionの設定と画面の解像度に依存 • High : 画面の2倍 • Mid : 画面の1倍 • Low : 画面の0.5倍 • ライトの種類毎に見るべき設定が異なる RealtimeBaked Mixed
  34. 34. Directional Light • 表示する範囲が品質に直結 • 範囲を狭くすれば面積辺りに
 使用できる解像度が広くなり、
 影野品質が上がる • Shadow Map解像度は画面の
 約2倍(Highの場合) 300m先まで描画 影の範囲を30m先に限定 RealtimeBaked Mixed
  35. 35. Directional Light • 広い範囲を描画するために
 カスケードが使える • 近いオブジェクトを
 細かい解像度で描画 • 複数回 影を描画するので
 描画コストが上がる事も カスケード 無し カスケード 有り RealtimeBaked Mixed
  36. 36. Spot Light • ライトの角度で品質が変化 • Rangeに依存しないが、
 広範囲を表示すると雑になる • 解像度は1倍(Highの場合) RealtimeBaked Mixed
  37. 37. Point Light • ポイントライトとの距離で品質が変化
 (Rangeが広くないと表示されないので
  Rangeに依存するとも言える) • 6回描画する必要があるため、
 解像度は低く設定されている(0.5倍) • ポイントライトを太陽の代わりに
 使うのは止めよう 4m 40m RealtimeBaked Mixed
  38. 38. リアルタイムなライト • 狭い範囲の影を描画したり
 する分には非常に良い • 間接光表現は出来ないが、
 質感的に最も正しい事が多い RealtimeBaked Mixed
  39. 39. ベイクしたライト • フワっとした影が作れる • 間接光の影響でリアルタイムより空間の 輝度が上がる事も
 (Indirect Multiplerを調整) • ダイナミックなオブジェクトに
 影は落ちない RealtimeBaked Mixed
  40. 40. ベイクしたライト • CPU負荷が軽い • ライトが増えても負荷は上がらない • リアルタイムと同レベルの細かい影を
 出そうと思うとメモリ負荷が高い RealtimeBaked Mixed
  41. 41. ベイクしたライト • 影の品質は
 Light-map Resolutionに
 強く依存 • ベイク時の品質は
 サンプリングの
 影響が割と高い RealtimeBaked Mixed resolution 4 resolution 40
  42. 42. ベイクしたライト • Progressive Lightmapper • ビルド完了まで待たなくても
 ある程度完成形が見える • シーンで表示してる部分が
 優先して焼かれる • 最近GPU対応した RealtimeBaked Mixed
  43. 43. ベイクしたライト • 光源の情報が失われる • ノーマルマップによる
 凹凸は失われないが、
 かなり見えにくくなる • HDRでライトを焼いて
 キューブマップで擬似的な再現 というオプションも… RealtimeBaked Mixed Realtime Baked
  44. 44. ベイクしたライト • ダイナミックなオブジェクトへは
 Lightprobe経由で影響を渡す
 (プローブ間で光情報を補完) • LightProbeはProbe間の切り替え時に
 負荷が発生する → 細かすぎると負荷 • 小物はライトを焼かずに、Lightprobeという
 選択肢もある RealtimeBaked Mixed
  45. 45. Mixed(リアルタイムな影とベイクした影を合成)の
 4つのの手法 • BakeとRealtimeを合わせたもの • 大抵の場合、Realtimeより軽くBakeより柔軟 • ライトマップのベイク等は必要 RealtimeBaked Mixed
  46. 46. Mixed(リアルタイムな影とベイクした影を合成)の
 4つのの手法 • Subtractive • Shadow Mask • Shadow Mask Distance Shadow • Baked Indirect テクスチャベイク寄り 動的な計算寄り RealtimeBaked Mixed
  47. 47. Subtractive • 影をベイクする • ベイクした影の上に、
 ダイナミックな影を落とす • 影の色を調整して違和感を無くす 色を調整後
  48. 48. Subtractive • staticなオブジェクトは光情報を
 一切参照しない(光沢は失われる) • 影の品質はライトマップ解像度に依存 Dynamic Baked static
  49. 49. Shadow Mask • ダイナミックな影と事前ベイクの影が同じ質感で影を落とす • staticなオブジェクトに使用するシャドウマスクを事前に生成 • 間接光の情報はテクスチャに焼き込む + =
  50. 50. Shadow Mask • 質感表現はリアルタイムで行う(綺麗) • Shadow Radiusによるボケた影も利用可能
 (影をボカす場合、リアルタイムと混ぜるときに注意) Bake Shadow Mask
  51. 51. Shadow Mask • ダイナミックなオブジェクトは
 影を落とせる • ShadowMaskの影(建物の影)は
 ダイナミックなオブジェクトに
 落ちない • Lightprobeで影響を与える
 (影は落ちないが違和感は減る)
  52. 52. Subtractive or Shadow Maskで
 動的なキャラクターに影を落としたい • Shadow Onlyかつ
 形状がシンプルなオブジェクトを 配置して影を落とす • Subtractiveは要 微調整
 (二重に影が落ちる)
  53. 53. Shadow Mask
 (DistanceShadow) • 近距離のみリアルタイムで影を表現
 (建物が影を落とす) • 遠距離はShadow Maskを使用する
 (カメラの角度によっては、解像度
 が非常に低くても問題ない) • 遠距離のリアルタイムな
 影は表示されない
  54. 54. Shadow Maskの問題 • 1オブジェクトにつき
 4つしか割り当てられない
 (1ライト毎にRGBAの一色が割り当てられている) • 適度にBaked設定を利用
 (大量のポイントライト等)
  55. 55. Shadow Maskの問題 Baked Lightmap Light Overlap • Shadow Maskが
 割り当てられないライトは
 テクスチャに焼かれる • 焼かれるライトは
 Light Overlapで確認
 (ライトと範囲が赤く表示)
  56. 56. Baked Indirect • 間接光のみテクスチャにベイク • リアルタイムな影や光表現は
 すべて動的に実行 • 遠距離の影は表示出来ない
  57. 57. 用途毎に設定を考える • とにかく軽くしたい • 出来るだけ綺麗にしたい • 広いステージを作りたい • 遠距離を見る必要は無い
 (上から視点や、霧の濃いゲーム) Subtractive Shadow Mask Shadow Mask distance shadow Baked Indirect
  58. 58. まとめ
  59. 59. ライトの設定 環境光 光る物質 間接光直接光 光を受ける
 物質 Ambient Light Reflection Probe Emissive Material
 (ステージに配置) Light GI、Area Light
 (事前計算) Renderer (動的に計算) ライトを焼く
  60. 60. 影をテクスチャに
 全て焼く RealtimeBaked Mixed Shadow Mask Baked Indirect Subtractive Realtime GI ON Realtime GI OFF 影をテクスチャに
 全て焼く リアルタイムかつ 間接光あり リアルタイムかつ 間接光無し
 (事前準備は無し) 追加で影を描画 間接光のみテクスチャに焼く 影は全てリアルタイム 間接光をテクスチャに焼く。 影のマスクを焼き、 リアルタイムな影と合成
 オススメ ライトマップ設定
  61. 61. RealtimePoint Light Directional Light Spot Light 品質は表示範囲に依存 品質は角度に依存 品質は対象との距離に依存
  62. 62. おわり
  63. 63. おまけ
  64. 64. マルチシーンの扱い • 同じLighting Dataを参照するシーン単位でまとめる • ロード単位は分割される • ABに格納すると必要なアセットが全部ABに突っ込まれる • アクティブなLighting Dataが所属するライトマップが
 使用される
  65. 65. 小技 • Lightprobeは全体で結合される
 (加算ロードは出来ないはず) • 複数のLightmap差し替えは可能(要スクリプト) • 遠距離のライトマップはMipmapしか使用しないモードが
 追加された • LODとライトマップを組み合わせる場合、Lightprobeが必須

×