• 追加された行はこの色です。
  • 削除された行はこの色です。
* セルシェード [#q04f5914]

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

- まとめページはこちらに
UE4のセルシェード実装方法を纏めたい - Qiita
http://qiita.com/com04/items/a7895160df8d854fe924

- ''UE4.14くらいの僕''
「エンジン改造安定」
-- UE4.14.0 Forward Shadingのエンジン改造でセルシェードやってみた - Qiita
https://www.slideshare.net/com044/ue4140-forward-shading-69295343
-- [[第7回UE4ぷちコン]] (Deferredをエンジン改造)

- ''UE4.17くらいの僕''
「エンジン改造は程々で、後はマテリアルでいいや」
----

#contents

* 参考 [#s774fd54]

- UE4のセルシェード実装方法を纏めたい - Qiita
http://qiita.com/com04/items/a7895160df8d854fe924

- UE4でToonシェード 
wiki内: ポストプロセス-マテリアル-Toonシェード

- Unreal Engine Forum : ノンフォトリアルやセルルック等の独特なレンダリングを! 
https://forums.unrealengine.com/showthread.php?49796-%E3%83%8E%E3%83%B3%E3%83%95%E3%82%A9%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%84%E3%82%BB%E3%83%AB%E3%83%AB%E3%83%83%E3%82%AF%E7%AD%89%E3%81%AE%E7%8B%AC%E7%89%B9%E3%81%AA%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0%E3%82%92%EF%BC%81

- Unreal Engine Forum : Advanced Cel Shader Pack [Submitted] 
https://forums.unrealengine.com/showthread.php?44471-Advanced-Cel-Shader-Pack-Submitted

- ニコニコ立体さんをUE4で表示するという流れに乗って遊んでみました。
https://twitter.com/housakusleeping/status/528575375689793536

- Unreal engine 4でのリアルタイムセルルック3DCGアニメーション
http://www.slideshare.net/masahikonakamura50/unreal-engine-43dcg


* UE4でセルシェードをするための問題点 [#xe89d905]
** ライティング [#y822d7a3]
*** シェーディングどうする問題 [#q83ae138]
- UE4ではライティングが内部的に行われ、ユーザーがフックする事ができない。
なので従来のようにライティング計算時にシェーディングを弄る事が出来ない。
のでポストプロセスでシェーディング結果から、ライティング値を逆算する手法で試している。
[[シモダさんのサンプルを参考>https://forums.unrealengine.com/showthread.php?49796-%E3%83%8E%E3%83%B3%E3%83%95%E3%82%A9%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%84%E3%82%BB%E3%83%AB%E3%83%AB%E3%83%83%E3%82%AF%E7%AD%89%E3%81%AE%E7%8B%AC%E7%89%B9%E3%81%AA%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0%E3%82%92%EF%BC%81]]
 &ref(ue4-cellshade01.png,,60%);

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

- もしライト1灯だけ、というなら全マテリアルを「Unlit」にしてポストプロセスで自前計算してもいいかもしない。

*** エミッシブ出ない問題 [#gf4b2c40]
- 上記シェーディングで、「DiffuseColor」を使用してしまうと、今度はエミッシブが適用できずBloomを炊けない。

- 他にアルファを使用しない縛りであれば、エミッシブを炊くのはTranslucentにしてしまえば適用できるというトリックでいけるかもしれない。

*** 女優ライト問題 [#vf8618e5]
- %%UE4では、ライトを特定のモデルにだけ適用する、といった事が出来ない。%%
%%セルシェードのみならずキャラクター物で良く使用される女優ライトが適用できない。%%
%%自前でどうにかするしかない。%%
→ 4.11辺りでLighting Channels機能が入った: https://docs.unrealengine.com/latest/INT/Engine/Rendering/LightingAndShadows/LightingChannels/ 

*** アーティストが影色指定できない問題 [#o6571123]
- %%UE4のポストプロセスでセルシェードを行った場合。%%
%%UE4のGバッファーにはユーザーデータを書き出せないので、通常のセルシェードで良く行われる、このマテリアルの影の色はこの色、といった指定が出来ない。%%
%%対応方法考え中。%%
→ 対応してみた
https://twitter.com/com04/status/863247409152794628
 &ref(ue4-cellshade02.png,,80%);

* テクニック的な [#y0c741db]
** ポストプロセスマテリアルで、特定のマテリアル部分だけ判定したい [#g2370ce4]
- 髪だけ別のシェーディングしたい、的な
条件として、メタリックの数値をシーンで一切使っていないこと。
- マテリアル側で、メタリックを0.01に設定して
 &ref(ue4-cellshade_teq0101.png,,60%);
- ポストプロセス側で、ifで0.0より大きいか判定して表示。
 &ref(ue4-cellshade_teq0102.png,,60%);

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

** 背面法によるアウトライン [#n2eb4990]
- %%UE4のマテリアルでは描画面逆転する方法がない?%%
- %%なので、モデルデータに描画面を逆転した状態のメッシュを複製して、専用のマテリアルを割り当てておく%%
- %%マテリアルを「Unlit」にして、頂点法線方向に「ワールド位置オフセット」を付ける。%%
 &ref(ue4-cellshade_teq0201.png,,60%);

%%他にスマートな方法が無いか検証中%%
 &ref(ue4-cellshade_teq0202.png,,60%);

→ 「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. [#xa9882a1]
ライティング結果さえ抽出できれば、後はUE4に関係ない部分ではあるけど。

** 影の色 [#o0cad735]
- 前述の通り、現在はアーティスト側で指定できないので計算で。
- セルシェードにおいて、明度を下げるだけの影は違う。ので彩度も上げた。
- 明度だけ / 彩度も弄った
 &ref(ue4-cellshade_wip04.png,,40%);

** Unityちゃん、通常レンダリング / セルシェード / アウトライン無し / アウトラインにカラー付け [#j1c3efbe]
- アウトラインのカラー付けは、明度下げたり彩度上げたりした。
 &ref(ue4-cellshade_wip01.png,,40%);

- ニコニ立体ちゃん版。通常レンダリング / セルシェード / アウトラインにカラー付け
Unityちゃんよりセルセルっぽい。アウトラインのカラー付けもこっちの方が映える
 &ref(ue4-cellshade_wip02.png,,40%);

** 髪のスペキュラー弄る [#j0b0d683]
- Unityちゃん、スペキュラー無し / 変更前のスペキュラー / 弄った後のスペキュラー
色々レイヤー合成してみた。
 &ref(ue4-cellshade_wip03.png,,40%);



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