0:00:02.635,0:00:06.218 今 Unity のライティング機能はかつてないほど充実しています 0:00:07.635,0:00:11.786 ライティングパイプラインには従来のベイクライトマッピング手法の 0:00:11.786,0:00:15.109 他にリアルタイムグローバルイルミネーションも加わりました 0:00:16.621,0:00:19.710 これらを物理ベースレンダリングと Standard シェーダーと 0:00:19.710,0:00:21.297 組み合わせることで 0:00:21.297,0:00:25.421 複雑なシーンのライティングをより強力かつ汎用性の高い形で実現できるようになったのです 0:00:28.492,0:00:32.688 Unity では物理ベースレンダリング略してPBR を使うことで 0:00:32.688,0:00:35.699 各種ライティング状況におけるマテリアルの見た目に 0:00:35.699,0:00:39.956 一貫性と説得力を手軽に持たせることができます 0:00:39.956,0:00:44.764 これを実現するため Unity ではライトの実際の振る舞いをモデルし 0:00:44.764,0:00:46.764 マテリアルに対するライトの干渉が物理法則に 0:00:46.764,0:00:48.764 沿ったものになるようにしています 0:00:49.612,0:00:53.704 これらマテリアルは通常 Standard シェーダーを用いて作成されます 0:00:53.704,0:00:55.704 Standard シェーダーは物理ベースレンダリングを 0:00:55.704,0:00:58.749 簡単で扱いやすくします 0:01:01.322,0:01:03.322 Unity のパイプラインでもトップクラスの強力を 0:01:03.322,0:01:07.195 持つのがリアルタイムグローバルイルミネーション 0:01:07.195,0:01:08.948 略して GI です 0:01:08.948,0:01:12.404 GI ではシーン内の全ライトが 0:01:12.404,0:01:14.923 範囲内のオブジェクトに直接光と 0:01:14.923,0:01:17.928 間接光を投射できます 0:01:17.928,0:01:19.928 直接光とはシーン内のオブジェクトに 0:01:19.928,0:01:23.564 直接光を当てるライトから来るものですが 0:01:23.564,0:01:25.564 他方の間接光は 0:01:25.564,0:01:28.780 シーン内のサーフェイスに反射・跳ね返ってきた 0:01:28.780,0:01:30.780 光を示します 0:01:31.364,0:01:33.364 跳ね返った間接光は 0:01:33.364,0:01:35.364 近くのオブジェクトを照らし 0:01:35.364,0:01:38.694 現実世界の光の振る舞いを模倣します 0:01:38.694,0:01:40.694 この間接光は跳ね返る 0:01:40.694,0:01:43.551 サーフェイスの色に影響され 0:01:43.551,0:01:47.375 投射先にその色の影響を伝えます 0:01:47.375,0:01:49.375 直接光と間接光は 0:01:49.375,0:01:52.971 混ぜ合わさることでよりリアルな外観を作り出します 0:01:56.368,0:01:58.368 Unity の新シーンにはデフォルトのメインカメラの他 0:01:58.368,0:02:00.368 デフォルトのスカイボックスが 0:02:00.368,0:02:02.368 含まれるようになりました 0:02:02.368,0:02:04.368 このスカイボックスにはデフォルトのディレクショナルライトが 0:02:04.368,0:02:06.368 付いてきます 0:02:09.609,0:02:11.609 各シーンにはまた環境光(Ambient Light)の 0:02:11.609,0:02:13.609 デフォルト値が設定されています 0:02:14.683,0:02:17.974 環境光はシーン内の全サーフェイスを照らします 0:02:19.435,0:02:22.015 この環境光の設定は Lighting パネル > 0:02:22.015,0:02:24.523 Environment Lighting タブで指定できます 0:02:27.783,0:02:29.783 環境光は 0:02:29.783,0:02:31.783 Skybox の他にも 0:02:32.650,0:02:35.917 ユーザー指定の 3 色グラデーションや 0:02:44.208,0:02:46.208 単色でも作成できます 0:02:54.593,0:02:56.593 基本的にシーン内の全オブジェクトは 0:02:56.593,0:02:58.499 環境光を受けますが 0:02:58.499,0:03:01.881 Ambient Intensity 値を 0 にしたり 0:03:02.898,0:03:06.265 環境光のカラー値を黒にしたりすると受けなくなります 0:03:08.093,0:03:10.093 現実世界のマテリアルが 0:03:10.093,0:03:12.093 反射率を持たないということは 0:03:12.093,0:03:15.638 基本的にあり得ません 0:03:15.638,0:03:18.676 デフォルトではシーン内の全オブジェクトが 0:03:18.676,0:03:21.433 反射情報を受け取ります 0:03:22.055,0:03:25.630 なのでこの例ではスフィア・キューブ・プレーンのいずれも 0:03:25.630,0:03:28.970 ライトを受けず また環境光も無いにも関わらず 0:03:28.970,0:03:30.970 ライティング情報は反射というかたちで 0:03:30.970,0:03:33.631 受け取られているわけです 0:03:33.631,0:03:37.015 デフォルトの Reflection Source(反射ソース)は Skybox です 0:03:37.015,0:03:40.034 これはカスタムキューブマップに変更も可能です 0:03:40.034,0:03:42.352 デフォルトの反射を無くすには 0:03:42.352,0:03:44.352 カスタムキューブマップを無しにするか 0:03:47.084,0:03:49.084 スカイボックスを削除します 0:03:52.024,0:03:54.024 なおデフォルトのスカイボックスはプロシージャルに 0:03:54.024,0:03:56.494 生成されますが プロシージャルな 0:03:56.494,0:03:58.494 スカイボックスはアセットとして 0:03:58.494,0:04:00.494 新規作成・保存が可能です 0:04:13.646,0:04:15.646 Unity 上でシーンにライティングを加える場合には 0:04:15.646,0:04:17.646 Realtime ライティングと 0:04:18.475,0:04:19.881 Baked ライティング 0:04:20.475,0:04:22.053 およびその両方(Mixed)を使うことができます 0:04:22.607,0:04:26.129 Realtime ライティングは実行時に容易に変更が可能ですが 0:04:26.129,0:04:28.129 パフォーマンスとの兼ね合いが重要になります 0:04:29.429,0:04:31.562 一方の Baked はより詳細なライティング情報を 0:04:31.562,0:04:34.004 事前に演算してライトマップテクスチャとして 0:04:34.004,0:04:36.961 ディスクに保存しておくことが可能です 0:04:37.470,0:04:39.470 このライトマップ情報はその後実行時に 0:04:39.470,0:04:41.470 テクスチャから読み込まれるので 0:04:41.470,0:04:43.470 プロジェクトの実行時には 0:04:43.470,0:04:45.470 ライティングの演算が不要になります 0:04:46.450,0:04:48.450 パフォーマンス上は良いことずくめですが 0:04:48.450,0:04:51.846 その代償としてシーンの動的な変更には対応できません 0:04:51.846,0:04:54.722 Baked ライトマップは実行時に更新されないからです 0:04:55.363,0:04:58.975 ライトを Realtime / baked / Mixed の 0:04:58.975,0:05:00.975 いずれにするかはライト単位で指定できます 0:05:02.256,0:05:04.256 Baked ライティングだけを使うケースとしては 0:05:04.256,0:05:07.020 ハードウェア性能の低いモバイルデバイスなど 0:05:07.020,0:05:10.844 特定のプラットフォーム向けに作る場合が考えられます 0:05:13.674,0:05:16.011 ライトマッピングシステムは継続的にも 0:05:16.011,0:05:18.011 オンデマンドにも機能させられます 0:05:19.575,0:05:22.081 Continuous Baking をオンにすると 0:05:22.081,0:05:25.019 ライティングの変更が編集中にバックグラウンドでベイクされます 0:05:25.754,0:05:27.754 これはインスペクターでプロパティを変更したり 0:05:27.754,0:05:29.242 シーン内でオブジェクトを 0:05:29.242,0:05:31.926 変更したりした場合に反映されます 0:05:43.058,0:05:45.343 Continuous Baking をオフにした場合には 0:05:46.189,0:05:48.686 変更内容のプレビューはオンデマンドになり 0:05:50.137,0:05:53.426 Lighting パネルの Build ボタンを選択した時に反映されます 0:06:00.360,0:06:02.360 さてこのシーンには天井から差し込む 0:06:02.360,0:06:05.004 ディレクショナルライトがあります 0:06:05.607,0:06:09.488 このライトはシーン全体の証明に影響を与えています 0:06:09.488,0:06:11.488 まず直接あたったサーフェイスからの 0:06:11.488,0:06:13.127 跳ね返りによる影響があり 0:06:13.127,0:06:16.096 そしてその跳ね返った光が間接的に近くのサーフェスに与える影響があるためです 0:06:17.445,0:06:19.445 この間接的な光は 0:06:19.445,0:06:21.445 光の強度(Intensity)が落ちて 0:06:21.445,0:06:23.445 跳ね返らなくなるまで繰り返し跳ね返って 0:06:23.445,0:06:24.993 近くのサーフェイスを間接的に照らします 0:06:25.860,0:06:27.594 ここで光の強度(Intensity)を落とせば 0:06:28.048,0:06:31.132 シーン内の照明もそれに応じて暗くなります 0:06:34.693,0:06:36.693 同様にディレクショナルライトを 0:06:36.693,0:06:38.693 シーン内の別の箇所を 0:06:38.693,0:06:40.562 照らすように移動すると 0:06:40.562,0:06:43.349 シーン内の照明結果も直接光・間接光共に 0:06:43.349,0:06:45.971 それに応じて変化します 0:06:49.306,0:06:51.948 Standard シェーダーで作られたマテリアルは実にさまざまな 0:06:51.948,0:06:55.297 物理的なサーフェイスを模倣できますが 0:06:55.297,0:06:57.297 マテリアルはそれぞれ反射率が異なるため 0:06:57.297,0:06:59.030 使用するマテリアルに応じて 0:06:59.030,0:07:01.030 シーン内でのライティング結果に影響が生じます 0:07:01.690,0:07:05.475 これを調整するため Bounce Intensity(バウンス強度)設定は 0:07:05.475,0:07:07.832 ライト単位で調整する他 0:07:07.832,0:07:09.832 Lighting パネルからグローバルにも 0:07:09.832,0:07:11.832 調整できるようになっています 0:07:12.981,0:07:15.338 ここでは照らされたサーフェイスの跳ね返りを 0:07:15.338,0:07:18.705 人工的に調整することができるわけです 0:07:20.307,0:07:22.307 この他にもシーンの Indirect Intensity(間接光強度)を 0:07:22.307,0:07:24.307 調整することなども可能です 0:07:26.982,0:07:28.982 また照明においてはライトの他にも 0:07:28.982,0:07:32.328 エミッシブ(Emissive / 自己発光)サーフェイスを使うことができます 0:07:33.421,0:07:35.421 このシーンにはさまざまなライトとライトタイプが使われていますが 0:07:35.421,0:07:39.297 そのうちのひとつがこのエミッシブサーフェイスです 0:07:39.297,0:07:42.550 エミッシブサーフェイスは光源のひとつですが 0:07:42.550,0:07:46.836 跳ね返った間接光のように振る舞います 0:07:46.836,0:07:48.836 このシーン内で最も大きなエミッシブサーフェイスは 0:07:48.836,0:07:50.836 メイン通路のジャンクション部分ですが 0:07:51.194,0:07:54.044 この他にもパネルが多数配置されています 0:07:56.644,0:07:58.644 これらエミッシブサーフェイスは 0:07:58.644,0:08:00.872 Standard シェーダーの Emission プロパティで 0:08:01.814,0:08:04.255 スケール調節して使用されています 0:08:04.255,0:08:07.382 ここで Emission プロパティの横に表示される float 値と 0:08:07.382,0:08:09.229 さらに隣になる色を指定すると 0:08:09.229,0:08:11.229 シーンの雰囲気は大きく変わります 0:08:13.697,0:08:16.996 これらのライトもリアルタイムライトマッピングの一部であるため 0:08:16.996,0:08:18.996 コードやアニメーションを利用して 0:08:18.996,0:08:20.996 プロジェクトの実行中に 0:08:20.996,0:08:22.996 シーンの雰囲気を変えるのに 0:08:22.996,0:08:24.996 使うことができます 0:08:28.200,0:08:30.200 Unity におけるライティングの構成要素として 0:08:30.200,0:08:32.200 ここで最後に紹介するのがプローブです 0:08:32.822,0:08:34.822 Unity には 2 種類のプローブがあります 0:08:35.425,0:08:36.931 ライトプローブと 0:08:37.915,0:08:39.915 リフレクションプローブです 0:08:41.121,0:08:43.121 ライトプローブはシーン内のライティングのサンプルを 0:08:43.121,0:08:45.121 ワールドのさまざまな位置で取得します 0:08:46.892,0:08:49.568 プローブの情報を活用するとパフォーマンス負荷を 0:08:49.568,0:08:51.568 抑えたまま シーン内の動的な要素 0:08:52.944,0:08:55.912 たとえばキャラクターや移動するオブジェクトの 0:08:55.912,0:08:57.912 ライティングに活用できます 0:09:02.492,0:09:04.492 もう一方のリフレクションプローブは 0:09:04.492,0:09:06.492 反射元の計算に使用する 0:09:06.492,0:09:08.492 単一の参照ポイントとして作用します 0:09:09.114,0:09:11.114 リフレクションプローブは 0:09:11.114,0:09:13.114 反射に含まれるべき内容を 0:09:13.114,0:09:15.618 指定する立方骨に囲まれています 0:09:16.522,0:09:19.840 そして各プローブは ボックス投影を使用して 0:09:19.840,0:09:21.840 周辺の要素からサンプルを取得し 0:09:21.840,0:09:23.840 情報をキューブマップに格納します 0:09:26.779,0:09:28.779 そして反射サーフェイスマテリアルを含むオブジェクトが 0:09:28.779,0:09:32.656 リフレクションプローブのボリューム内にある場合に 0:09:32.656,0:09:34.656 このキューブマップを参照して 0:09:34.656,0:09:36.352 反射サーフェイスを作成するのです 0:09:36.939,0:09:38.939 デフォルトでは各シーンにひとつビルトインの 0:09:38.939,0:09:41.070 リフレクションプローブが配置されます 0:09:41.070,0:09:43.070 このデフォルトリフレクションプローブは 0:09:43.070,0:09:46.486 スカイボックスを反射して基本的な反射を生み出します 0:09:46.486,0:09:48.486 より細やかなリフレクションが必要な場合には 0:09:48.486,0:09:50.486 リフレクションプローブを追加して 0:09:50.486,0:09:52.486 関係するオブジェクトに対して適切に 0:09:52.486,0:09:54.486 配置する必要があります 0:09:57.124,0:09:59.919 物理ベースレンダリングは 0:09:59.919,0:10:01.919 リニアカラースペースでその真価を発揮します 0:10:02.484,0:10:04.484 リニアカラースペースでは 0:10:04.484,0:10:07.621 よりリアルで数学的にも正しい結果が得られます 0:10:09.788,0:10:11.788 最適な結果を得るには 0:10:11.788,0:10:13.788 Color Space 設定を Linear に設定します 0:10:13.788,0:10:15.788 これはプロジェクトの 0:10:15.788,0:10:17.788 Player Settings ウィンドウで指定します 0:10:18.919,0:10:22.065 なお Linear は Color Space のデフォルト設定です 0:10:22.988,0:10:24.988 なお一部のプラットフォームでは 0:10:24.988,0:10:26.988 リニアカラースペースがサポートされておらず 0:10:26.988,0:10:28.988 現時点では大半のモバイルプラットフォームで 0:10:28.988,0:10:31.964 Gamma が必須カラースペースであることを記憶しておいてください 0:10:35.280,0:10:37.280 これまでカバーしてきた要素を振り返ると 0:10:37.280,0:10:39.280 Unity でシーンのライティングを 0:10:39.280,0:10:41.906 効果的に行なう上での重要な要素は 0:10:41.906,0:10:44.210 次のようにまとめられます 0:10:46.544,0:10:47.914 環境光(Ambient Light) 0:10:48.762,0:10:50.762 リフレクション(Reflection / 反射) 0:10:50.762,0:10:52.762 そして光源です 0:10:53.271,0:10:55.271 Standard シェーダーで作られたマテリアルを 0:10:55.271,0:10:57.271 物理ベースレンダリングで描画し 0:10:57.271,0:11:00.182 グローバルイルミネーションで 0:11:00.182,0:11:02.182 間接光を計算し 0:11:02.182,0:11:04.182 より複雑でもっとリアルな 0:11:04.182,0:11:07.308 シーンを作ってみてください