【Unity道場スペシャル 2018京都】今日からはじめる。ユニティちゃんトゥーンシェーダー2.0〜Unity道場カラー黒帯スペシャル〜

1.1K Views

November 24, 18

スライド概要

2018/11/24に開催されたUnity道場 京都スペシャル3の講演スライドです。
講師: 小林 信行(ユニティ・テクノロジーズ・ジャパン合同会社)

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

profile-image

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

シェア

またはPlayer版

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

関連スライド

各ページのテキスト
1.

2018/11/24 今日からはじめる。 ユニティちゃんトゥーンシェーダー 2.0 ~Unity道場カラー黒帯スペシャル~ コミュニティエバンジェリスト 小林 信行 ユニティ・テクノロジーズ・ジャパン合同会社

2.

小林 信行 ユニティ・テクノロジーズ・ジャパン合同会社 コミュニティエバンジェリスト UnityやMayaをはじめとする各種3Dツールの研究、ゲーム 制作のノウハウの普及、ユニティちゃんトゥーンシェーダー2.0 の開発をしています。その前は原作付きキャラクターゲーム の企画&監督。 ユニティちゃんプロジェクトの言い出しっぺの一人。 @nyaa_toraneko Nobuyuki-Kobayashi [email protected]

9.

現在、 UST2 v.2.0.5のマニュアルも 公開中です。 かなり頑張って書きましたので 是非、使ってみてください。

11.

ところで、本日のテーマは、予告では以下の3つ ・「したいこと」ベースでの UTS2各シェーダーの使い分け。 ・「キャラの魅力を引き立てよう!」 UTS2の機能を活かしたカラー設計のやり方。 ・「こんな時、どうしたらいいの?」 トラブルシューティング例。

12.

ところで、本日のテーマは、予告では以下の3つ ・「したいこと」ベースでの ぶっちゃけ、これらに関しては、 UTS2各シェーダーの使い分け。 マニュアルを丁寧に読んで ・「キャラの魅力を引き立てよう!」 UTS2の機能を活かしたカラー設計のやり方。 いただいたほうがよいです。 ・「こんな時、どうしたらいいの?」 45分では語りきれませんし… トラブルシューティング例。

13.

というわけで、本日の では、 マニュアルには書かれていないですが、 UTS2を理解する上で、とても大切なことを 語ろうと思います。 それでは始まり、始まり~!

14.

「UST2って、すごいっ!」という方が多い中で… 1. やりたいことがすぐにできた! 2. Photoshopお絵かきと同じだ! 3. UTS2の発色が好き! 4. これ、自作モデルに同梱して販売し ちゃっても、いいんですか? 5. VRでも、モバイルでも、PCでも 使える!(PS4でも使えます)

15.

「UST2って、難しい…」という方も増えました 1. ファイルが多い… 2. どのシェーダーを使えばいいの… 3. UIが英語ばっかだ… 4. 機能が多すぎて、訳わからん… 5. VRChatで、白飛びしやすくない? (解決してます)

16.

「UST2って、難しい…」という方も増えました 1. ファイルが多い… 2. どのシェーダーを使えばいいの… 3. UIが英語ばっかだ… 4. 機能が多すぎて、訳わからん… 5. VRChatで、白飛びしやすくない? (解決してます)

17.

一方、UTS2をすぐに使いこなせる人も沢山いる 1. 普段から2Dイラストに親しんでいる 人は、すぐに使いこなせる 2. 3Dの経験の長さは、あまり関係ない 3. アニメスタジオも含めて、3Dや2Dの プロからは、とにかく評判がよい

18.

すぐに使いこなせる人に、共通している点 1. 色(カラー)を混ぜたり、重ねると、 どんな結果になるかの知識 2. Unityも含め、CGでのライトの役割 3. 配色やカラー選択のコツ これら3要素をしっかりと掴んでいる

19.

すぐに使いこなせる人に、共通している点 とは、 1. 色(カラー)を混ぜたり、重ねると、 どんな結果になるかの知識 2. Unityも含め、CGでのライトの役割 3. 配色やカラー選択のコツ の経験値の高さの ようです。 これら3要素をしっかりと掴んでいる

20.

UTS2の基本仕様 ライトの当たり方を元に、 各カラーをカラー設計 に基づいて配置できる トゥーンシェーダー × 様々な光源に対して、 配置した各カラーが 自然に馴染む トゥーンシェーダー

21.

UTS2の基本仕様 ライトの当たり方を元に、 各カラーをカラー設計 に基づいて配置できる トゥーンシェーダー × 各カラーは、「Intensity=1、カラー がピュアホワイトのディレクショナ ルライト」の下で設定する。 ※本スライドでは、以降の「ディレクショナルライト」は、全て「リアルタイム」とします。 様々な光源に対して、 配置した各カラーが 自然に馴染む トゥーンシェーダー 配置したカラーがどう表示される かは、シーン内に配置された 各ライトやシーンの環境光の 明るさ、カラー、特性に依存する。

22.

UTS2の基本仕様 ライトの当たり方を元に、 各カラーをカラー設計 に基づいて配置できる トゥーンシェーダー × 一定仕様の ライティング下で 保証される 各カラーは、「Intensity=1、カラー がピュアホワイトのディレクショナ ルライト」の下で設定する。 ※本スライドでは、以降の「ディレクショナルライト」は、全て「リアルタイム」とします。 様々な光源に対して、 配置した各カラーが 自然に馴染む トゥーンシェーダー 多様なライティン グ条件の元で、 リアルタイムに 変化しうる 配置したカラーがどう表示される かは、シーン内に配置された 各ライトやシーンの環境光の 明るさ、カラー、特性に依存する。

23.

UTS2 vs Standard Shader 一定仕様の ライティング下で 保証される × 多様なライティン グ条件の元で、 リアルタイムに 変化しうる

24.

本日、持ち帰っていってもらいたいもの 「色を制する者は、 UTS2をも制する」

25.

本日、持ち帰っていってもらいたいもの 「色を制する者は、 UTS2をも制する」 1. 「色」と「色」の足し算、掛け算 2. 「ライト」と「色」の深いカンケイ 3. ピュアな「白」と「黒」には要注意

26.

Color

27.

なぜ、「りんご」は 赤く見えるのか?

28.

The Comprehensive PBR Guide by Allegorithmic – Vol.1

29.

1. 当てる光の中に 反射するカラー がある The Comprehensive PBR Guide by Allegorithmic – Vol.1

30.

1. 当てる光の中に 反射するカラー がある 2. マテリアルの サーフェイスが、 そのカラーを 吸収しない The Comprehensive PBR Guide by Allegorithmic – Vol.1

31.

1. 当てる光の中に 反射するカラー がある 2. マテリアルの サーフェイスが、 そのカラーを 吸収しない The Comprehensive PBR Guide by Allegorithmic – Vol.1 3. 反射した特定の カラーが眼に届く

32.

「色」と「色」の足し算、掛け算

33.

ではここで、「色」に関する問題です 以下の計算の答えは何色? 1.「赤」+「青」=? 2.「赤」×「青」=?

34.

ではここで、「色」に関する問題です 以下の計算の答えは何色? 1.「赤」+「青」=「紫」 2.「赤」×「青」=?

35.

ではここで、「色」に関する問題です 以下の計算の答えは何色? 1.「赤」+「青」=「紫」 2.「赤」×「青」=? 1は想像つくけど、 2はピンとこない

36.

実際にやってみると、「赤」×「青」=「黒」

37.

ではここで、「色」に関する問題です 以下の計算の答えは何色? 1.「赤」+「青」=「紫」 2.「赤」×「青」=? なるほど、「黒」に なるのか!

38.

念のために検算:「赤」+「青」=「紫」 どちらかというと 「淡い紫」

39.

Aさん:「赤」×「青」=「黒」?…「濃い紫」では?

40.

Aさん:念のために検算:「赤」+「青」=「紫」 こちらも、 「淡い紫」

41.

ではここで、「色」に関する問題です 以下の計算の答えは何色? 1.「赤」+「青」=「淡い紫」 2.「赤」×「青」=「黒」? 「赤」×「青」=「濃い紫」? どうしてこうなった?

42.

その前に、「色」を数値で表すと… 赤 ⇒ RGB表示(255,0,0) ⇒ float3(1,0,0) ⇒ 0~255の256段階(8bit表記) ⇒ ⇒ 00000000~11111111 0 ~ 1 に割り当て直す

43.

理由:お互いの考えている「色」が違った ユニティちゃんにとっての「赤」と「青」 「赤」:float3(1.00,0.00,0.00) 「青」:float3(0.00,0.00,1.00) Aさんにとっての「赤」と「青」 「赤」:float3(0.94,0.15,0.31) 「青」:float3(0.18,0.38,0.86)

44.

理由:お互いの考えている「色」が違った ユニティちゃんにとっての「赤」と「青」 「赤」:float3(1.00,0.00,0.00) × 「青」:float3(0.00,0.00,1.00) Aさんにとっての「赤」と「青」 「赤」:float3(0.94,0.15,0.31) × 「青」:float3(0.18,0.38,0.86)

45.

掛け合わせる色のRGBいずれか の要素に0が入っていると、 掛け合わせた結果の色は、 RGBのいずれかの要素が消えて しまう(0になる)

46.

では、足し算は割と近い色だった訳は? ユニティちゃんにとっての「赤」と「青」 「赤」:float3(1.00,0.00,0.00) + 「青」:float3(0.00,0.00,1.00) Aさんにとっての「赤」と「青」 「赤」:float3(0.94,0.15,0.31) + 「青」:float3(0.18,0.38,0.86)

47.

足し算した結果が、1を越えてしまう? ユニティちゃんにとっての「赤」と「青」 「赤」 = 「青」 :float3(1.00,0.00,0.00) + :float3(0.00,0.00,1.00) 「淡い紫」:float3(1.00,0.00,1.00) Aさんにとっての「赤」と「青」 「赤」 = 「青」 :float3(0.94,0.15,0.31) + :float3(0.18,0.38,0.86) 「淡い紫」:float3(1.12,0.53,1.17)

48.

足し算した結果が、1を越えてしまう? Aさんの計算結果としての「淡い紫」 「淡い紫」:float3(1.12,0.53,1.17) 実際に画面に表示されている「淡い紫」 「淡い紫」:float3(1.00,0.53,1.00) 画面表示の際に、 1を越える値は 丸められている。

49.

実際の足し算の結果の画面表示はこうだった ユニティちゃんの色の足し算結果の画面表示 「淡い紫」:float3(1.00,0.00,1.00) Aさんの色の足し算結果の画面表示 「淡い紫」:float3(1.00,0.53,1.00)

50.

色同士を足し合わせた結果、 RGBいずれかの要素が1を越えると、 越えた値は1に丸められて、 画面表示されていることがある ※もう少し正しく言うと、値としては1以上の数値を持つことができるのだが、通常のモニタで は、1を越えたところで一律に白として表現されてしまう。でも値としては存在しているので、 それらをぼかしなども駆使しながら表現するのが、ポストエフェクトのブルームである。

51.

Q: UTS2を使っていて、こんなことに出会うの?

52.

Q: UTS2を使っていて、こんなことに出会うの? A: はい。しばしば出会うことになります。

53.

Q: UTS2を使っていて、こんなことに出会うの? A: はい。しばしば出会うことになります。 UTS2のカラー同士の重ね合わせで、「乗算」とあるものは「色同士の 掛け算」、「加算」とあるものは「色同士の足し算」のことです。 • 乗算の例:ベーステクスチャに、ベースカラーを載せる時 • 加算の例:ベースとなるカラーに、リムライトを追加する時 これらの時に、予想と違うカラーになった場合や、「白飛び」が発生して いるような場合に、これらのことを考えて調整する必要があります。

54.

同じ理屈で「純粋な色」、 すなわち 黒:float3(0,0,0) 白:float3(1,1,1) 赤:float3(1,0,0) 緑:float3(0,1,0) 青:float3(0,0,1) のような色を絡める時には、 注意が必要だ!

55.

「ライト」と「色」の深いカンケイ

56.

続いて、「色」の調整に関する問題です モデルの色を調整するには、どこで行う? 代表的な方法を3つ上げてみよう。 1. 2. 3.

57.

続いて、「色」の調整に関する問題です モデルの色を調整するには、どこで行う? 代表的な方法を3つ上げてみよう。 1.マテリアル 2.ポストエフェクト 3.

58.

続いて、「色」の調整に関する問題です モデルの色を調整するには、どこで行う? 代表的な方法を3つ上げてみよう。 1.マテリアル 2.ポストエフェクト 3.ライト

59.

続いて、「色」の調整に関する問題です モデルの色を調整するには、どこで行う? その通り!ライトで色味を 代表的な方法を3つ上げてみよう。 変えられるのを、 しばしば忘れがちだ! 1.マテリアル 2.ポストエフェクト 3.ライト

60.

よくあるミス「正しい色が出ない…」

61.

よくあるミス「正しい色が出ない…」 カラー設定の最中な のに、なんでディレク ショナルライトに色が ついてるのぉぉぉっ!? シーンに最初からあるディレクショナル ライトは「白」ではありません

62.

UTS2 vs Standard Shader ライトがマテリアルに当たる時に発生する要素は、 UTS2、St.S共に一致するので、各場所にどんなカラー を入れたら自然かは、実物から観察できる

63.

UTS2:影色を配置する領域に カラーが自由に配置できる UTS2 vs Standard Shader

64.

ライトとマテリアルカラーとの関係 UTS2/St.S:ディレクショナルライトがマテリアルに当たっている時、 そのカラーへの影響は、「掛け算」になる。 UTS2のみ:白の明るさ1のディレクショナルライトが当たっている時、 基本色/1影色/2影色に配置したカラーは、設定通りに見えている。 グレー40% グレー80% 設定カラー ⇒ ライトの明るさ (Intensity)= 0.5 グレー160% ⇒グレー100% ⇒ ライトの明るさ (Intensity)= 1 ライトの明るさ (Intensity)= 2 ※リアルタイムポイントライトには、これに加えて距離減衰があるので、さらにややこしい。

65.

ライトとマテリアルカラーとの関係 UTS2/St.S:ディレクショナルライトがマテリアルに当たっている時、 そのカラーへの影響は、「掛け算」になる。 UTS2のみ:白の明るさ1のディレクショナルライトが当たっている時、 基本色/1影色/2影色に配置したカラーは、設定通りに見えている。 グレー40% グレー80% 設定カラー ⇒ ライトの明るさ (Intensity)= 0.5 グレー160% ⇒グレー100% ⇒ ライトの明るさ (Intensity)= 1 ライトの明るさ (Intensity)= 2 ※リアルタイムポイントライトには、これに加えて距離減衰があるので、さらにややこしい。

66.

ここで思い出してもらおう! 色の掛け算の時に、 どんなカラーを注意すべき だったかな?

67.

ここで思い出してもらおう! 色の掛け算の時に、 どんなカラーを注意すべき だったかな? 掛け合わせる色のRGBいずれか の要素に0が入っていると、 掛け合わせた結果の色は、 RGBのいずれかの要素が消えて しまう(0になる)

68.

その通り! さらに色の計算結果が1を 越える時に、どんなことに 注意すべきだったかな? 掛け合わせる色のRGBいずれか の要素に0が入っていると、 掛け合わせた結果の色は、 RGBのいずれかの要素が消えて しまう(0になる)

69.

掛け合わせる色のRGBいずれかの 要素に0が入っていると、 掛け合わせた結果の色は、 RGBのいずれかの要素が消えて しまう(0になる) 上出来だ!これから 「調整の余地が少ない カラー」があることが わかるが、わかるかな? 色同士を足し合わせた結果、 RGBいずれかの要素が1を越えると、 越えた値は1に丸められて、 画面表示されていることがある

70.

「調整の余地が少ないカラー」ってどんなの? 「調整の余地が少ないカラー」とは、RGBのいずれかの 値に0や1が入っているものを指します。 それらの要素が、1として天井に張り付いているために、 加算されても白飛びが進む方向にしか変化しないか、 0として乗算されることでフィルタのように働いてしまうからです。 「淡い紫」:float3(1.00,0.53,1.00)

71.

「調整の余地が少ないカラー」ってどんなの? 「調整の余地が少ないカラー」とは、RGBのいずれかの 値に0や1が入っているものを指します。 それらの要素が、1として天井に張り付いているために、 加算されても白飛びが進む方向にしか変化しないか、 0として乗算されることでフィルタのように働いてしまうからです。 「淡い紫」:float3(1.00,0.53,1.00) このカラーなども、 RBが1に張り付いている限り、 Gをいくら足してやっても 緑は混じらず、 白くなっていくだけだ。

72.

「調整の余地が少ないカラー」を使いがちなところ 1. リアルタイムライトのカラー設定時、 特にポイントライトを使用する時 2. 「白」や「黒」のカラーを、キャラクターの イメージカラーとして使用する時 上のようなカラー設定をして いると、RGBの各要素が0や1 に張り付いているカラー を設定しがちだ。 注意しよう!

73.

「調整の余地が少ないカラー」を使いがちなところ 1. リアルタイムライトのカラー設定時、 特にポイントライトを使用する時 2. 「白」や「黒」のカラーを、キャラクターの イメージカラーとして使用する時 上のようなカラー設定をして いると、RGBの各要素が0や1 に張り付いているカラー を設定しがちだ。 注意しよう!

74.

ポイントライトのカラー設定の一例 ⇒

75.

ライトカラーの微調整で白飛びの軽減をする

76.

トーンマッパーでも抑え込むことはできるが… ⇒ もちろん、カラーグレーディングの トーンマッパーを使って、 白飛びを抑え込むのもアリだ。 HDR時代には必須のテクと 言えるだろう!

77.

トーンマッパーでも抑え込むことはできるが… ⇒ もちろん、カラーグレーディングの トーンマッパーを使って、 白飛びを抑え込むのもアリだ。 HDR時代には必須のテクと 言えるだろう! その場合でも、トーンマッパーを かける前に白飛びはなるべく抑えた ライティングをするのは 基本中の基本だ!

78.

UTS2だけの裏技:SceneLights HiCut_Filter ⇒ 最後に、UTS2には SceneLights HiCut_Filterという 白飛び抑制フィルタがある。

79.

UTS2だけの裏技:SceneLights HiCut_Filter ⇒ 最後に、UTS2には SceneLights HiCut_Filterという 白飛び抑制フィルタがある。 このフィルタをONにすれば、 トーンマッパーをかけなくても 白飛びの防止がおおよそできる! さすが大鳥重工製だな!

80.

UTS2だけの裏技:SceneLights HiCut_Filter

81.

ピュアな「白」と「黒」には要注意

82.

「白」と「黒」は、表現するのが難しい

83.

この問題は、特に「白」のほうが重大だろう。 何故なら、現実世界の「白」は、紙の地色の イメージで、自己発光はしないものだが、 CGの世界の「白」は、通常のカラーの中で 最も明るいカラーだからだね。すぐに自己 発光しているように見えてしまう。 他にも、白、グレー、黒といった無彩色系の カラーには、こんなトリックもある。

84.

この問題は、特に「白」のほうが重大だろう。 何故なら、現実世界の「白」は、紙の地色の イメージで、自己発光はしないものだが、 CGの世界の「白」は、通常のカラーの中で 最も明るいカラーだからだね。すぐに自己 発光しているように見えてしまう。 他にも、白、グレー、黒といった無彩色系の カラーには、こんなトリックもある。

85.

この問題は、特に「白」のほうが重大だろう。 何故なら、現実世界の「白」は、紙の地色の イメージで、自己発光はしないものだが、 CGの世界の「白」は、通常のカラーの中で 最も明るいカラーだからだね。すぐに自己 発光しているように見えてしまう。 他にも、白、グレー、黒といった無彩色系の カラーには、こんなトリックもある。

86.

この問題は、特に「白」のほうが重大だろう。 何故なら、現実世界の「白」は、紙の地色の イメージで、自己発光はしないものだが、 CGの世界の「白」は、通常のカラーの中で 最も明るいカラーだからだね。すぐに自己 発光しているように見えてしまう。 他にも、白、グレー、黒といった無彩色系の カラーには、こんなトリックもある。

87.

人の眼は、カラーや明るさをそのまま解釈している訳ではない これは 「色の恒常性」 にまつわる例だ AとBのマスは、実は同じ色 http://kazoo04.hatenablog.com/entry/2015/02/27/150642

88.

人の眼は、カラーや明るさをそのまま解釈している訳ではない 段々自分の目が 信じられなくなって きただろう! AとBのマスは、実は同じ色 http://kazoo04.hatenablog.com/entry/2015/02/27/150642

89.

人の眼は、カラーや明るさをそのまま解釈している訳ではない このドレスの色は? 1. 青と黒 2. 白と金 他にも、昔、話題になった例 で、こんなものがあった。 ちなみに正解は1だが、 だまされてもしょうが ないような例だ。

90.

人はものを見る時にその物体の色 (光の波長)をそのまま解釈し、 知覚している訳ではない。 特に環境光の影響や、フィルタなど で隣り合ったカラーのコントラストが 落ちている時には、しばしば違う色と 間違えることもある。

91.

人はものを見る時にその物体の色 (光の波長)をそのまま解釈し、 知覚している訳ではない。 特に環境光の影響や、フィルタなど で隣り合ったカラーのコントラストが 落ちている時には、しばしば違う色と 間違えることもある。

92.

これは、見方を変えれば、環境光や 隣接するカラーを上手く使うことで、 「白」や「黒」のように「調整しにくい カラー」を使わなくても、「白」や「黒」 を感じさせるカラーがある、ということ でもある。 その実例を見てみよう。

93.

どっちの 白 が、引き立って見える? ©カラー

94.

白の輝きを印象づける、陰色 ©カラー

95.

白の輝きを印象づける、陰色 ©カラー

96.

• float3(0,0,0)の黒や、float3(1,1,1)の白は 極力マテリアルカラーには使わないように しよう。ライトカラーを完全に吸収してしまう か、明るさをそのまま跳ね返してしまうぞ。 • 「白」や「黒」をキャラクターカラーとする時 には、文字通りにピュアな白や黒は選ばな いこと。陰色とのコントラストで、「白」や「黒」 のように見せるのがコツだ!

97.

• float3(0,0,0)の黒や、float3(1,1,1)の白は 極力マテリアルカラーには使わないように しよう。ライトカラーを完全に吸収してしまう か、明るさをそのまま跳ね返してしまうぞ。 • 「白」や「黒」をキャラクターカラーとする時 には、文字通りにピュアな白や黒は選ばな いこと。陰色とのコントラストで、「白」や「黒」 のように見せるのがコツだ!

98.

Thank you! ご静聴ありがとうございました