Unity公式のトゥーンシェーダー「Unity Toon Shader」の導入方法・使い方まとめ

Unity Toon Shader 導入方法・使い方 ゲーム開発

今回はUnityのシェーダーに関する話題で、タイトルの通り

Unity公式のトゥーンシェーダー「Unity Toon Shader」の使い方

を丁寧にまとめてみるという内容になっております。

Unityでアニメ風の3Dグラフィックが欲しいときはトゥーンシェーダーと呼ばれるシェーダーを使います。このトゥーンシェーダーはアセットストアやGitHubなどで実に色々な種類のものが販売されたり無償提供されたりしていますが、実はUnity公式のトゥーンシェーダーがあるのは案外知られていないと思います。

そこでここでは公式トゥーンシェーダーである「Unity Toon Shader」のインストール方法や使い方について書いていきますね。

執筆時点ではUnity Toon Shaderはプレビュー版であり、下記で解説している内容は今後変更される可能性があります。

Unity Toon Shaderとは?

公式リポジトリ / 公式ドキュメント

Unity Toon Shaderについて

Unity Toon ShaderはUnity公式のトゥーンシェーダーです。

このシェーダーは「ユニティちゃんトゥーンシェーダー2(UTS2)」の後継にあたるもので、UTS2よりも汎用性や利便性が高くなっているのが特徴です。

主な特徴

  • ビルトインRP、URP、HDRPのすべてのレンダリングパイプラインで使用可能
  • 無料で使える
  • 多機能

Unity Toon Shader適用時の見た目のサンプル

私がVRoid Studioで作った3DキャラクターにUnity Toon Shaderを適用してみました。

Unity Toon Shade適用時の最終的な見た目のサンプル(1)
Unity Toon Shade適用時の最終的な見た目のサンプル(2)

設定次第ではもう少し見栄えが良いグラフィックになると思うのですが、とりあえず基本的な設定を一通り行っただけでもかなりいい感じのアニメ風グラフィックを得ることができました。

同じトゥーンシェーダーの「lilToon」などと比較すると設定に少し手間がかかるものの、使い方を覚えれば比較的手軽に使えるシェーダーだと思います。また、Unity公式という点と無料で使える点はやはり大きな強みでしょう。

Unity Toon Shaderの導入方法

ではここからUnity Toon Shaderの導入方法や使い方について解説していきます。まずはプロジェクトにUnity Toon Shaderをインストールする方法から見ていきましょう。主な手順は次の2ステップです。

  1. Gitをインストールしておく(※既に導入済みの場合は不要)
  2. Unityパッケージマネージャからインストールを行う

Gitのインストール

まず、このブログをご覧になるような方でまだGitをインストールしていない方はいないと思いますが…一応書いておくとUnity Toon Shaderパッケージを導入するためにはGitというバージョン管理ソフトが必要です。

まだインストールしてないよという方はあらかじめ下記ページからインストーラをダウンロードしてGitのインストールを行っておきましょう。

UnityパッケージマネージャからUnity Toon Shaderをインストールする

次にUnityパッケージマネージャを開き、左上の「+」ボタンをクリックします。すると「名前でパッケージをインストール」という項目があるのでそれを選択し…

名前でパッケージをインストール

出てきた入力欄に下記のパッケージ名を入力しましょう。

com.unity.toonshader

しばらく待つとパッケージマネージャの一覧にUnity Toon Shaderが追加されます。これでインストール完了です。

Unity Toon Shaderの基本的な使い方・設定方法

次にUnity Toon Shaderの基本的な使い方や具体的な設定方法について解説します。ここでは先ほどサンプルとして提示した3Dモデルを見本にしてアニメ風グラフィックを得るための設定方法を順番にご説明しますね。

  1. マテリアル作成&Unity Toon Shaderを適用
  2. テクスチャを適用しアルファクリップを設定
  3. 基本的な影色を設定
  4. 基本色のエッジを調整
  5. 輪郭線の設定
  6. 顔の輪郭線を消去
  7. 髪の毛にツヤを追加

マテリアル作成&Unity Toon Shaderを適用

まず、新しいマテリアルを作成してマテリアルのシェーダーを「Toon」に切り替えましょう(※これがUnity Toon Shaderです)。すると大量の設定項目がインスペクターに表示されます。

Unity Toon Shaderの設定項目

これを3Dモデルに適用すると次のように真っ白な見た目になります。

初期状態のマテリアルを3Dモデルに適用した場合の例

テクスチャを適用しアルファクリップを設定

次に、このマテリアルにテクスチャを設定します。「Three Color and Control Map Settings」グループの一番上に「Base Map」という項目があるのでここに3Dモデルのテクスチャを登録します。

Base Map欄にテクスチャを登録

すると今回サンプルで使用しているモデルの場合は次のように汚い見た目になってしまいました。

とりあえずテクスチャを適用しただけの例

これはアルファクリップが設定されていないためです。アルファクリップを設定するには、「シェーダー設定」グループの「Clipping」を「Clip Transparency」にして「Use Base Map Alpha as Clipping Mask」にチェックを入れます。

アルファクリップの設定例

Use Base Map Alpha as Clipping Maskはベースマップに設定したテクスチャのアルファ値をクリッピングに使用するオプションです。これをONにしない場合はクリッピングマスクという専用のテクスチャが必要になるのですが、普通はそのテクスチャは3Dモデルに付属していないと思うのでこのオプションをONにしておく必要があるでしょう。

これでテクスチャの余分なところがカットされてきれいな見た目になります。

アルファクリップ適用後の3Dモデルの見た目

基本的な影色の設定

そうしたら次は基本色の設定を行います。先ほど最初のテクスチャを登録した「Base Map」の下に「1st Shading Map」という欄があるので、3Dモデルに少し暗いテクスチャが付属していたらそれを登録します。

すると下記のように一部の影の部分が適切な色に切り替わります。

1st Shading Mapにテクスチャを適用した場合の見た目

ちなみにインスペクターには「2nd Shading Map」という欄もありますが、一般的なアニメ風グラフィックの場合はその欄は使用しません。1st Shading Mapまでを登録しておけばOKです。

基本色のエッジの調整

お次は基本色のエッジ(=境界)を調整していきます。これはどういうことかというと、簡単に言えば先ほど設定した明るい部分のテクスチャと影部分のテクスチャをどの程度の配分にするか?を決めるということです。

まず、「Shading Steps and Feather Settings」グループの一番上に「Base Color Step」というスライダーがあります。これで基本色と影色の比率を調整することができます。デフォルトは0.5ですが、好みに応じて調整しましょう。

次に、境界部分のぼかし量を調整したい場合は「Base Shading Feather」スライダーを変更します。値が大きいほどぼかしが大きくなります。こちらも欲しい画風に合わせて調整しましょう。

輪郭線(アウトライン)の設定

これでまあまあいい感じになってきましたが、アニメ風グラフィックといえば輪郭線が必要なのでその設定を行いましょう。

インスペクターの下のほうに「Outline Settings」グループがあり、ここで輪郭線の設定を調整することができます。まず「Outline」にチェックが入っていることを確認し、輪郭線の太さ(Outline Width)と色(Outline Color)を好きなように変更してください。

輪郭線の設定例
輪郭線を設定した場合の3Dモデルの見た目の例

顔の輪郭線を消去する

輪郭線を追加したことでかなりアニメっぽい感じになってきました。しかし目など顔の余計な部分に輪郭線が入ってしまっているのが気になります。そこで余分な輪郭線を消すためのテクスチャ(Outline Width Map)を用意しましょう(※普通の3Dモデルにはこのテクスチャは付属していないので自作する必要があります)。

このテクスチャの作り方は、まずテクスチャをグレースケール化し、それから輪郭線を表示させたくない部分を黒く塗るだけです。今回のサンプルモデルの場合、顔と体のマテリアルが分かれているので、真っ黒な小さいテクスチャを用意して顔のマテリアルの「Outline Width Map」欄にそれを登録するだけで済みました。

顔の輪郭線を削除した場合の見た目の例

髪の毛にツヤ(ハイライト)を追加

最後に髪の毛にハイライトを追加してみましょう。ハイライトの設定は「Highlight Settings」グループで行うことができます。「Highlight」でハイライトの色を、「Highlight Power」でハイライトの強さを調整可能です。

ただ今回使っているサンプルモデルは髪の毛と体(衣装含む)のマテリアルが共通なので、そのままハイライトの設定を行うと髪の毛だけでなく衣装までテカテカになってしまいます。そこで「Highlight Mask」を設定します。サンプルモデルには髪の毛のハイライト用のマスクテクスチャがあったので、これをHighlight Maskに登録したらちょうどいい感じになりました。

髪の毛にハイライトを設定した場合の例

おまけ:その他の設定について

さてUnity Toon Shaderの基本的な使い方・設定方法はこんなところです。ただしUnity Toon Shaderは高性能なシェーダーなので、ほかにもいくつか設定可能な機能があります。ここではそれらについてごく簡単にご紹介しておきますね。

  • Normal Map Settings
    ノーマルマップ(法線マップとかバンプマップとも呼びます)の設定を行えます。
    ノーマルマップは3Dモデルの細かい凹凸を表現するための特殊なテクスチャです。トゥーンレンダリングではあまり重視されませんが、たまに使う場合もあります。
  • Rim Light Settings
    リムライト(輪郭を光らせる表現)を設定できます。
  • Material Capture(MatCap) Settings
    MatCapと呼ばれるテクスチャを使い、低コストで反射などの表現を行う手法を設定できます。
  • Emission Settings
    発光表現の設定を行えます。ポストプロセスの「Bloom」と併用することできれいな発光表現になります。
  • Scene Light Effectiveness Settings
    シーンのライトがトゥーンレンダリングのどの部分に影響するかを指定できます。

おわりに

以上、Unity公式のトゥーンシェーダーであるUnity Toon Shaderの使い方などについて詳しく書きました。冒頭にも書いた通りトゥーンシェーダーには色々な選択肢がありますが、公式のシェーダーがあるということも知っておいて損はないでしょう。ぜひ皆さんも使ってみてください。

この記事がゲーム開発のお役に立てば幸いです。