Unityで学ぶ三点照明

こんにちは！
Qiita初投稿です。株式会社OGIXのエンジニア H.Nです！
（弊社については最後に紹介があるのでぜひ見てください）

今回はUnityの照明（ライティング）について記事を書きたいと思います。

3DCGオブジェクトをレンダリングするにあたり、見映えにおいて重要なのは照明です。
同じオブジェクトでも、ライトの当て方によって、まるで見える印象が変わります。

照明は物理であり、西洋絵画や映画の世界で長年に渡って研究されてきたノウハウがあります。
その中でも、最も基本的な照明技法である、『三点照明』について、Unityで再現しながら解説していきます。

# 三点照明とは
![three_point_light.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3565804/bfc064a8-29a6-e9b9-29ed-5e641739cca0.png)
キーライト、リムライト、フィルライトの３つのライトで被写体を照明する手法です。
それぞれのライトの役割は以下の通りです。

### キーライト
メインになるライトで、被写体をもっとも強く照らします。
ポートレート撮影の場合は、被写体の斜め45度上から照らすことが多いです。
これは、正面から強い光を当てると、立体感が失われてしまうためです。

### フィルライト
キーライトによってできる影の部分を照らすライトです。
フィルライトが無いと、影の部分が真っ暗になってしまいます。
キーライトの逆側から適度な明るさで照らしてあげることで、影が和らいでくれます。

### リムライト
バックライトとも言います。
被写体の後ろから照らすことで、被写体の輪郭やエッジの部分を光らせることができます。
髪の毛に光沢を出したい時などに使われます。


# Unityでシーンのセットアップ
それでは、実際にUnityで三点照明をやってみましょう！
URPやHDRPは使わず、標準のUnityレンダリングでやっていきます。
まずはプロジェクトを作成し、シーンを立ち上げ、最初から適用されているSkyboxなどをOFFにします。
![スクリーンショット 2023-10-13 161211.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3565804/d13512aa-341f-3fbc-322e-9ab12be8e6a8.png)
LightingタブのSkybox MaterialをNoneに、Environment LightingのSourceをSkyboxからColorに変えます。

![スクリーンショット 2023-10-13 161322.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3565804/b193e3dc-66e6-e11e-a343-b52dc49072b1.png)
Main CameraのClear FlagsをSolid Colorに、Backgroundを黒に。

シーンに最初から入っているDirectional Lightも削除します。

![スクリーンショット 2023-10-13 161820.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3565804/9ba1f359-0809-d99a-f681-49bd836a807e.png)
シーンの中央に、床面になるPlaneを配置しましょう。

Planeには、以下のマテリアルを割り当てます。
![スクリーンショット 2023-10-13 162056.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3565804/b7312701-a295-caab-a5be-f6d1b8bf3c85.png)
光を当てた時に、床面がほどよく明るくなるように、完全な黒ではなく、18%グレーにしてみました。

シーンの中央に被写体としてSphereを配置します。
![スクリーンショット 2023-10-13 162401.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3565804/ca0b1412-b959-929c-93a8-59be832a37bb.png)

Sphereには以下の真っ赤なマテリアルを当てました。
![スクリーンショット 2023-10-13 162723.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3565804/190368d2-30ba-4814-1532-a63b6a62889c.png)
さあこれで舞台は完成です。
ライトを配置していきましょう！

# キーライト
![スクリーンショット 2023-10-13 163106.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3565804/f4780f61-1c4e-ff54-73f9-e656a57ef5f5.png)
キーライトを配置します。
ライトのタイプはスポットライト。
上図のように、画面左上から被写体を強く照らします。
ShadowTypeは、HardShadowにしました。

![スクリーンショット 2023-10-13 163309.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3565804/35c39f43-b368-46a8-19be-4807609f36d6.png)
キーライトだけで照らされたシーンは上のようになります。
なんだか、レンブラントの絵画のようですね！

ライトの強さや角度を変えると絵の印象が変わりますので、そのシーンの演出に合わせて最適なキーライトの位置を決めるのがいいと思います。

# フィルライト
![スクリーンショット 2023-10-13 163602.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3565804/74014a50-800b-6cc8-9dca-15d225dc8513.png)
フィルライトを配置します。
Sphereの影の部分を照らしたいので、キーライトの反対側、床面に近い低い位置から照らします。
理想はエリアライトで照らしたいですが、Unityの都合上難しいので、スポットライトにしました。
SpotAngleを広めに、柔らかく照らします。
Shadowはオフにしました。

![スクリーンショット 2023-10-13 164334.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3565804/e1740455-dc4f-d83b-f2a6-da545d9a2459.png)
フィルライトを当てるとこのような絵になります。
影が持ち上げられて、いい感じですね。
フィルライトが強すぎると良くないので、適度な強さに調整しましょう。


# リムライト
最後にリムライトを配置します。
![スクリーンショット 2023-10-13 164631.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3565804/9542b89c-bd25-1f71-7a94-da423d03e539.png)
Sphereの後ろ側から、鋭く強く当てていきます。
ライトのタイプはスポットライト。
SpotAngleを絞り、必要な箇所にだけ当てるようにします。
Shadowはオフにしました。


![スクリーンショット 2023-10-13 164806.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3565804/2a134b94-3fb4-0eef-7b29-5c21bd91d962.png)
リムライトを当てるとこのような絵になります。
Sphereの右上のエッジが強調されて、立体感のある絵になりました。
また、床面にハイライトが乗ったのもいいですね。

レイトレースやグローバルイルミネーションを使っていないにも関わらず、立体的でリッチな表現にできました。


# まとめ
Unityで三点照明について解説をしました。
昨今のレンダリング技術の進化により、URPやHDRPといったリッチな機能がUnityに搭載されていますが、どのようなレンダリングパイプラインを使おうとも、照明の基本を学ぶことが大切です。

三点照明を応用すれば、Unity標準のレンダリングエンジンでも、このようにリッチな表現を行うことができます。
3DCGの照明は、特定のライトだけ影をオンオフしたり、ライトが当たるオブジェクトを指定できたりするので、現実の照明よりも自由度が高いです。
照明をうまく使いこなすことは、より良い絵作りにとって重要な一歩でしょう。

# 一緒に働く仲間を募集しています！
株式会社OGIXでは一緒に働いてくれる仲間を募集しています！
エンタメ制作集団としてゲームのみならず、未来を見据えたエンタメコンテンツの開発を行っています。

事業拡大に伴い、エンジニアさんを大募集しています。
興味のある方は下記リンクから弊社のことをぜひ知っていただき応募してもらえると嬉しいです。
▼会社について
https://www.wantedly.com/companies/company_6473754/about
▼代表インタビュー
https://www.wantedly.com/companies/company_6473754/post_articles/443064
▼東京オフィスの応募はこちら
https://www.wantedly.com/projects/1468324
▼新潟オフィスの応募はこちら
https://www.wantedly.com/projects/1468155