VRToon Shader Manger¶
Blender Eeveeのための究極のNPRシェーディングソリューション
概要¶
VRToon Shader Manager は、Eeveeレンダラー用のNPRシェーダーノードグループであるVRToonシェーダーをシーンに導入し、管理するためのBlenderアドオンです。
VRToonシェーダーは、最小限の努力で美しいアニメルックを実現するために注意深く設計されたシェーダーノードグループです。
このアドオンを利用することにより、VRToonシェーダーを簡単に割り当てたり、素早く設定を調整することができます。
標準では、VRToon Cel-Look と VRToon Semi-Real の2つのバリアントを搭載しており、簡単に導入、調整が可能です。
Note
本アドオンは、旧VRToon Shaderアドオンを元に大幅に拡張され、独立したアドオンとしてリリースされました。
主な特徴¶
- 強力で使い易いNPRシェーダー: VRToonシェーダーは、アニメ風のセルルックから、フォトリアルとの中間的な表現まで、パラメータを調整するだけで様々な表現を実現することができます。
- バッチパラメータ設定: シェーダーマネージャーにより、複数のオブジェクトにまたがるモデル全体のシェーディングパラメータを一括で操作することができます。
- 高速セットアップ: シェーダーの導入は、一瞬で完了します。また、既存のマテリアルをVRToonマテリアルにバッチ変換することも可能です。
- 高機能アウトライン: VRToonマネージャー機能の一部として、メリハリのある美しい背面法アウトラインを簡単に設定することができます。
- 非常な拡張性: シェーダーマネージャーの汎用的な設計は、ユーザーが新たなシェーダーを追加することを可能にします。
- 日本語と英語に対応:すべての機能が日本語と英語のマルチランゲージに対応しています。
- Sakura Toolsとの親和性: NPRモデル制作を支援するアドオン「Sakura Tools」では、VRToon Shader Managerとの連携を考慮しています。
インストール¶
アドオンをインストールするには、Blenderアドオンの標準的な手順に従ってください。
- BlenderMarketまたはGumroadからzipファイルをダウンロードします。
- Blenderを開き、
編集
>設定
>アドオン
>インストール...
に移動します。 - ダウンロードしたzipファイルを選択し、
アドオンをインストール
をクリックします。 - アドオン名の横にあるチェックボックスをオンにしてアドオンを有効化します。
- アドオンは
3Dビュー
>サイドパネル
>VRToon
タブに表示されます。
Notice
もし旧版の"VRToon Shader" アドオンを利用している場合は、削除してから新しいアドオンをインストールしてください。
初回設定¶
アドオンを有効化すると、サイドパネルに VRToon
タブが表示されます。このタブには、「VRToon マネージャー」パネルがあり、そこから様々な操作が可能です。
とはいえ、ワークスペースにVRToonシェーダーが導入されるまでは、「VRToonをインポート/更新」ボタンだけが利用できます。このボタンをクリックすると、VRToonシェーダーがワークスペースに導入され、任意のマテリアルに割り当てることができるようになります。
VRToon シェーダーへの変換/手動割り当て¶
VRToon Shader Manager の機能を活用するためには、シーン内にVRToonマテリアルが存在している必要があります。最初は、既存のマテリアルをVRToonマテリアルに変換するところから始めましょう。適切な操作を行えば、一瞬で終わります。
変換する¶
「変換・更新ツール」サブパネルには、選択中のオブジェクトに含まれるマテリアルをVRToonマテリアルに変換するためのボタンがあります。このボタンをクリックすると、選択中のオブジェクトに含まれる全てのマテリアルがVRToonマテリアルに変換されます。
変換とは、すなわち、有効なマテリアル出力 ( 全て
または EEVEE
)につながったシェーダーノードを、VRToonシェーダーのバリアントのノードグループに置き換えることを意味します。この操作は、選択中のオブジェクトに含まれる全てのマテリアルに対して行われます。
この操作は、オブジェクトモードのコンテキストメニューW
> VRToon マネージャー
サブメニューからも実行できます。
Note
このときコンバーターは、元のシェーダーノードに接続されていたテクスチャイメージのノード接続や、各ソケットのパラメータを可能な限り継承します。しかし、元のシェーダーノードツリーが複雑である場合、完全な再現は難しいかもしれません。そのため、変換後には、各マテリアルのパラメータを調整することが推奨されます。
マテリアル変換の対象として、アーマチュアを選択することでモデル全体を一度に処理することができます。
初回利用時などに、キャラクター全体を対象にして一括で変換することで、素早くNPR表現を実現することができます。
手動で割り当てる¶
シェーダーノードエディタ内で、直接VRToonシェーダーを割り当てることもできます。新規作成Shift
+ A
のメニューから、ノードグループ > VRToon (Cel-Look) または VRToon (Semi-Real) を選択して、シェーダーノードエディタに追加します。その後、マテリアルの出力ノードにつなげることで、そのマテリアルは「VRToonマテリアル」として扱われるようになり、マネージャーパネルで操作することができます。
このように手動での割り当ても可能ですが、基本的には既存のマテリアルを変換したほうが速く、効率的です。とはいえ、元のノードツリーが非常に複雑であったり、特殊な構造を取っている場合には、手動での割り当てが適しているかもしれません。
「VRToon マネージャー」 パネル¶
このパネルには、現在選択されているオブジェクトまたはモデルに含まれる、VRToonマテリアル(VRToon シェーダーのいずれかのバリアントが割り当てられたマテリアル)の状態が詳細に表示されます。
- 最上部 ターゲット概要。選択オブジェクトまたはモデルに含まれる全マテリアル(マネージャーターゲット)のアイコンが表示されます。ここに表示中のマテリアルが、パネル上の操作によって影響を受けます。
- シェーダーバリアント ワークスペース内に存在するVRToonシェーダーのバリアントの一覧が表示されます。ここから、マテリアルに割り当てられているシェーダーバリアントを切り替えることができます。
- パラメータパネル 対象マテリアルのうちアクティブなもののパラメータが表示されます。ここから、パラメータの設定を調整することができます。
- マテリアルオプション FreeStyleラインカラーや、ブレンドモードなどの調整が可能です。
このパネルでの操作は、選択オブジェクトに含まれる「全ての」マテリアルに対して適用されます。また、アーマチュアを選択した状態では、そのアーマチュアに関連付けられた(アーマチュアモディファイアで変形される)全てのメッシュオブジェクト、すなわちモデル全体に対して適用されます。
この特徴を利用し、複数のオブジェクトまたはモデル全体に対してシェーダーを適用したり、パラメータを一括で調整し、一貫性のある表現を素早く実現することができます。
パラメータ操作¶
パラメータパネルには、アクティブなマテリアルのパラメータが操作可能な状態で表示されます。操作を行うと、ターゲットとなっているマテリアル全てにその変更が伝播します。
例えば、モデル全体を構成するオブジェクト群に対して、シェーディングの強さを一括で調整したい場合、モデルに含まれる全オブジェクトを選択するか、アーマチュアを選択することで、そのアーマチュアに関連付けられた全てのメッシュオブジェクトに対して一括で調整することができます。
対象となるマテリアルを絞り込みたい場合は、次のマネージャーからのマテリアルの除外を参照してください。
マネージャーからのマテリアルの除外¶
マテリアルをマネージャーパネル上の操作から保護するために、「対象マテリアル」サブパネルにある鎖のマークのボタンをクリックしてください。これは、マテリアルがマネージャーに「リンク」されていることを表すアイコンです。
これをオフにすることで、そのマテリアルはマネージャーパネル上での操作から除外され、パラメータの状態を保持したままになります。
特殊な設定を持つマテリアル(NPRキャラクターの白目や黒目など)を除外することで、それらの設定を保持しながら、他のマテリアルに対して一括で設定を調整することができます。
設定の保存と読み込み¶
パネル上部にある「保存」、「読み込み」ボタンを使うことで、アクティブなマテリアルの設定をファイルに保存したり、ファイルから読み込むことができます。これにより、設定を他のシーンに持ち越したり、他のユーザーと共有することができます。
ファイルは json 形式で、保存時にデフォルトでマテリアル名を使ったファイル名になりますが、独自に名前をつけることもできます。
シェーダーバリアントについて¶
VRToonシェーダーは、標準で2つのバリアントを搭載しています。それぞれ、Cel-Look と Semi-Real です。これらのバリアントは、それぞれ異なる表現を実現するために設計されており、それぞれのバリアントには独自のパラメータが用意されています。
- セルルック: アニメ風のセルルックを実現するためのバリアントで、強力な自動影色生成機能を備えています。シャドウに対応しています。
- セミリアル: フォトリアルとの中間的な表現を実現するためのバリアントで、色付きのライティングに対応しています。影に対してはうまく機能しない場合があります。
共通の特殊パラメーター¶
VRToon 特有の共通パラメーターとして、以下のようものがあります。ここでは、セルルックバリアントを例に挙げて説明します。
影色 自動/指定¶
値0.0で自動生成された影色を使用します。影色はシェーディングポイントにおけるベースカラーから色相・彩度・輝度を特定のアルゴリズムで調整して生成され、多くの場合で理想的な結果をもたらします。
値1.0で、シャドウカラー
パラーメータに与えられた影色を直接使用します。ユニークな色彩を表現したい場合に使用します。多くの場合、シャドウカラーテクスチャを接続して使用することで、プロフェッショナルな結果を得ることができます。
中間的な値に設定すると、自動生成と指定色の中間的な影色が生成されます。
自動彩度強度¶
影色の自動生成における、彩度の自動調整の強度を指定します。通常は1.0でおおよそ理想的な結果が得られるように調整されています。
0.0に設定すると、輝度変化のみが影色に反映され、やや色褪せた、フォトリアルに近い結果が得られます。
2.0に設定すると、彩度変化が強調され、より鮮やかなセルルックが得られます。
影色 乗算/ミックス¶
影色を指定した場合に機能します。乗算モードでは、影色がベースカラーに乗算されます。ミックスモードでは、影色がベースカラーにミックスされます。影色を特定の色に完全に固定したい場合はミックスモードを使用します。
シェーディング 強さ、鋭さ、シフト¶
これらのパラメータは、基本的な陰影の付け方を調整するためのものです。
強さを上げるとより影色が濃くなり、黒に近づいていきます。
鋭さを上げると、影色の境界が鋭くなり、よりセルルックらしい結果が得られます。
シフトを調整することで、照らされた部分と陰となる部分の境界を調整することができます。
Note
シフトを最大まで上げても、ライトが全く当たっていない部分(オブジェクトの反対側や、他のオブジェクトに遮蔽されている部分)は影色のままになります。それらの部位も明るくしたい場合は、強さ自体を下げたり、シャドウマスク
を使用します。
スペキュラー 色、強さ、鋭さ、シフト¶
フォトリアルなスペキュラーではなく、スタイライズされたスペキュラーを生成します。色
、強さ
、鋭さ
、シフト
を調整することで、柔軟な表現が可能です。
リム 色、強さ、鋭さ、シフト、陰影影響度¶
リムライティングを生成します。色
、強さ
、鋭さ
、シフト
を調整することで、柔軟な表現が可能です。
また陰影影響度
を調整することで、暗い部分にリムライトが乗ることを抑止したり、強調することができます。
AO係数、AO距離¶
シーンでアンビエントオクルージョンが有効である場合、その影響力と範囲をマテリアルベースで調整することを目的としたパラメーターです。AOは入り組んだ部位に半影を生成しやすいため、よりパキッとしたセルルックを実現するためには、AO係数を下げ、距離の調整も行なうとよいでしょう。
シャドウマスク¶
照光結果に対し、陰となる部分を「持ち上げる」ことで、陰になることを抑止することができます。自発光部分の陰影を弱めたい場合や、顔に影ができることを抑止する場合などに使用します。
ライトマスク¶
照光結果に対し、陰にならない部分を「抑える」ことで、強制的に陰にすることができます。例えばAOテクスチャを接続し、ジオメトリでは十分に与えられない細部の陰影を強調することができます。
Note
その他にも、バリアント特有のパラメーターが用意されています。具体的な効果については、いろいろと試してみてください。
シェーダーバリアントの変更¶
既にVRToonシェーダーが割り当てられているマテリアルでは、マネージャーパネル上で簡単にバリアントを切り替えることができます。
パネル上部にあるドロップダウンメニューから、使用したいバリアントを選択してください。選択すると、マテリアルに割り当てられているVRToonシェーダーのバリアントが変更されます。その際に、バリアント間で互換性のある設定は自動的に引き継がれます。
また、バリアントを切り替える際、切り替え前の全パラメータはマテリアルに保存されています。そのため、バリアントをもとに戻すと、以前の設定がそのまま復元されます。
Note
使用されていないバリアントは自動的に現在のワークスペースから削除されます。バリアント切り替えリストに切り替え対象が表示されない場合は、VRToonをインポート/更新
ボタンをクリックして、再度バリアントを読み込んでください。
シェーダーバリアントの追加¶
シェーダーバリアントの追加は簡単です。
各バリアントはアドオンのインストールされたフォルダ内にある /data/ フォルダにblendファイルとして保存されており、VRToon Shader Managerは、起動時やインポート/アップデート
ボタンをクリックしたときに、このフォルダ内のblendファイルを読み込みます。
各バリアントは VRToon
で始まる名称を持っているノードグループである必要があります。その後に続く名称が、バリアント名称となります。例えば、標準のバリアントは VRToon Cel-Look
と VRToon Semi-Real
となっています。VRToon
の後ろにある名称が、マネージャーパネル上で表示される名称となります。カッコがある場合、カッコは無視されます。
バリアントの追加は、このblendファイルを作成し、VRToon
で始まる名称を持つノードグループを作成するだけです。その後、アドオンを再起動するか、インポート/アップデート
ボタンをクリックすることで、新しいバリアントが追加されます。好みのシェーダーを作成するために、標準のバリアントを改造するのも良い方法です。
シェーダーのデバッグ¶
シェーダーバリアントの作成・テスト中に、Pythonコンソールにて C.scene['vrt_debug_tgt_all_objs'] = True
と入力することで、全てのオブジェクトが常にマネージャーの操作対象として扱われるようになります。これにより、シェーダーのテストを容易に行うことができます。
バリアント向けの翻訳の追加¶
シェーダーノードグループの各ソケットの入力名や出力名は、標準のバリアントについてはアドオン内で日本語の翻訳が用意されていますが、もし、独自のバリアントのために翻訳を用意したい場合は、新たな翻訳ファイルを作成してください。
本アドオンは、アドオンのインストールフォルダ内にある /translations/ フォルダ内から各ロケールの翻訳ファイルを自動的にロードします。デフォルトでは、ja_JPフォルダ内に日本語の翻訳ファイルが配置されています。
翻訳ファイルはタブ区切りのテキストファイルで、各行には原文とその翻訳を記載します。詳細は、標準で用意されているファイルを参考にしてください。
追加機能¶
VRToonアウトライン¶
これは、高機能な背面法アウトライン(Flipped-Normal Outline)をオブジェクトに追加する機能です。「アウトラインを追加/更新」ボタンを押すことで、選択中のオブジェクトに対して厚み付けモディファイアを使ったアウトラインが追加されます。
背面法アウトラインは、FreeStyleアウトラインやグリースペンシルを使ったアウトラインなどに比べ、レンダリングが非常に高速であり、また、多くの場合で十分な結果を得ることができます。カスタマイズ性にも優れているため、VRToonアウトラインでは、線幅、線色などの要素について、様々な設定が可能です。
- 線幅制御によるメリハリ:デフォルトでは、メッシュ形状(表面の曲率)に応じて線幅が設定されます。これにより、漫画やアニメのような美しいタッチが再現できます。頂点グループ(デフォルト `vrt_outline_thick')を手動で調整することでも、線幅を制御することができます。
- リッチなアウトラインカラー:テクスチャから生成したり、指定色を使ったり、FreeStyleラインカラーを使ったり、様々な方法でアウトラインカラーを指定できます。
- 簡単に再設定:アウトラインが不要になった場合、簡単に削除できます。ただし線幅幅や設定は保存されるため、再度追加する際にはそのまま再利用できます。一部の設定のみを更新することも可能です。
- モデル単位のスケーリング:アウトラインの線幅は、複数オブジェクトからなるモデルを単位として倍率オフセットを設定することができます。これにより、シーンの中で異なるスケールのモデルに対して、一貫したアウトラインを実現することができます。
- MMD互換:mmd_toolsのエクスポート時に線幅として利用される mmd_edge_scale への変換を1クリックで行うことができます。
- コンテクストメニューからのアクセス:選択中のオブジェクトに対して、コンテクストメニューからアウトラインを素早く追加・削除、変換することができます。
アウトラインの設定は、対象オブジェクトを選択した状態で、オブジェクトコンテキストメニューW
> VRToon
サブメニューから行なうと素早く操作できて便利です。同じメニュー内から、アウトラインの削除およびmmd_tools用にコンバートすることも可能です。
オペレーターが実行されると、たくさんのオプションを備えたオペレーターパネルが表示されます。ここでは、アウトラインの設定を細かく調整することができます。
なお、アウトライン設定済みのオブジェクトに対してもう一度同じ操作を行なうと、「再設定モード」でオペレーターが動作します。このモードでは、オペレーターオプションとして各要素に「現存を更新」チェックボックスがあり、これをオンにすることで、該当の要素が更新されます。これにより、線幅、線色など個別の要素を維持したまま、必要な部分のみ更新することができます。
例えば、メッシュオブジェクトの形状を編集したあとに、線幅の設定のみを更新する、といったことが可能です。
基本¶
厚み付けモディファイアに与える基本的なパラメータを設定します。
線幅の設定¶
頂点ごとの線幅は、指定した頂点グループによって制御されます(デフォルトは vrt_outline_thick
)。
また、マスクを使用
をオンにすると、指定したマスク用頂点グループによって、線幅の生成時の結果を調整することができます。マスクは線幅の生成時に乗算され、部分的にアウトラインを載せたくない部分値0を与えておくことで、アウトラインを除外することができます。
Note
例えば、顔メッシュのまぶた部分のマスク値を0にしておくことで、まぶた部分にアウトラインが載らないようにすることができます。これにより、MMDモデルなどでよく使われる「線なし材質」のような追加のマテリアルを作成する必要がなくなります。
曲率による線幅¶
スクリプトによる線幅の生成アルゴリズムについての設定です。線幅のメリハリを実現するため、デフォルトでは形状の曲率が低い部分で太く、曲率が高い部分で細くなるように設定されています。
サンプル方法
パラメータは、曲率のサンプリング方法を設定します。平均
、最大
、最小
の中から選択します。これは、各頂点の曲率(隣り合う複数の頂点との点法線の変化度合い)を評価するときに、その平均をとるか、最大値をとるか、最小値をとるか、という挙動を決定するものです。
基本的には、平均
がおおむね良好な結果を生成します。メリハリが強すぎる、あるいは弱すぎる場合に、他のオプションを試してみると良いでしょう。
距離係数
パラメータは、曲率の評価スケールを調整します。例えば、0.1に設定すると、およそ10cmで面の向きが反対になるような角度を持つ部分で線幅0となります。つまり、なだらかに変化する部分の線幅は太く、細かく凹凸のある部分は細く、という形になります。キャラクターのディティールレベルや、構造上の特徴に応じて調整することで、おおよそ理想的な結果を簡単に得られます。
パワー
パラメータは、曲率による線幅の変化の強さを調整します。デフォルトでは2に
このとき、距離係数
パラメータによって、曲率の評価スケールを調整します。例えば、0.1に設定すると、およそ10cmで面の向きが反対になるような角度を持つ部分で線幅0となります。つまり、なだらかに変化する部分の線幅は太く、細かく凹凸のある部分は細く、という形になります。キャラクターのディティールレベルや、構造上の特徴に応じて調整することで、おおよそ理想的な結果を簡単に得られます。
パワー
パラメータは、曲率による線幅の変化の強さを調整します。デフォルトでは2に設定されており、これにより、曲率の変化に対して線幅の変化が二乗の関数で行われます。値を減らすと変化が緩やかになり、増やすと急激になります。
最小
パラメータは、線幅の最小値を設定します。これにより、線幅が0になることを防ぐことができます。
反転
パラメータは、曲率の変化に対して線幅の変化を反転させます。これにより、凸部分に対して太く、凹部分に対して細くなるような線幅の生成が可能になります。
色の設定¶
アウトラインの色を設定します。
色ソース
パラメータではテクスチャ
/フリースタイル
/指定
のいずれかを選択できます。
テクスチャ
を選択すると、そのマテリアルで使われているプライマリのテクスチャ(ディフューズマップなどをアルゴリズムで推定して使用します)を利用し、その輝度を輝度
パラメーターに応じて調整することで、アウトラインカラーを生成します。ほとんどの場合で、理想的な線色を生成することができます。テクスチャを持たないマテリアルにおいては、かわりにグレースケールの色が設定されます。
フリースタイル
を選択すると、FreeStyleラインカラーを利用します。これにより、FreeStyleラインカラーを使ったアウトラインを簡単に実現することができます。
指定
を選択すると、カラー
パラメータでアウトラインカラーを直接指定できます。
輝度
パラメータは、テクスチャを使ったアウトラインカラー生成時に、テクスチャの輝度を調整するためのものです。デフォルトの0.5で概ね良好な結果となりますが、必要に応じて調整してください。
Note
いずれの設定項目も、現存を更新
をオフにしている限り、既に設定済みのデータは変更されません。
VRToon ワールド¶
VRToonワールドは、オブジェクトに対してライティングの影響を与えずに背景色のみを変更する機能です。これにより、モデルに対してシンプルなNPRライティングを与えつつ、背景を自由に設定することができます。
現在のところ単色の背景のみを作成できますが、将来的にはより柔軟な背景設定を可能にする予定です。
トゥーンマップ作成機能¶
VRToonシェーダーでの見た目を他のプラットフォームでも再現するために、テスト的に実装された機能です。
この機能を実行すると、ベースカラーとシャドウカラーを指定するオペレーターパネルが現れます。ここで実際にビューポートに表示されているVRtoonマテリアルの色を取得すると、それに基づいたトゥーンマップを作成することができます。
作成されたトゥーンマップはイメージエディター上に表示されますので、必要に応じて保存や破棄をしてください。
トゥーンマップの方向を選択することができます。
- 垂直: MMDでのトゥーンマップの方向。上から下へのグラデーションが作成されます。
- 水平: Unity上のいくつかのNPRシェーダー、例えばUnity-Chanシェーダーで使われているトゥーンマップの方向。
テクスチャベイカー(Cycles)¶
本アドオンには、Cyclesでのテクスチャベイクを支援するノードツリーが含まれています。これを用いることで、NPRキャラクターの肌、衣服などのテクスチャを直接描くことなく生成することが可能です。
テクスチャベイカー機能はノードグループの形で実装されており、使用するためには自身でマテリアルのノードツリーに組み込む必要があります。
最も基本となるのがVRT Tex Baker
ノードグループです。これは仮想的なライティングに基づく陰影を含む詳細なテクスチャを生成するための機能が盛り込まれており、パラメータ調整によって様々な質感を表現することができます。
使用するためには、VRT Tex Baker
ノードグループをシェーダーノードエディター上で追加し、Cyclesの出力に接続してください。
VRT Tex Baker
に接続することで幅広い表現が可能になる、追加のノードグループも用意されています。
- VRTB Studio Light: 前方向、後ろ方向、下方向からの3種の仮想ライトを組み合わせたライティングを行うノードグループです。
VRT Tex Baker
のBase Light
またはAdditive Light
ソケットに接続することで、陰影を加えることができます。 - VRTB OV Hair: アニメヘアの質感において重要なハイライト成分を生成するノードグループです。
VRT Tex Baker
のOverlay
ソケットに接続することで使用します。 - VRTB OV Fabric: 衣服などの繊維の質感を生成するノードグループです。
VRT Tex Baker
のOverlay
ソケットに接続することで使用します。 - VRTB OV Mucous: 粘膜の質感を生成するノードグループです。
VRT Tex Baker
のOverlay
ソケットに接続することで使用します。
幅広い使い方が可能なノードグループ群になっていますので、いろいろと試してみてください。
レンダリングサンプル¶
"Sakura Haru", original character by Kafuji Sato. VRToon Cel-Look
"Ryoka F Wendel v2", original character by Kafuji Sato. VRToon Cel-Look