UnitychanToonShader2.0かわいい

ユニティちゃんトゥーンシェーダーVer.2.0が発表されました。

シェーダーのダウンロードはこちらから。 unity-chan.com

この記事は、そのUnitychanToonShader2.0について解説していただいた、ntnyさんの配信の個人的メモです。 動画を観るとUnitychanToonShader2.0の使い方がわかります。

www.twitch.tv

間違って書いてしまっている部分とかもあるかもしれませんが、そこはご了承ください。 また、何か問題があればTwitterなどで連絡ください。

こちらもどうぞ。

togetter.com

アウトラインなしシェーダー

アウトラインなしにしたい場合は、UnityChanToonShader->NoOutlineの中に同様のフォルダがあるのでその中のシェーダーを選択する。

天使の輪っかが欲しい(AngelRing)

アウトライン有りはUnityChanToonShader->AngelRing。 動画ではアウトラインなしの、UnityChanToonShader->NoOutline->AngelRing->ToonShadingGradeMapを使用。 目に髪の毛や眉毛を透過させたいといった場合には、ToonShadingGradeMap_StencilMaskとToonShadingGradeMap_StencilOutを使うことで対応できる。

HighColor_Powerが従来のハイライトの値。 これだと描いている感じがしない場合、AngelRingの機能を使用する。

AngelRingのチェックを付ける。 このままだと何もおきない。 AngelRingを使うには、uv2というものを作る必要がある。

通常のモデルに貼り付けるテクスチャがuv1。 ハイライトを制御するのがuv2である。

uv2の作り方

f:id:finap:20170513140059p:plain 今回はメタセコイヤでuvの値が入った髪の毛モデルを残して、FBXで出力。

メタセコイヤでは法線が調整できないので、他のDCCツールを使って、uv2を作る。

  • ntnyさん「メタセコの水野さん(?)見てくれないかな~どれだけ法線調整が大切か知ってくれないかな~(チラチラ)」

今回は3DSMAXを使って法線を調整する。 AngelRingは法線の影響が大きいので、まずは法線を調整する。 f:id:finap:20170513140112p:plain

UVは平面投影でやる。 f:id:finap:20170513140200p:plain 描いたハイライトが、そのまま平面投影される形になる。 テクスチャに描いた色も反映されるけど、シェーダー側で設定できる。

次にMaya。 FBX吐き出すだけ。Unity上で合うnamespaceになるからいいらしい。 Mayaで法線調整できる人はMayaでもいい。

UnityでUnityちゃんの髪の毛を消す。 先程吐き出した髪の毛をアタッチする。

シェーダーをいじる

BaseColor、1st_ShadeColorで色のみをつけられる。 2nd_ShadeColor(2影)制御が難しいので、もう一声欲しい人が使うといい。(最初はおすすめしない) 基本は2nd_ShadeColor_Stepを0にして切っておいて、1陰のみで調整したほうが後で2陰が役に立つ。 まず2陰は背景照り返し用に使うといった運用がいいらしい。

ハイライトを当てる

AngelRingを有効にして、 AngelRing_Samplerにテクスチャを適用すると、AngelRingが出る。 AR_OffsetUとAR_OffsetVのARはAngelRingの略。 AR_OffsetVの値が入ると、縦方向に動かしてもベタ貼りっぽくなく見せられる。

AR_OffsetV値が0の時。 f:id:finap:20170513131652g:plain

AR_OffsetV値が0以上の時。 f:id:finap:20170513131621g:plain

注意点。uv2は光源に追従しない。

質問コーナー

Q:水で濡れたような表現も可能ですか?

テカテカにしたいんだったら、通常のシェーダー使った方がいいのでは?

Q:凸凹関係なく輪っかがすっと入れることができるということですか?

概ね合っているのですが、法線に影響は受けてしまうので、調整しないと陰がバキバキになってしまう。 法線は調整しましょう。 f:id:finap:20170513131221p:plain 左が法線調整済み。右が調整前。濃い陰に注目。

アウトライン

法線押出でやっていると、目の凹んでいる部分が鬱陶しい。

Outline_Samplerを使うとモノクロマップでアウトラインを消せる。 黒いところが消える。Ver1でも使える。 (動画では白目部分を黒くのを忘れて苦戦していた)

Farthest_DistanceとNearest_Distanceは、カメラの距離に応じて線の太さが変わるオプション。

GradeMap

NormalMapを使わずに、いい感じに影を落とせるようになる。 NormalMapよりもアバウトに作れるので、描いた絵っぽくなる。 髪の毛とか、服のしわとか。 f:id:finap:20170513131248p:plain

Cull Mode

カリングモード。 OFFにすると両面。FRONTで前が見えなくなる。BACKは後ろが見えなくなる。

Tweak_SystemShade

落影の強さを調整できる。 1st_ShadeColor_Stepとセットで調整する。 凄い表現力が変わるのでおすすめとのこと。 f:id:finap:20170513135927g:plain

ブラシっぽい表現をする

1st_ShadeColor_Featherの値をいじると可能。 f:id:finap:20170513135954p:plain

2陰を使うと、色の違う陰を使う表現ができる

紫を陰に使うような表現ができる。 f:id:finap:20170513135834g:plain

トゥーン表現小技

凹凸を無視して影を落としたいとき、影専用の見えない板を用意する。 3DObjectのPlaneをアタッチする。Shadow Onlyにし、Layerを適用にしたいものにすればOK。 CullingMaskをNothingにしてから、適用したいものだけにすれば、専用の光源になる。 f:id:finap:20170513131342p:plain

カメラ近づけると歪んじゃうときに便利なスクリプト

UnityはSceneのFov値を調整できない。

それを調整できるようにしたのが、Matsuokaさんが作ってくれた、Release Experimental Release (0.1.9) · t-mat/UnitySceneViewFovControl · GitHubが便利。