ユニティちゃんトゥーンシェーダー
(出典:unity3d-jp )
公式サイト:
ユニティちゃんトゥーンシェーダー 2.0 | UNITY-CHAN! OFFICIAL WEBSITE [公式]
使い方
UTS2 のシェーダーを使用するには、公式サイトのダウンロードページもしくは GitHub リポジトリのリリースページからダウンロードした UTS2_ShaderOnly_v2.xx.xx_Release.unitypackage
をインポートする。ビルトインレンダーパイプラインで使用する場合は Legacy/Built-in
と表記されたもの、URP で使用する場合は Universal
と表記されたものを使用する。
→ ダウンロード
→ リリース
シェーダーの使用方法は、UTS2_Manual_ja.md 及び UTS2_Props_ja.md を参照する。
参考:
簡単設定!ユニティちゃんトゥーンシェーダーでアニメ調にする方法 | CG メソッド
概要
参考:
ユニティちゃんトゥーンシェーダー2.0 (UTS2.0) を調査 | C++ 幼女先輩
ユニティちゃんトゥーンシェーダー 2.0 使いこなしスペシャル – SlideShare
導入
参考:
ユニティちゃんトゥーンシェーダー入門以前あるいは現代トゥーンシェーダーへの橋渡し | izm_11’s blog
推奨環境
- Unity 2019.4.31f1 以降
- レンダリングパス: フォワードシェーディング
- 色空間: リニア
ドキュメント:
ターゲット環境 – UTS2_Manual_ja.md at release/legacy/2.0 – GitHub
シェーダーの種類
- 基本
- No Outline
- Angel Ring
- Mobile
- Tessellation
- Helper
シェーディング
- Double Shade With Feather
- Shading Grade Map
アルファ/透明
- Clipping
- Stencil Mask
- Stencil Out
- Stencil Mask
- Stencil Out
- Trans Clipping
- Stencil Mask
- Stencil Out
- Transparent
ドキュメント:
各シェーダーの使い分け – UTS2_Manual_ja.md at release/legacy/2.0 – GitHub
プロパティー
カスタムインスペクター
- Show All Properties: プロパティーを直接編集する。
- 日本語マニュアル: ブラウザで
UTS2_Manual_ja.md
を開く。 - English Manual: ブラウザで
UTS2_Manual_en.md
を開く。 - Basic Shader Settings
- Culling Mode
- Stencil No.
- Clipping Mask
- Inverse Clipping Mask
- Clipping Level
- Transparency Level
- Use BaseMap α as Clipping Mask
- Option Menu
- Current UI Type
- Pro / Full Control: 全ての項目を表示する
- Beginner: 初心者向けに項目の表示を制限する
- VRChat Recommendation: VRChat 向けに推奨される基本的な設定を適用する。
- Remove Unused Keywords/Properties from Material: マテリアルから未使用のキーワード及びプロパティーを取り除く。
- Current UI Type
- Basic Three Colors and Control Maps Setups
- Base Map: 基本色のテクスチャ
- 1st Shade Map: 1影色のテクスチャ
- 2nd Shade Map: 2影色のテクスチャ
- Normal Map Settings
- Normal Map
- Normal Scale: ノーマルマップを反映させる強度
- 3 Basic Colors: ベースマップに反映させるかどうか
- HighColor: ハイライトに反映させるかどうか
- RimLight: リムライトに反映させるかどうか
- Shadow Control Maps: 影制御マップ (強制的に陰影を生じさせる)
- Double Shade with Feather 系シェーダー
- 1st Shade Position Map: 1影を生じさせる
- 2nd Shade Position Map: 2影を生じさせる
- Shading Grade Map 系シェーダー
- Shading Grade Map: 陰影の生じ易さを指定するマップテクスチャを指定する
- Shading Grade Map Level: マップの値をレベル補正する
- Blur Level of Shading Grade Map: Shading Grade Map にぼかしを掛ける
- Double Shade with Feather 系シェーダー
- Basic Lookdevs / Shading Step and Feather Settings
- DoubleShadeWithFeather 系シェーダー
- BaseColor Step: 基本色の領域を決める閾値 (
0
→ 全て基本色/1
→ 全て影色) - Base/Shade Feather: 基本色と影色の境界をぼかす度合い
- ShadeColor Step: 1影と2影の割合 (
0
→ 全て1影/1
→ 全て2影) - 1st/2nd_Shades Feather: 1影と2影の境界をぼかす度合い
- BaseColor Step: 基本色の領域を決める閾値 (
- ShadingGradeMap 系シェーダー
- 1st ShadeColor Step: 基本色の領域を決める閾値 (
0
→ 全て基本色/1
→ 全て影色) - 1st ShadeColor Feather: 基本色と影色の境界をぼかす度合い
- 2nd ShadeColor Step: 1影と2影の割合 (
0
→ 全て1影/1
→ 全て2影) - 2nd ShadeColor Feather: 1影と2影の境界をぼかす度合い
- 1st ShadeColor Step: 基本色の領域を決める閾値 (
- System Shadows / Self Shadows Receiving
- Receive System Shadows: システム標準の陰影を混合してセルフシャドウを描画する。
- System Shadows Level: システムシャドウのバイアスを調整する
- DoubleShadeWithFeather 系シェーダー
- Additional Settings
- Step Offset for PointLights: 点光源による階調を微調整する
- PointLights Hi-Cut Filter: 点光源によるハイライトを抑制する
- HighColor Settings
- HighColor: ハイライトの色を指定する
- HighColor Power: ハイライトの大きさを決める
- Specular Mode: 指数的に減衰する光沢として描画するかどうか
- Color Blend Mode: ハイライトの合成モード
- Additive: 加算モードで合成する
- Multiply: 乗算モードで合成する
- ShadowMask on HighColor: 影色領域のハイライトをマスクするかどうか
- HighColor Power on Shadow: 影色領域におけるハイライトの減衰を決める。
- HighColor Mask: ハイライトをマスクするマップテクスチャを与える。
- HighColor Mask Level: マスクテクスチャのバイアスを調整する。
- RimLight Settings
- RimLight: リムライトを有効にする
- RimLight Color: リムライトの色を指定する
- RimLight Power: リムライトの減衰を決める
- RimLight Inside Mask: マスクの大きさ (リムライトを内側からマスクする)
- RimLight FeatherOff: リムライトをぼかすかどうか
- LightDirection Mask: リムライトの発生を光源方向のみに限定するかどうか
- Antipodean(Ap)_RimLight: APリムライト/光源の反対方向にリムライトを発生させるかどうか
- AP Rim Light Color: APリムライトの色
- AP Rim Light Power: APリムライトの減衰を決める。
- AP Rim Light Feather Off: APリムライトをぼかすかどうか
- Rim Light Mask: リムライトをマスクするマップテクスチャを与える
- Rim Light Mask Level: マスクテクスチャのバイアスを調整する
- MatCap : カメラ方向からの固定投影テクスチャ
- MatCap: MatCap を有効にする
- MatCap Sampler: MatCap として使用するテクスチャ
- Blur Level of MatCap Sampler: MatCap テクスチャにぼかしを掛ける
- Color Blend Mode: MatCap の合成モード
- Additive: 加算モードで合成する
- Multiply: 乗算モードで合成する
- Scale MatCap UV: MatCap テクスチャを拡大/縮小する。
- Rotate MatCap UV: MatCap テクスチャを回転させる。
- Camera Rolling Stabilizer: カメラのロール回転に対して MatCap の回転を固定する。
- Normal Map for MatCap: MatCap 用のノーマルマップを使用する。
- Normal Map: MatCap 用のノーマルマップテクスチャ
- Rotate Normal Map UV: MatCap 用のノーマルマップテクスチャを回転させる。
- MatCap on Shadow: 影色領域における MatCap の効果をマスクする。
- MatCap Power on Shadow: 影色領域における MatCap による効果の減衰を決める。
- MatCap Projection Camera: カメラの投影法を指定する。
- Perspective: 透視投影/MatCap テクスチャの歪み補正が適用される
- Orthographic: 平行投影
- MatCap Mask: MatCap をマスクするマップテクスチャを与える。
- MatCap Mask Level: マスクテクスチャのバイアスを調整する。
- Inverse MatCap Mask: マスクテクスチャのマスク領域を反転させる。
- Angel Ring Projection Settings: 「天使の輪」を描画する
- Angel Ring Projection: 「天使の輪」の描画を有効にする
- Angel Ring: テクスチャを指定する
- Offset U: 水平方向のオフセット
- Offset V: 垂直方向のオフセット
- Use α channel as Clipping Mask: アルファチャンネルをクリッピングマスクとして使用する。
- Emissive : 発光
- Emissive: 発光の色と強さをテクスチャとして与える。アルファチャンネルはマスクとして扱われる。
- Emissive Animation: アニメーションを有効にする
- Base Speed (Time): アニメーションの更新頻度を指定する
- Scroll Coordinates: スクロールに使用する座標系を指定する
- UV Coord Scroll: テクスチャの UV 座標をスクロールさせる
- View Coord Scroll: ビュー座標をスクロールさせる
- Rotate around UV center: UV 座標を回転させる
- Ping Pong Move for Base: アニメーションを往復させる
- Color Shift with Time: テクスチャに掛け合わせる色を線形補間で変化させる
- Destination Color: 色を変化させる際の目標となる色
- Color Shift Speed (Time): テクスチャに掛け合わせる色を線形補間で変化させる際の速度 (値が
1
の時およそ 6 秒サイクル) - View Shift of Color: 面がビューと成す角度に応じて色を変化させる
- View Shift Color: 色を変化させる際の目標となる色
- Outline Settings
- Outline Mode
- Normal Direction: 法線反転方式
- Position Scaling: ポジションスケーリング方式
- Outline Width: アウトラインの幅 (※モデルインポートのスケールが影響する)
- Outline Color: アウトラインの色
- Blend Base Color to Outline: 基本色テクスチャの色と馴染ませる。(有効にするとライティングの影響を反映させられる。)
- Outline Sampler: アウトラインの幅に倍率を掛けるマップテクスチャを与える
- Offset Outline with Camera Z-axis: カメラの奥行き方向にオフセットさせる。(細かい凹凸におけるアーティファクトを取り除く。)
- Outline Mode
- Advanced Outline Settings
- Farthest Distance to vanish: アウトラインが消失する距離を指定する
- Nearest Distance to draw with Outline Width: アウトラインの幅が最大となる距離を指定する。
- Use Outline Texture: アウトラインにテクスチャを適用する
- Outline Texture: アウトラインに適用するテクスチャ
- Use Baked Normal for Outline: アウトラインに使用する法線をノーマルマップを適用して生成する。
- Baked Normal Map for Outline: アウトライン用のノーマルマップを与える。
- DX11 Phong Tessellation Settings: テッセレーション (Windows / DirectX 11 環境のみ)
- Edge Length: 分割を適用するエッジの長さ (デフォルト:
5
) - Phong Strength: 細分化された分割面の引っ張り強度 (デフォルト:
0.5
) - Extrusion Amount: 細分化による膨張に倍率を掛ける (デフォルト;
0
)
- Edge Length: 分割を適用するエッジの長さ (デフォルト:
- Light Color Contribution to Materials
- Base Color: 基本色領域にライティングを反映させる
- 1st Shade Color: 1影領域にライティングを反映させる
- 2nd Shade Color: 2影領域にライティングを反映させる
- High Color: ハイライトにライティングを反映させる
- Rim Light: リムライトにライティングを反映させる
- AP Rim Light: APリムライトにライティングを反映させる
- MatCap: MatCap にライティングを反映させる
- Angel Ring: 「天使の輪」にライティングを反映させる
- Outline: アウトラインにライティングを反映させる
- Environmental Lighting Contributions Setups
- GI Intensity: ライトプローブによるリアルタイム GI の影響度を指定する。
- Unlit Intensity: シーンにディレクショナルライトが存在しない場合の環境光ブースト値を指定する。
- Scene Lights Hi-Cut Filter: 特に明るいライティングによる白飛びを抑制する。
- Built-in Light Direction: ディレクショナルライトの方向をオブジェクトに固定された仮想的なライトの方向で置き換える。
- Offset X-Axis Direction: X 軸方向のオフセット
- Offset Y-Axis Direction: Y 軸方向のオフセット
- Inverse Z-Axis Direction: Z 軸の負の方向から照らす
ドキュメント:
カスタムインスペクター – UTS2_Manual_ja.md at release/legacy/2.0 – GitHub
輪郭線/アウトライン
ドキュメント:
アウトラインに関するプロパティ – UTS2_Props_ja.md at release/legacy/2.0 – GitHub
MatCap
参考:
UTS 2.0 の金属表現/MatCap | しぐにゃもブログ
Angel Ring
参考:
髪の毛に Unity-chan Toon Shader で天使の輪 (Angel Ring) を設定する方法 | ikasyo
Emissive Animation
(出典:@oto_kishin )
参考:
Emissive Animation (@oto_kishin) | Twitter
URP / Universal Toon
手順
- リリースページから
UnityChanToonShaderVer2_Project-urp-2.xx.xx.zip
をダウンロードし、ローカルでプロジェクト外の適当な場所に展開する。 - パッケージマネージャーを開き、プラスアイコン をクリックして、メニューから「Add Package from Disk」を選択する。
- 展開したディレクトリの
package.json
を指定して開くと、パッケージが該当するディレクトリからインポートされる。
※展開したディレクトリのファイルがそのまま使用されるため、ディレクトリを保持しておく。
リポジトリ:
ドキュメント:
README_ja.md at release/urp/2.5.1 – GitHub
Universal Toon v2.2.x マニュアル at release/urp/2.5.1 – GitHub
Universal Toon プロパティ at release/urp/2.5.1 – GitHub
参考:
URP にしたら UnityChanToonShader を使ったモデルがピンクになって困った話 | はこねのはこ
Universal Toon v2.2.0 のインストールと Unity パッケージ管理について | トマトタワー
MToon シェーダーから Universal Toon に変更する 基本設定編 | 作って VR で動かすブログ
MToon シェーダーから Universal Toon に変更する 問題解決編 | 作って VR で動かすブログ
ポストエフェクトでアウトラインを描画する
- 「UTS Edge Detection」を使用して、ポストエフェクトでアウトラインを描画する。
手順
UTS_EdgeDetection.unitypackage
をパッケージをインポートし、「UTS Edge Detection」コンポーネントをカメラに適用する。
ドキュメント:
UTS Edge Detection – UTS2_Manual_ja.md at release/legacy/2.0 – GitHub
PBR/金属光沢
参考:
UTS 2.0 の PBR テクスチャ設定 | しぐにゃもブログ
UTS 2.0 で綺麗な金属光沢の表現方法 | しぐにゃもブログ
UTS 2.0 で複雑な色の金属光沢を表現する方法 | しぐにゃもブログ
UTS 2.0 の金属表現/MatCap | しぐにゃもブログ
SD ユニティちゃん
UTS2 仕様の SD ユニティちゃんを使うには、「UnityChanToonShaderVer2_Project」の Assets
ディレクトリ以下にある次のディレクトリを使用したいプロジェクトにコピーする。
UnityChan
Toon/Materials
Toon/Textures
Post Effect Mask
Sample Scenes
Sample Scenes
内の ToonShader.unity
を開いて、正常にレンダリングされることを確認する。
参考:
SD ユニティちゃん 3Dモデルデータ | UNITY-CHAN! [公式]
両面描画する
手順
「Culling Mode」を Culling Off
に設定する。
ドキュメント:
Culling Mode – UTS2_Manual_ja.md (v2.0.9) – GitHub
参考:
裏面が見えない時の対処法/背面カリング | しぐにゃもブログ
Render Queue
動画:
How to Set Custom Render Queue in UTS2 Materials
参考:
ステンシル
「Stencil Mask」と「Stencil Out」を組み合わせて使う。両方のシェーダーで同じ「Stencil No」を指定する。
例えば、前髪に「Stencil Out」シェーダーを用い、眉毛に「Stencil Mask」シェーダーを用いることで、前髪より奥にある眉毛を前髪の上に描画するすることができる。
ドキュメント:
各シェーダーの使い分け – UTS2_Manual_ja.md at release/legacy/2.0 – GitHub
コード:
Toon_DoubleShadeWithFeather_Clipping_StencilMask.shader – GitHub
Toon_DoubleShadeWithFeather_Clipping_StencilOut.shader – GitHub
参考:
システムシャドウ混合時に陰影がギザギザになる
対処法:
- 色空間としてリニア色空間を使用する。
- メッシュの分割を細かくする。
- BaseColor Step の値を大きくする
- System Shadows Level をプラスあるいはマイナスに調整する
ドキュメント:
システムシャドウ使用時に、各色の境界に生じるアーティファクトの軽減法 – UTS2_Manual_ja.md at release/legacy/2.0 – GitHub
使用していないキーワードを取り除く
参考:
VRChat で使う
Option Menu
VRChat 向けの補助機能を使うには、「Basic Shader Settings」パネルを開いて「Option Menu」欄にあるボタンから機能を使用する。
- VRChat Recommendation: VRChat 向けに推奨される基本的な設定を適用する。
- Remove Unused Keywords / Properties from Material: マテリアルから未使用のキーワード及びプロパティーを取り除く。
アンビエントブレンディング (Unlit Intensity)
暗いワールドでの環境光の影響をブーストする。「Environmental Lighting Contributions Setups」パネルを開いて、「Unlit Intensity」の値を調整する。1
より大きくすると元の明るさに倍率が掛かる。
ハイカットフィルター (SceneLights Hi-Cut Filter)
特に明るいライティングによる白飛びを抑制する。
ドキュメント:
VRChat ユーザー向けの便利機能について – UTS2_Manual_ja.md at release/legacy/2.0 – GitHub
アンビエントブレンディングを調整する (Unlit Intensity) – UTS2_Manual_ja.md at release/legacy/2.0 – GitHub
開発
今までのUTS2(日本で作った・Unity2020非対応)と、
UTS3(日本のUTS2のメンテが止まったので海外でフォークして独自に更新されだした)と、
新UTS(日本で新設計で作り始めた)と、
UTS2改(2020対応更新版)が存在する。
誰がわかるんだこんなもん。
参考:
誰がわかるんだこんなもん。 (@seflen) – Twitter
ソースコード
コード:
UCTS_DoubleShadeWithFeather.cginc – GitHub
資料
ユニティちゃんトゥーンシェーダー 2.0 使いこなしスペシャル – SlideShare
リアルタイムトゥーンシェーダー徹底トーク – SlideShare
ドキュメント
release/legacy/2.0/UTS2_Manual_ja.md – ユニティちゃんトゥーンシェーダー 2.0 マニュアル – GitHub
release/legacy/2.0/UTS2_Props_ja.md – UTS2 各シェーダーのプロパティ解説 – GitHub
リポジトリ
unity3d-jp/UnityChanToonShaderVer2_Project: Unity-Chan Toon Shader Ver2 Project – GitHub
Tips
UTS 2.0.7 の設定あれこれメモ | AloMarron Blog
チュートリアル
ユニティちゃんトゥーンシェーダー v.2.0.4 の基本的な設定の仕方
How to Set Custom Render Queue into UTS2 Materials
日本語インタフェース
入手:
ユニティちゃんトゥーンシェーダー 2 (UTS2) 日本語インタフェース | 虎猫亭
ムササビ式マニュアル
入手: