44
43

More than 3 years have passed since last update.

UE4のセルシェード実装方法を纏めたい

Last updated at Posted at 2016-12-04

Unreal Engine 4 (UE4) Advent Calendar 2016の12月5日の記事です。

UE4は標準ではセルシェードに対応していません。
そこでUE4でセルルック、セルシェードを実装されている方々の手法のリンクを纏めました。

何か間違い有りましたら指摘ください。
今後また見つけたら随時追加していきます。

シェーディング

手法 概要 実装コスト エンジン改造 メリット デメリット
Unlit or Emissive UE4のシェーディングを動かないようにしてマテリアル内で自前ライティング 安い 不要 マテリアル毎にシェーディングや色を設定できる UE4のライト計算や影を使用できなくなる
PostProcess ポストプロセス-マテリアル弄ってライティング 安い 不要 UE4のシェーディングを使用しつつカスタマイズが出来る マテリアル単位での追加の色設定等が難しい
エンジン改造 エンジンコード弄ってシェーディング 高い 必須 思いのままに実装できる 実装、保守コストが高い

Unlit or Emissive

マテリアルをUnlitにしたり、Emissiveカラーだけを出力に使用する。
そしてマテリアル内で自前でライティングを計算し、結果を出力に繋ぐ。

参考

Post Process

Post Processマテリアルでライティングの数値を逆算して算出、そのライティングの数値を弄ってシェーディングする。
ライティングの数値さえ取れれば使い勝手が良いので、多分現状だと一番使用されている手法っぽい。

参考

エンジン改造

UE4はソースコードが公開されているので、そっちを書き換える。
拡張性は一番高いけど、多少コードを読み書き出来る必要有り。
また、エンジンのバージョンが上がる度にマージしないといけないのでコストが高い。

参考

その他

輪郭線

手法 概要 実装コスト 処理負荷
背面法 モデルを複製・拡大してバックフェイスをレンダリング そこそこ モデル数依存
Post Process ポストプロセス-マテリアルで抽出して線をレンダリング 安い スクリーン解像度依存

背面法

モデルを法線方向に拡大してバックフェイスをレンダリング→通常モデルをレンダリング。すると拡大した分だけ線が残ってアウトラインになる。
メッシュ数・ポリゴン数が2倍になるので、モノが増えれば増えるほど処理負荷が高くなる。

そのままだと、カメラ距離によって線の太さが変わる。

参考

Post Process

Post Processマテリアルで、法線や深度をベースにLaplacianやSobel、Prewittフィルターを使用して輪郭を抽出してレンダリングする。
実装しやすい、ポストプロセスなので処理負荷が一定になりやすい。

キャラクターの一部分だけ線を細くしたい、とかカメラ距離によって線の太さを変えたい、となった場合は色々対応が必要。

参考

その他

その他

リムライトやスペキュラ、ディフュージョンフィルター等など他にも色々要素があります。

参考

マーケットプレイス

レビュー

締め

明日のUnreal Engine 4 (UE4) Advent Calendar 2016kb10uyさん記事です。

44
43
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
44
43