【Unity道場 2016】ライティング虎の巻

330 Views

July 15, 17

スライド概要

2016/7/10(日)に渋谷dots.にて開催されたUnity道場のスライドです。
講師:小林 信行(ユニティ・テクノロジーズ・ジャパン合同会社)

profile-image

リアルタイム3Dコンテンツを制作・運用するための世界的にリードするプラットフォームである「Unity」の日本国内における販売、サポート、コミュニティ活動、研究開発、教育支援を行っています。ゲーム開発者からアーティスト、建築家、自動車デザイナー、映画製作者など、さまざまなクリエイターがUnityを使い想像力を発揮しています。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

Unityとアセットツールで学ぶ 「絵づくり」の基礎 ライティング 虎の巻 ユニティ・テクノロジーズ・ジャパン合同会社 コミュニティエバンジェリスト 小林信行 2016/07/10 Sun @Unity道場 08

2.

絵づくり講座・虎の巻では 実践的なテクニックを 扱います! ・『絵づくり講座』本編のほうはどうでしたでしょうか? こちらの『絵づくり講座』虎の巻では、本編での考え方を元に 現場ですぐに役立つ実践的なテクニックについて扱っていこうと思います。

3.

最低限チェックしておきたいUnityの設定 ・ Edit>Preference>GI Cacheより、GIキャッシュのサイズ ⇒ベイクスピードに直結します ・ File>Project Settings>Quality ⇒ディレクショナルライトの影の品質他に影響します ・ Main CameraのInspector ⇒HDRはONになってる? ・ File>Build Settings>Player Setting ⇒カラースペース及びレンダリングパスの設定

4.

最低限チェックしておきたいUnityの設定 ・ GI Cacheのサイズ(Maximum Cache Size)を大きめ、 かつSSD等の高速のドライブに設定する ・ 影の形や光の差し込む形が重要な時は、 Shadow ProjectionをClose Fitにする。無視できるならStable Fitで。 ・ Main CameraのHDRにチェックを入れる (Anti AliasingをDisabledにする) ・ Color SpaceをLinearにする。※ほぼPC/コンソール向けの設定。 ・ Rendering PathをDeferredにする。※ほぼPC/コンソール向けの設定。

5.

3DCGで使われる「ライト」 の特性とは? ・ 3DCGで使われる「ライト」オブジェクトは、現実世界のライトとはかなり違った性質を持っています。 そのことを改めて押さえておきましょう。

6.

3DCGで使われる「ライト」の特性 ・ 「ライト」自体はレンダリングしても光らない。 「ライト」はそれ以外のオブジェクトを「照らす」役割しかない。 ・ オブジェクトを「照らす」とは、この場合、そのライトによって照らされる範囲、 影になる範囲を特定することである。 ・ 照らす対象や影を落とす対象を選択したり、そもそも影を落とさないような コントロールもできる。 ・ ライトの物理的法則(エネルギー保存の法則や逆二乗の法則)に 従わないライトも設定することができる。 ・ 3DCGでは、「光っていること」と「照らしていること」には、直接関係はない。

7.

硬いライト/柔らかいライト ・ ライトには、その光質に応じて、「硬いライト」「柔らかいライト」というものがあります。 それらを使い分けることで、マテリアルの質感を引き出すことができます。

8.

硬いライト/柔らかいライト ・ 「硬いライト(光)/柔らかいライト(光)」という言葉は、スタジオ撮影のライティ ング技法でよく使われる言葉。主に光質を差し、ソフトネスとも呼ばれる。 ・ 「硬いライト」とは、直進性のある光(スペキュラーライト)のことで、物の影が シャープに出る光を指す。マテリアル感も、シャープになりメリハリが付きやすい。 ・ 「柔らかいライト」とは、拡散光(ディフューズライト)のことで、光がまわり、物の 影がソフトに出る光を差す。マテリアル感も全体のディテール重視で、シャープ 感は少なくなる。 ・ リアルタイム3DCGの場合、ベイクドライトの多くは「柔らかいライト」ということ ができます。一方、リアルタイムのディレクショナルライトなどは、ソフトシャドウ の設定を入れても硬い傾向があります。(※ただし、あくまで私感)

9.

「光をまわす」とは? ・ GIシステムでは、いわゆるライティング用語のひとつである「光をまわす」ことができるようになります。 「光をまわす」ことは、シーン全体の基本となる明るさを設定する意味でも重要です。

10.

「光をまわす」とは? ・ 実写のスタジオライティングでは、「光をまわす」とは、主にディフューザー等を 利用しながら、柔らかいバウンス光をシーン全体に行き渡らせることを意味して います。 ・ Unityの場合、オープンなシーンか、遮蔽されているシーン(室内のシーン)かに はよります。 ・ オープンなシーンの場合、主にEnvironment Lighting内のAmbient Intensityの値 を調整することになります。 ・ 遮蔽されているシーンの場合、主にGeneral GI内のIndirect Intensityの値および Bounce Boostの値で調整することになります。

11.

Ambient Intensityをあげることで、陰の部分が明るくなっていきます。

12.

ベイクドライトの場合、Indirect Intensityをあげることで、陰の部分が 明るくなっていきます。

13.

ベイクドライトの場合、さらにBounce Boostをあげることで、バウンス光がさらに明るくなります。

14.

「シーンを暗くする」 ・ シーンライティングは、まず「シーンを暗くする」ことから始まります。 そのやり方は、開放シーンと室内シーンでは違います。まずはそこから押さえましょう。

15.

「シーンを暗くする」 ・ 「シーンを暗くする」のは、「光をまわす」のとちょうど逆の設定をします。 ・ 開放シーンの場合には、主にAmbient Intensityの調整になります。 (ほとんどの場合、Skyboxの明るさの設定でしょう) ・ 遮蔽されているシーンの場合には、Reflection Probeを遮蔽する壁に添ってサイ ズ調整&配置し、Box ProjectionをONにします。 遮蔽する壁は、Mesh RendererのCast ShadowsをTwo Sidedなどにし、外光の がすり抜けないようにします。さらにLightMap StaticをONにすることで、ベイクド ライトがバウンスするようにします。

16.

「モチベーション」と 「オフスクリーンスペース」 ・ シーンライティングを進める際に必要な考え方として、そのシーンを照らしている「モチベーション」(光源)が何かを 特定していくことが大切です。 ・ 特に「モチベーション」の中でも、画面外の空間(オフスクリーンスペース)に存在するモチベーションがとても重要 なことがあります。 ・ これらのモチベーションを考慮に入れた上で、「ストーリーを語る」ようにライティングを設定しましょう。

17.

「モチベーション」と「オフスクリーンスペース」 ・ 「モチベーション」(光源)の選択に当たって重要なのは、どんなタイプのライトを 使用するかの選択です。それには各ライトの特性をよく知る必要があります。 ・ 各ライトは、リアルタイムで使用する場合とベイクして使用する場合とで、特性 が違っている場合もあります。 ・ 特にベイクドライトを使う場合には、ライトの減衰について注意して配置すると より高い効果が得られます。 ・ 「オフスクリーンスペース」に配置したライトは、特に減衰特性に注意しましょう。 例えば、室内に差し込むモチベーションとして、どのようなライトを選択するか で、画面映えが相当変わります。 ・ 昨今のプリレンダーCGでは、ほとんどの固定ライトにはエリアライトが使われて います。使い方はむずかしいですが、エリアライトをうまく使いこなせると、ライ ティングの品質がぐっとあがります。

18.

リアルタイムライトと ベイクドライトの使い分け ・ シーンライティングの後半は、リアルタイムライトとベイクドライトの使い分けがポイントとなります。 ここではその使い分けについて考察してみましょう。

19.

リアルタイムライトとベイクドライトの使い分け ・ 「動くライトはリアルタイムで」、というのは至極当たり前ですが、それ以外にも 以下のような使い分けが考えられます。 ・ メリハリのある影やメリハリのある光の差し込みが欲しい時に、リアルタイムラ イトを使う。(特にディレクショナルライト) ・ 一方、柔らかい印象の影が必要で、かつその影が動かなくてもよい場合には、 積極的にベイクドライトを使う。

20.

ライトの配置について ・ ライトの配置の仕方は、シーンごとに違って当たり前なので、絶対ということはありませんが基本があることは間違い ないです。ここではその基本について押さえていきましょう。

21.

ライトの配置について ・ 基本は、カメラをシーンの中心となるモチーフに向けて配置した後で、主光源と なるキーライト、補助光源となるフィルライト、さらに形状などを強調したりする ためのリムライトやバックライトの順に増やしていきます。フィルライトは、GIによ るバウンス光をそのまま使うこともあります。普通はキーライトを一番光量を高 くします。 ・ 複数のフィルライトを使用することもあります。その場合、光の加法混色を使っ てホワイトの光を作るようにすると、非常によい効果が得られます。 ・ 多くの場合、キーライトの向きとカメラの向きを合わせてしまうと、のっぺりとし た画面になってしまうので、避けるべきです。

22.

キーライト、フィルライト、バックライト配置の一例。 カメラの向きと同じ向きのライトがないことに注意。

24.

高さとキャラまでの距離を変えて、 ポイントライトを配置。

26.

ライトの配置について ・ 昼間の自然光によるシーンライティングの場合、キーライトにあたるのは太陽 光です。太陽光としてディレクショナルライトをモチーフに向けて設定した後で、 場合によっては追加のスピルライト(こちらはキーライトよりも暗めにするが、代 わりにカラーを入れる)を追加します。さらにフィルライトとしてのスカイライトを 追加し、バウンス光を足していきます。 ・ もしくは、スカイライトやフォグを調整することで基本となるアンビエントライト の明るさを確保した後で、複数のリアルタイムのディレクショナルライトやポイ ントライトを追加してスペースを分割していくという手法もあります。モチーフが 移動してしまうゲームなどのシーンの場合、こちらのほうがよい場合もあります。 この場合、アンビエントライトは抑えめにして、その他のリアルタイムライトで シーンを彩ってやると、非常によい結果が得られます。(※Deferred推奨)

27.

P.A.M.E.L.A.. / NYVVE STUDIOS

28.

ライトの配置について ・ 屋内の自然光によるシーンライティングの場合、まず最初に設定するのは窓か ら入ってくる外光です。スカイライトを強めに設定することもありますが、それよ りもよいのは、窓の外に大きめのエリアライトを設定し、室内に光を引き込むこ とです。引き込んだ光は、室内でバウンスさせて、基礎となる明るさを作ります。 次に窓から光が直接差し込んでいる場合には、太陽のスピルライトに当たる ディレクショナルライトを設定します。最後に室内に照明がある場合には、そこ にポイントライトなどを配置していきます。 ・ 屋内の自然光によるシーンライティングの場合、部屋や場所ごとに明暗のメリ ハリを付けることで、スペースを分割してやることが大切です。全てが明るすぎ ると、モデルルームのようでカッコ悪い印象になります。

30.

Box Projectionで遮蔽する。 各蛍光灯に同サイズの エリアライトを配置する。

32.

チーティング(作為) について ・ 特にリアルタイムでの3DCGのライティングに関しては、現実のイメージに合わせるために様々なチーティング(作 為)が用いられます。 ・ ここではそれらのチーティング(作為)のテクニックについて考えてみましょう。

33.

チーティング(作為)について ・ チーティング(作為)には以下のような手法があります。 ➢ 実際の光源とは違う位置に、ライトオブジェクトを置いてライティング補正をする。 ➢ ライトオブジェクトの位置にエフェクトを配置することで、光っているように見せる。 ➢ ライトオブジェクトの位置にエミッシブオブジェクトを配置することで、フィジカルライトのように 見せかける。 ➢ スタティックでないオブジェクトに、ベイクドライトの影響を混ぜる。(ライトプローブ) ➢ イメージエフェクトを使って、リアルタイムに陰の補正をする。(SSAO) ➢ シーンデプスに合わせてカラートーンを変える。(カラーフォグ) ……などなど

35.

ライトマップベイクに適した アセット制作について ・ ライトマップベイクを行う前提でアセット制作を行う場合の注意を考えてみましょう。

36.

ライトマップベイクに適したアセット制作について ・ 以下のような点は注意したほうがよいです。 ➢ 【重要】UVは重ならないように展開する。 ➢ モデルはFBX出力前にフリーズし、履歴も整理して、余計な情報がない状態にしておく。 ➢ Unity上でマイナススケールで反転するのは、なるべく避ける。 ➢ ライトマップを焼いて変なまだらのようなアーティファクトが出る場合には、該当オブジェクトの メッシュインポータで「Generate Lightmap Uvs」に☑するとよい。 ➢ 【Tips】ライトマップベイクの調整中は、ライトマップをあまり高い解像度にしない。 (多分だけど、ライトマップ用にUV2を再展開する際に、ライトマップの解像度が高いと UVのパッキングに時間がかかる気がする ※あくまで個人的な印象) ・ 以下のブログは参考になるかも 『デスクトップとコンソールのすごいリアルタイムGI』 http://blogs.unity3d.com/jp/2015/11/05/awesome-realtime-gi-on-desktops-and-consoles/

37.

Maya/Unity間の シーンのイン/アウト ・ 特に特定ライトのベイクや、モバイル向けの軽量化を考えていくと、Maya/Unity間でシーンをイン/アウトさせながら 作業したくなる時がしばしばあります。 ここではその方法およびちょっとしたTipsを紹介します。

38.

Maya/Unity間のシーンのイン/アウト ・ Unity⇒Mayaは、Export2Maya (AssetStore/$60)を使うのがベスト。 UnityのシーンをMayaのMAシーンに変換して、そのまま引き渡せるので超便利。 ・ Maya⇒Unityは、FBXでのエクスポートになる。 その際、Maya側で座標変換が楽になるようなオブジェクトを作って、ライト位 置やカメラ位置にペアレントコンストレイントを使って配置しておくと、Unityに 引き渡した後で、ライトやカメラオブジェクトの再配置が凄く楽になる。 MayaのロケータだとFBXで渡せないので、 テンプレート設定したメッシュオブジェクトを 代わりに使う

39.

https://www.assetstore.unity3d.com/en/#!/content/17079

40.

そのままでは、ライトの座標はUnityにうまく渡らないので、 各ライトの位置に、クロス形状のオブジェクトをペアレントコ ンストレイントする。オブジェクトがライトの位置と回転に一 致したらコンストレイントは削除してよい TemplateをONにして おくと、レンダリングも されなければ、ライトに 影響も与えない。

41.

spotLight_nullの TransformをCopy Component 新規に作成したSpotlightの TransformにPaste Component Valuesをする

42.

そのままだとX軸が反 転しているので… X軸の回転値に+180する Mayaと回転値 が一致した。

43.

Thank you!