VRChatアバター向けシェーダー設定の基本

URLをコピーする
URLをコピーしました!

CGBoxの一部の記事にはアフィリエイト広告が含まれております。

本記事は2023年8月時点の内容です。VRChatはアップデートによって設定画面が大きく変わる場合があるため、最新の情報と併せてご覧ください。

目次

シェーダーの基本的な考え方

Unityにおけるシェーダー

まず、よく混同されがちな「シェーダー」と「マテリアル」は、公式マニュアルで明確に区分・定義されています。

あわせて読みたい
メッシュ、マテリアル、シェーダー、テクスチャ - Unity マニュアル Unity のレンダリングには Meshes、マテリアル、シェーダー、テクスチャ が使用されます。この 3 つは密接に関係しています。

これをざっくりまとめると、以下の通りです。

  • シェーダー:マテリアルからパラメータを受け取る設定画面も含めた、描画に必要な処理を示したプログラム
  • マテリアル:シェーダーに使用するパラメータ(RGB・反射度など)を割り当て、それぞれ保存するファイル

Unityのマテリアルはシェーダーと1対1の関係で成り立っており、1つのマテリアルに複数のシェーダーを割り当てることは出来ません

ただしマテリアルとは「パラメータを保存するファイル」のため、複数のマテリアルで同じシェーダーを使用し、各マテリアルで異なるパラメータを設定することが可能です。

VRChatでのシェーダー設定の意義

3Dモデルに質感を与えるときは、リアル調・アニメ調・モフモフなもの・キラキラ光るもの…といった、モデルのモチーフや部位によっていろいろな表現が考えられます。

これらの質感に応じて、アバターに適切なシェーダーを設定することで、「なりたい自分の姿」や、「見たいうちの子」などの表現に近づけることが出来ます。

シェーダーによる質感表現の違いの例

Unityのレンダーパイプライン

Unityには以下3つのレンダーパイプライン(画面描画方法)が搭載されており、これらに対応しているかは各シェーダーによって異なります。

  • Build-in Render Pipeline (BRP、ビルドインレンダーパイプライン)
  • Universal Render Pipeline (URP、ユニバーサルレンダーパイプライン)
  • HD Render Pipeline (HDRP、HDレンダーパイプライン)
あわせて読みたい
レンダーパイプラインの概要 - Unity マニュアル レンダーパイプラインは、シーンのコンテンツを取得し、それを画面に表示する一連の操作を行います。簡単に説明すると、以下のような操作です。

現在のVRChatはBRPの対応のみとなっています。シェーダー購入などの際はURPのみ・HDRPのみの対応シェーダーでないか特に注意する必要があります。

VRChat(PC)のシェーダー制限

PC版VRChatは、シェーダーそのものには制限がありません。

ただし、VRゲームはPCモニターでプレイするゲームに比べ負荷がかなり高いです。
そのため、VRゲーム使用想定のない「重いシェーダー」を使用すれば、同じ部屋内のVRChatプレイヤーにも負荷をかける(場合によってはフリーズさせてしまう)原因になります。

どの描画処理が重いか理解するまでは、販売・配布サイトに「VRChat想定」「低負荷」といった説明書きがあるシェーダーを使用するのがベターでしょう。

あわせて読みたい

VRChatではマテリアルスロット数によって「パフォーマンスランク」が決められ、ランクに応じてアバターを非表示にする機能が備わっています。
マテリアルスロット数の制限についてはコチラから

VRChat(Quest)のシェーダー制限

Quest版VRChatで使用できるシェーダーは、シェーダー設定で「VRChat/Mobile/」以下に表示されるシェーダーのみになっています。

VRChat/Mobile シェーダーの一覧

また、これらのシェーダーでは半透明を使用できません。頬染めやメガネレンズなどは非表示設定するか、削除しておく必要があります。

なお、Unityだけで直感的に面の削除ができるエディタ拡張機能として、「MeshDeleterWithTexture」などがおすすめです。

あわせて読みたい
MeshDeleterWithTexture beta - がとーしょこらのおみせ - BOOTH テクスチャの箇所を指定することで メッシュの対応した箇所を削除できるEditor拡張です。 一部アクセサリを削除したいけどメッシュが一つになってて Unity上で削除できない...

シェーダーの変更・設定手順

全形式で共通の事前準備

VRChat SDK(Software Development Kit)用にセットアップされたUnityプロジェクト作成と、対応するバージョンのUnityをインストールしておきます。
以下の記事の「3-2 プロジェクトの作成」までを参考にしてください。(1-4 VRM Converter for VRChat」と「2 VroidStudioでやっておくべき作業」以外)

あわせて読みたい
VRoidStudioで作った3DモデルをVRChatで使う 『VRoid Studio』をご存じでしょうか? 3Dキャラクターを簡単に制作することができるソフトウェアです。 https://vroid.com/ こちらではじめて3Dモデルを制作した方も今...

販売モデル等の.unitypackageからの場合

例えば「Booth」に代表されるオンラインショップで、「VRChat向けアバター」として配布・販売されている3Dモデルの大半は、この方法でシェーダー変更を行います。

あわせて読みたい
BOOTH - 創作物の総合マーケット BOOTH(ブース)とは、pixivと連携した、創作物の総合マーケットです。無料で簡単にショップを作成でき、商品の保管・発送代行サービスも提供しています!
STEP
必要なシェーダーをインポートする

シェーダーが同梱された商品の場合は飛ばして次のステップへ進んでください。

アバターの商品ページに記載された事前導入が必要なシェーダーを、ドラッグ&ドロップかダブルクリックでインポートしておきます。
インポート順が逆の場合、マテリアルエラーとなり面倒な再設定が必要になることがあります。
そのため、必要なシェーダー→3Dモデルの順でインポートしてください

マテリアルエラー(ピンク色)となったときの例
STEP
ダウンロードした.unitypackageをUnityにインポートする
STEP
変更先のシェーダーをインポートする
STEP
シェーダー変更したいマテリアルを複製しておく

不具合修正など、3Dモデルのアップデートを再度インポートする場合、アバターに付属していたマテリアルの設定はリセットされます
そのため、projectウィンドウからCtrl+Dでマテリアルを複製しておき、そちらで変更作業を行うことをお勧めします。

STEP
複製したマテリアルをモデルに割り当てる

Hierarchyウィンドウに配置された・配置したPrefabかFBXのうち、「Skinned Mesh Renderer」や「Mesh Renderer」がInspectorウィンドウに表示されるもの(メッシュ)を探します。
この中のマテリアルを複製したものに置き換えます。

元のマテリアルから置き換えたスロットは太字で表示される
STEP
マテリアルに割り当てられたシェーダーを変更する

Inspectorウィンドウのマテリアル設定から、使用シェーダーを変更します。

マテリアルで使用するシェーダーの選択
STEP
パラメータを調整する

必要に応じ、ノーマルマップやMatcapなどのテクスチャ・輪郭線の幅などの各設定を行い、お好みの見た目に調整します。

Vroid等の.vrmからの場合

シェーダーの変更方法は2-2 販売モデル等の.unitypackageからの場合と同様です。

あわせて読みたい
VRoidStudioで作った3DモデルをVRChatで使う 『VRoid Studio』をご存じでしょうか? 3Dキャラクターを簡単に制作することができるソフトウェアです。 https://vroid.com/ こちらではじめて3Dモデルを制作した方も今...

VRMに使用されている「VRM/」以下の「Mtoon」等のシェーダーは、PC版VRChatでも問題なく使用可能です。
ただし、モバイル端末でも動作することを想定されたVRM用シェーダーでは、使用できない機能が多くあります。
そのため、よりリッチな表現がしたい場合はMtoon以外のシェーダーへの変更をおすすめします。

.fbxからの場合

STEP
Unityに.fbxをインポートする

Unityに.fbx本体と、それに使用しているテクスチャをまとめてインポートします。

VRChatで人型のアバターとして動作させるにはリグの設定なども必要ですが、ここではシェーダー設定に関係するところのみ解説します。

STEP
FBXファイルからマテリアルを展開する

FBXの設定メニューから「Materials→Extract Materials」で編集可能なマテリアルを展開します。

.fbxからのマテリアル展開

以降は2-2 販売モデル等の.unitypackageからの場合と同様の手順です。

MMDモデル(.pmxと.pmd)→.fbxからの場合

STEP
モデリングソフトでMMDモデルをインポートする

Blenderでは以下の記事を参考に、モデルをインポートします。

あわせて読みたい
【Blender2.93】MMDモデルの読み込み、改造をしよう! こんにちは! 今回はBlenderでMMDモデルを読み込み、改造やエクスポートを行う方法についてまとめます。 オリジナルのパーツやシチュエーションを製作することができる...
STEP
同じテクスチャを使用しているマテリアルを統合しておく

MMDモデルでは「材質」として、衣装の裏表・反射度が違うパーツ・輪郭線の太さ違うパーツがそれぞれ別のマテリアルに設定されています。

しかし、多くのアバター用シェーダーでは、これらの材質の違いは、マテリアル設定でマスクマップを割り当てることで、1つのマテリアルで表現できることが大半です。

そのため、VRChat用途に変換して使用する場合、予めモデリングソフトで同じテクスチャを使用しているマテリアルを統合しておくとアバターを軽量化できます。

  • 設定を反映する部分を白⇔反映しない部分を黒とした、グレースケール画像。
    例えば、マテリアルで輪郭線の太さ=0.6と設定したとき、マスクマップで白の部分には太さ0.6・黒の部分には太さ0.0・中間の灰色の部分には太さ0.3の輪郭線がつきます。
STEP
モデルを.fbxとしてエクスポートする

MMDモデルのボーン構造をUnity・VRChatで使用できるように変換する必要があります。
ここでは詳細を省きますが、CATS Blender Plugin などを使用することで自動変換が可能です。

GitHub
GitHub - absolute-quantum/cats-blender-plugin: :smiley_cat: A tool designed to shorten steps needed ... :smiley_cat: A tool designed to shorten steps needed to import and optimize models into VRChat. Compatible models are: MMD, XNALara, Mixamo, DAZ/Poser, Blender ...

変換が終わったら、以下の記事を参考に.fbxとして出力します。

3 BlenderからFBXをエクスポート はコチラから

あわせて読みたい
【Blender3.0】FBXインポート/エクスポート設定方法~完全版~ こんにちは! 複数のCGソフトを使っていたり、ゲームエンジンで自作モデルを使う場合は、作ったモデルをインポート/エクスポートする必要があります。 そんなときに、FB...

以降は2-4 .fbxからの場合と同様の手順です。

なお、MMDモデル・MMD→Unity関連拡張ツールはVRChatやアバターとしての利用が明確に禁止されたものが多くあります。配布モデル使用の場合はよく規約を確認し、不明点があれば問い合わせるか、使用しない様にしましょう。

アバター用途で使いやすいシェーダー

liltoon

2023年現在のVRChatで最も使用されているシェーダーの1つです。
(より正確には、複数の用途別シェーダーが同梱された設定ツールとなっています。)

あわせて読みたい
【無料】lilToon - lilLab - BOOTH アバターを用いたサービス(VRChat等)向けに開発したシェーダーで以下のような特徴があります。 ● 簡単(プリセットからワンクリック設定&自作プリセットの保存、色調補...

3階層の影色の使用、明るさの下限・上限の設定、反射、逆光ライトといった、トゥーンシェーダーとして拡張性の高い設定を行うことができます。
さらに、ファー(モコモコ)やガラスの表現といった全く別の材質表現も、liltoonひとつで設定することが出来ます。

Sunao Shader

liltoon同様、VRChatでの使用を想定して作られたシェーダーです。
VRChatのワールドは製作者によってライトの明るさがまちまちのため、一般的なシェーダーでは真っ黒・白飛びしてしまうことがありますが、このシェーダーではデフォルトでその対策がなされています。

あわせて読みたい
Sunao Shader - 揚茄子研究所 - BOOTH Sunao Shaderは、VRChatでの使用を想定したUnity用シェーダーです。 VRChatにおける多種多様なライティング環境に極力対応するよう設計されていますので、ワールドの雰囲気...

設定項目がシンプルながら必要な機能が十分そろっているので、項目が多いと混乱してしまう方はこちらもおすすめです。

Poiyomi Toon Shader

上記2つと違い、海外コミュニティから人気が広がったシェーダーになります。
他のVRChat向けシェーダーのどれにも負けない多機能性を備えており、GIF画像を仕込む、動的な粒子化、厚みのある半透明の布の再現といったこともできます。

あわせて読みたい
Poiyomi Toon Shader - poiyomi - BOOTH ポイヨミシェーダーはUnityのビルトインレンダリングパイプライン用の機能豊富なシェーダーで、VRChatでの使用を想定しています。複数のシェーディングモードと堅牢なライ...

一方、設定項目がその分かなり多く、使いこなすには慣れが必要ですが、それを覚えてでも使う価値のあるシェーダーかと思います。

UTS2(ユニティちゃんトゥーンシェーダーVer2)を使用する場合の留意点

VRChatのUnityバージョンが2018.4.20f1だったの時期の記事では、アバター用シェーダーとしてUTS2(UnityChanToonShaderVer2)の使用を推奨するものが多く残っています。

しかし、UTS2はUnity2020以降には非対応であり、既にUnity2020以降のバージョンアップが明言されているVRChat用としては使用を避けることをおすすめします。

なお、UTS2の後継シェーダーである「Unity Toon Shader」はUnity2020以降に対応しています。

シェーダー自作を考えている方へ

ここから先はより専門的な内容になるため、読み飛ばしても問題ありません。

アバター用シェーダー自作の意義

多様なシェーダーが配布・販売されることによってシェーダーを自作する必要性は薄れていますが、以下のメリットがあります。

  • 自分にしかできない奇抜な表現が多くできる
  • 必要な機能以外を削いで軽量化できる
  • 販売・配布マテリアルの、エラー原因特定や改変が出来るようになる

一般的なUnity使用では、標準搭載のUnity C# scriptを割り当てて、ゲームに必要な処理を実行することができます。
一方で現在も、VRChatでは諸々の理由から、ワールド・アバターにUnity標準のC# scriptを使用することはできません

そのため、3Dモデルの見た目に”スクリプト”として干渉できるシェーダーは、VRChatでは貴重なもので、他機能と組み合わせ一枚の面にミニゲームを仕込むといった芸当も可能です。

  • 主に、クラッキングプログラムを仕込んだアバターやワールドによるデータの抜き取り・危険行為を行わせないためとされています。

シェーダー自作に必要な知識

主に以下の知識が必須になります。

  • プログラミングの基礎(どの言語でも共通の概念など)
  • 3Dの描画方法に関する知識(テクスチャ・法線・頂点・ポリゴン)
  • Unityシェーダー言語の基礎(ShaderLab)
  • 2種類のシェーダーの使い分け(Surfaceシェーダー・Vertex and Fragmentシェーダー)
  • 線形代数(ベクトル・行列・三角関数など)

これらの詳しい内容は本記事では省略しますが、検索ワードや書籍を探す際に参考になるかと思います。

Shader Graphの代用アセット

4-2 シェーダー自作に必要な知識 では、コードでシェーダーを記述する場合の知識を紹介しました。
一気にこの量のコーディング知識・ほか関連知識を身に着けるのには、抵抗がある方もいるでしょう。

そこで、Unity2018以降には「Shader Graph」という、グラフ(図)をつないでノードを接続し、直感的にシェーダを作成する機能があります。

しかし、Shader Graphは、1-3 Unityのレンダーパイプライン で解説した中のURP・HDRPのみの対応で、VRChatで使用できるシェーダーは作成不可です。

BRP環境でも使用できるノードでのシェーダー作成拡張機能としては、「Shader Forge」があります

STYLY - リアルメタバースプラット...
【Unity】ノードベースでシェーダーを作る入門【ShaderForge】 | STYLY この記事では、Unityで使える無料のノードベースエディタ「ShaderForge」を使ってシェーダーを作る方法をご説明します。

以前はUnity Asset Storeでの有料販売でしたが、現在は開発を終了し、Git経由で無料で入手可能となっています。

GitHub
GitHub - FreyaHolmer/ShaderForge: A Shader Editor for Unity A Shader Editor for Unity. Contribute to FreyaHolmer/ShaderForge development by creating an account on GitHub.

まとめ

本記事では、以下の内容について解説しました。

  • Unity・VRChatでのシェーダーの概要と制限
  • 各ファイル形式でのシェーダー変更の手順
  • 3種のアバター向けシェーダー
  • シェーダー自作のイントロダクション

以下のアバターを記事内で使用させていただきました。

あわせて読みたい
オリジナル3Dモデル「竜胆」ver1.08 - JINGO CHANNEL - BOOTH オリジナル3Dモデル「竜胆」 製作者: 진권/ジンゴ このモデルはBlender 2.80.75で製作されました。 他のプログラムでの互換性は保障いたしません。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次
閉じる