2015年3月22日日曜日

【UE4】セルっぽいルックを頑張ってみる その2(カラー)

カラーについてです。


比較しやすいように最終ルックを最初に載せておきます。

【最終描画】

次に、今回説明するカラーの部分だけを抜き出してみました。
【カラー】
見ての通り、セルルックのベースとなる部分です。
キャラの方にエッジが入っているのはキャラのモデルとして線をポリゴンで描画しているためです。

そして以下がオブジェクトに使用しているマテリアルの全体図です。
UE4側のライティングによる陰の生成は不要なので、エミッシブに接続します。
赤枠で囲っている部分がカラーの処理部分となります。
【マテリアル全体図】

セルルックにはポストプロセスでやるやり方もありますが今回はオブジェクトごとのマテリアルで処理するやり方を採りました。

理由としては、
 ・カスタム仕様のポストプロセスが使えないスマフォなどでもセルルック表現ができる
 ・光源の方向と色を個別に指定できるのでワールドに配置した光源に左右されない画作りが可能
ということです。

 デメリットとして、エミッシブを使う関係でセルフシャドウが使えないことが挙げられますが、セル調でやる分には変な影が落ちないのでそれはそれで良いのではないかと思います。キャラモノではよくあるような頭が大きかったり髪型が大きかったりして体の大半が影になるのも見た目上はあまり良くないですし。
 それでもまったく影が落ちないのも不自然なので影ができやすい首元などは影用のマスクテクスチャをつかって処理しています。


具体的な処理手順は
  1. 光のベクトルとピクセルの法線から内積を使って角度差を算出
  2. ルックアップ画像を元に光か陰かを判別
  3. 固定陰用のマスク画像を元に光か陰かを判別
  4. 判別した数値を元に、指定された光と陰の色に線形補間
以上の手順を実装したマテリアル関数です。
【カラー生成マテリアル関数】
【ルックアップ画像】
陰の範囲を調整するルックアップ画像はShadowRangeの値が0.5のときに90度になるようになってます。
 陰の色味についてはGGXrd方式のテクスチャで指定するようにしようかとも考えたのですが、素材を用意できる自信がなかったのと、お手軽さを優先して単色で指定するようにしました。

 固定陰画像についてはマスク用の画像を用意し、画像のRチャンネルを陰、Gチャンネルを髪スペキュラ用のマスクとして使用しました。スペキュラについては次の記事で触れるつもりです。
【マスク画像の例】
R=陰、G=髪スペキュラ


以上がカラーについての解説になります。
次回はハイライトについて書こうかと思います。


前: 【UE4】セルっぽいルックを頑張ってみる その1(概要)
次: 【UE4】セルっぽいルックを頑張ってみる その3(ハイライト)

2 件のコメント:

  1. Hello I use this material ,but temporalAA did not work .the outline is not smooth.how to use it in post effect?

    返信削除
    返信
    1. Hi, The value of PostprocessMaterial BlendableLocation is AfterTonemapping?
      Please try change to BeforeTranslucency or BeforeTonemapping.

      https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/PostProcessMaterials/index.html

      削除