セルシェード

色々作業中。試したこと考えたことメモ。
多分UE4.6くらい


参考

UE4でセルシェードをするための問題点

ライティング

シェーディングどうする問題

  • 「SceneTexture」の「BaseColor」、「SceneColor」を使用すると陰影が出てしまう。
    なので、基本色には「DiffuseColor」を使用して、上記ライティング逆算結果から影を付けている。

エミッシブ出ない問題

  • 上記シェーディングで、「DiffuseColor」を使用してしまうと、今度はエミッシブが適用できずBloomを炊けない。
  • 他にアルファを使用しない縛りであれば、エミッシブを炊くのはTranslucentにしてしまえば適用できるというトリックでいけるかもしれない。

女優ライト問題

アーティストが影色指定できない問題

テクニック的な

ポストプロセスマテリアルで、特定のマテリアル部分だけ判定したい

  • 髪だけ別のシェーディングしたい、的な
    条件として、メタリックの数値をシーンで一切使っていないこと。
  • マテリアル側で、メタリックを0.01に設定して
     ue4-cellshade_teq0101.png
  • ポストプロセス側で、ifで0.0より大きいか判定して表示。
     ue4-cellshade_teq0102.png

マテリアルのメタリック0.01とかなら見た目でほぼわからないからいーよねー、という適当。
(地面はメタリック入ってしまっている)
 ue4-cellshade_teq0103.jpg

背面法によるアウトライン

  • UE4のマテリアルでは描画面逆転する方法がない?
  • なので、モデルデータに描画面を逆転した状態のメッシュを複製して、専用のマテリアルを割り当てておく
  • マテリアルを「Unlit」にして、頂点法線方向に「ワールド位置オフセット」を付ける。
     ue4-cellshade_teq0201.png

他にスマートな方法が無いか検証中
 ue4-cellshade_teq0202.png

→ 「TwoSidedSign」ノードが追加されたので、マテリアルをDouble SideにしてMaskedで表面抜いてやればOK
https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/ExpressionReference/Constant/#twosidedsign
背面用メッシュは、PoseableMeshComponent使えばOK
http://historia.co.jp/archives/5587

W.I.P.

ライティング結果さえ抽出できれば、後はUE4に関係ない部分ではあるけど。

影の色

  • 前述の通り、現在はアーティスト側で指定できないので計算で。
  • セルシェードにおいて、明度を下げるだけの影は違う。ので彩度も上げた。
  • 明度だけ / 彩度も弄った
     ue4-cellshade_wip04.png

Unityちゃん、通常レンダリング / セルシェード / アウトライン無し / アウトラインにカラー付け

  • アウトラインのカラー付けは、明度下げたり彩度上げたりした。
     ue4-cellshade_wip01.png
  • ニコニ立体ちゃん版。通常レンダリング / セルシェード / アウトラインにカラー付け
    Unityちゃんよりセルセルっぽい。アウトラインのカラー付けもこっちの方が映える
     ue4-cellshade_wip02.png

髪のスペキュラー弄る

  • Unityちゃん、スペキュラー無し / 変更前のスペキュラー / 弄った後のスペキュラー
    色々レイヤー合成してみた。
     ue4-cellshade_wip03.png

    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS