過去にUE4でトゥーンやセルルック表現についてを解説しました。
またエピック下田さんが開発したNPRマテリアルを利用することにより、同じようなことが可能となります。
これらの手法を使うのは当然ありなのですが、上記はエンジンビルドが必要だったり、複雑なマテリアルを使いこなす必要があります。
まずお手軽に、そして比較的安価な手法によるセルシェーディング可能な方法が海外フォーラムで公開されていました。
セルシェーディングポストプロセス
この手法はかなり単純なもので、比較的誰でもすぐに利用可能です。詳しいやり方は公式のWiki上にも掲載されていますので、そちらも参考に。
Cel Shading Post Process - Epic Wiki
やっていることはポストプロセスマテリアルにより、シーンテクスチャーからポストプロセス入力とディフューズカラーを割り算したものをクランプしておき、Rチャンネルの情報をマスクで取り出します。
その結果をカラールックアップテーブルテクスチャーとディフューズカラーのRGBをかけ算したものをポストプロセスマテリアルとして渡すだけです。
なんとこれだけでもうセルシェーディング可能です。Texture Sampleノードにはカラールックアップテーブルテクスチャーが必要です。今回自分の環境ではペイントソフトを使って以下のようなグレーとホワイトのみのテクスチャーを用意しました。
このテクスチャーをインポートし、テクスチャーエディターを開いて以下の画像のようにsRGBを切り、タイリングをクランプし、フィルターにNearestを利用します。
この他にもポストプロセスマテリアルで、"Blendable Location"を"Before Translucency"を設定したり、ポストプロセスボリュームで、ブルームのintensityを0、自動露出(Auto Exposure)のminとmaxのbrightnessを2に設定しておきます。画面全体に効果をかけるので、"Unbound"のチェックもつけておきます。
シーン内のマテリアルにはラフネス1、メタリック0、エミッシブ0にしておく必要があるとありますが、これらの設定はなくても大差がないと私は感じました。場合によっては設定した方がより良い効果がでるかもしれません。
これで以下のような結果を得ることができました。
とりあえず試しにセルシェーディングしてみた。結構お手軽にできた。ライトはディレクショナルライトを回し続けてます。やっているとそんなに特殊なことはなかった。#UE4Study pic.twitter.com/mRaWU0GYSu
— alwei (@aizen76) May 29, 2016
いつものようにレーシングミクにも適用してみます。
アウトラインは当然ありませんが、なかなか悪くないような感じです。
メリットとデメリット
この手法を用いた際のメリットは以下のもののようです。
・キャストシャドウがしっかりと落とせる
・そしてそのシャドウを自身で受け取れる
・UE4標準ライトを使って調整可能
・ノーマルマップもサポート
逆にデメリットは以下のようです。
・セルシェーダーがシーン全体にかかる
・ディフューズとノーマルしかサポートしない
・非効率的(処理負荷が高め)
・リフレクション、ブルーム、エミッシブなポストプロセスを中断する
色々メリットとデメリットはありますが、最大の利点はやはり利用しやすいということです。誰でも簡単に組める程度の内容です。
ぜひお試しを
折角なので、今回私が自分で組んだポストプロセスマテリアルとルックアップテーブルテクスチャーを公開しておきます。
以下のものをポストプロセスマテリアルとして利用すれば比較的すぐにトゥーン(セル)シェーディングが利用可能です。
https://dl.dropboxusercontent.com/u/48003650/CelShade.zip
利用する際にはContentフォルダー直下にフォルダーごと配置すればプロジェクト内で利用できます。
ぜひみなさんもダウンロードして色々試して遊んでみてください!!
続き