はじめに
今回はBlenderでキャラクターのマテリアルを設定する方法を紹介します。
第31回の続きになります。
このような「3Dモデル」と「テクスチャ」が用意されている前提で進めます。

※モデルがあれば何でもありなので、この記事単品で見ても大丈夫です。
使えるなら配布されてるシェーダーが無難
VRChatの見え方を想定したシェーダーがBoothなどで売られてます。
使えるなら、こちらを使うのが一番簡単かつ高クォリティです。


ただし、下記のような問題があります。
・販売予定のモデルにこれを使うと、素材の再配布になる
・これが利用規約的にNG、もしくは明記されてないという問題がある
なので、個人が楽しむ範囲であればこの2つは役立つと思います。
が、販売を考えてるモデルでは避けた方が良いです。

TRIMさんの方はお問合せしても10日ぐらい返答無し
+Twitter削除済みなので失踪説。
MN toonshade nodeの方は、著作者の権利を侵害する発言、行為などを禁止なので
おそらく再配布はNG。(お問合せはしてない)
両方とも権利の問題があり、販売モデルに使うのには向きません。
なので、次以降は人力でできる最低限のマテリアル設定の方法を解説します。
カラーテクスチャの設定
まず、カラーテクスチャの設定方法を紹介しながら、
Blenderのマテリアルの基本操作を解説します。
↓のようなテクスチャがある事を確認。

キャラクターモデルがあるBlenderを開きます。
Z → 2キーで「マテリアルプレビュー」に変更。

画面上部から「Shading」を開きます。

マテリアルを設定したいオプジェクトを選択。
すると、画面下部のマテリアルエディターにそのマテリアルが表示されます。

そしたら、Unityに戻りカラーテクスチャを右クリック。
→ Show in Explorerを選択。

そこから、使っているカラーテクスチャをBlenderのノードの所にドラッグ&ドロップ。
「カラー」と「ベースカラー」を配線。

これで、色情報が表示されます。

以上が、カラーテクスチャの設定方法。
Blenderマテリアルの基本操作です。
編集するマテリアルを変える方法
編集するマテリアルは、選択するオプジェクトを変えると切り替えれます。

あとは、同様にカラー情報を読み込み → 配線。

これで、他のオプジェクトにも色を割当てることができます。

1オプジェクトに2つ以上のマテリアルがある場合
1オプジェクトに2つ以上のマテリアルを割当てた場合は「スロット1~」の所を選択。
ここで切り換えることができます。

これで、1オプジェクトに2つ以上のマテリアルがある場合の色も塗れます。

マテリアルマークの所を操作すると、割り当てたマテリアルが変化してしまうので注意。

以上が、編集するマテリアルを変える方法です。
これらを駆使することで、モデル全体にカラーテクスチャを乗せることができます。

VRChatっぽい見え方を軽く再現する
UnityのlilToonとBlenderのシェーダー関係はそもそもの計算式、考え方が違います。
なので、完全に同じにするのは難しいです。

その上で、見た目に大きく影響を与える下記の3要素の再現方法を解説します。
・MatCapによるハイライト設定
・ノーマルマップの設定
・白黒画像による透過設定

MatCapのハイライトを入れる
髪の毛のオプジェクトを選択。

シェーダーエディターでShift+A → ベクトル → 「マッピング」を作成。

もう一度Shift+A → ベクトル。
今度は「ベクトル変換」を作成。

もう一度Shift+Aキー。
入力 → 「テクスチャ座標」を追加。

制作したノード下図のように繋げます。

さらにShift+A → シェーダー → 「ディフューズBSDF」などを追加。
(色を表示できるモノであれば、なんでもOKです。)

ここにMatCapのハイライトテクスチャを追加。
そして、下図のように配線します。

そして、Shift+A → シェーダー → 「シェーダー加算」を追加。

それを下図のように配線します。


上がMatCapのハイライトを表示するノード。
下がカラーマテリアルを表示するノード。
この2つ、上側のノードを「加算」で合成して光らしてます。
これで、Mat Capのハイライトが表示されます。
が、向きが正しくありません。

そこで、ベクトル変換を下図のように設定。
・2段目を「オプジェクト」に変更
・3段目を「カメラ」に変更

マッピングを下図のように変更
・位置のXとYを1m
・スケールのXとYを2.000に変更

これで、正しく表示されます。

画面を動かすと、MatCapなのでハイライトが動きます。

以上が、MatCapのハイライト設定です。
ノーマルマップを入れる(Open GL)
ここでは一般的なノーマルマップの「Open GL」を想定して設定します。
↓DXを使ってる方はこちらのノードを参考にしてください。

ノーマルマップを設定したいオプジェクトを選択。

シェーダーエディターでShift+A → ベクトル → 「ノーマルマップ」を追加。

そして、ノーマルマップの画像を読み込み。
下図のように配線。
あとは「強さ」などを調整。

確認用にShift+A → ライト → 「ポイント」を追加。
Z → 8キーでレンダー表示。

ライトを当てるとノーマルマップの挙動が見れます。

ただ、若干暗くなるので注意。

ノーマルマップ有りと無し。
Blenderではあえてノーマルマップを使わないのも1つの手です。

あとは、ハイライトの形が気になる場合。粗さ1.000にして調整。
(こちらもノーマルマップを入れると必要以上に目立つようになりました)

これで、ノーマルマップの設定が完了です。

白黒画像で透過表現
VRChatの透過表現は白黒画像で設定されてます。
こちらをBlenderで設定します。
まず、透過を設定したいオプジェクトを選択。

白黒の透過情報テクスチャを下図の位置に配置。

この白黒透過テクスチャの「カラー」とシェーダーの「アルファ」を繋げます。


アルファ=3DCG界隈では、透過という意味で使われます。
すると、透過部分が黒く表示されます。

シェーダーエディターで「Nキー」で右側の所を表示。
「オプション」を選択 → 設定を開きます。
ブレンドモードを「アルファクリップ」に変更。

これで、半透明は表現できませんが…
透過する所は透過、しないところは100%表示の設定になります。

「アルファブレンド」にすると、半透明も表現できます。
ただし、バグが多い設定です。

半透明のオプジェクトが重なったり、裏側がある場合、下図のような表示になります。

「背面を表示」のチェックを解除すると治ることがあります。

これで、ぱっと見は上手く行った感じになります。

が、透過部分を重ねると表示がバグります。
こればかりはどうすることもできません。

なので、Blenderは基本、アルファクリップを使う事をおすすめします。
あとは、影も透過表示できますが… アルファブレンド(半透明)に非対応。

以上が、白黒画像で透過を表現する設定です。
その他の調整
あとは、優先度が低いですが、紹介したい設定内容を解説します。
Shadingウインドウの背景調整
BlenderのShadeingウインドウに切り替え。
3DビューでZ → 2キーでマテリアルプレビュー変更。

すると、謎の背景が出てると思います。
これは右上の所で調整できます。
「回転」を操作すると、背景が回ります。

これで、光の向きを調整できます。

あとは、ワールドの不透明度を0.000に設定。

すると、ライティングは残りますが背景が単色になります。


私達が普段見ている3Dビューのマテリアルプレビューの設定がこれです。
マテリアルプレビューに自動でライティングが入るのは、この謎背景があるおかげです。
(謎背景 = 3DCGのHDRIという技術。360°写真を貼り付けそれを光源として使う方法)
以上が、Shadeingウインドウの背景調整です。
マテリアルの影を消す
マテリアルの影は消すことができます。
ただし、影を消すため全体を光らせるので…
Blenderで静止画作品を作ろうとした際、辻褄が合わない事があります。


あくまでUnityのモデルがメイン。
Blenderは確認がしたいだけ…
という方ならこちらの方が表示として近いと思います。
「カラー」と「ベースカラー」の配線を外します。(上手くできない方は線上を右クリック)
カラーテクスチャの「カラー」を放射の「カラー」に接続。


放射 = 設定した色彩を放射している = 発光してるという意味です。
つまり、ここに刺した色でモデルが光ります。
そして、ベースカラーを黒色に設定。

これで、影の表示が消えます。

以上が、VRChatキャラのマテリアルの設定方法
まとめ
今回はVRChatキャラのマテリアルの設定方法を紹介しました。
・使えるならBoothなどで配布されてるシェーダーを使うのが一番
・配布シェーダーは利用規約の問題があるので販売を考えてる方は注意
・なので、この記事ではシェーダーを1から作る方法を解説
・Blenderの色味は「シェーダーエディター」で調整可能
・カラーとベースカラーをつなげば色が出る
・MatCapはテクスチャ座標、ベクトル変換、マッピングの3つを組み合わせれば設定可能
・ノーマルマップは一度「ノーマルマップ」というノードを通せば設定可能
・白黒の透過情報はカラーをそのままアルファに繋げば設定可能
↓次回↓

また、他にも3DCGについて解説してます。
ぜひ、こちらもご覧ください。
コメント