ねこさんなのです

ase01









↑白雪「表面下散乱と表面曲率、あの人が教えてくれた」

もちろんブログ主は教えてもらっていません>(`ヮ´)b
理解してからやるのではなく、理解しながらやります!
ヽ(`ヮ´)ノ

本日は肌の発汗について、材質の設定をモーフで
変更することにより踊っているうちに次第に汗を
かいていくような表現を検討してみましょうです

とりあえず例だけ先に、白雪です


ase02





















↑(上)白雪の肌 (下)光沢感のある、汗をかいたような肌

上のデフォ値は「material_skin_beige_dark.fx」を元に
適当に決めたものですが光源などにより同一の結果が
得られるとは限りませんので参考程度でどうぞです

 ray-cast の「Materials/Editor/Skin/」の下には、
専用PMXコント―ラ及び、そのモーフによるリアルタイム
操作が可能な材質が入っています

(`ヮ´)<最近のシェーダーでよくあるアレ

今回は適当な肌の材質を各キャラごとに設定、それらを
PMXコントローラーで制御可能とすることについて
実例を示してみましょうです

なお、今回使用したバージョンは ray-cast 1.3.1 です


 

 ・・・


(1)PMXコントローラの準備

キャラ名「白雪」に対して専用の肌の材質コントローラー
「SKshira.pmx」を作成することとします

「Materials\Editor\Skin」以下で次の作業をします

・「material_skin_1.pmx」を「SKshira.pmx」にこぴー

ファイル名は「SKin shirayuki」 ということにしました


ase03








↑(これは深雪用のPMXの例)

モデル名などを変更して読み込んだときに誰のものか
すぐわかるようにしておきます

他のキャラ(吹雪初雪深雪磯波浦波)のコントローラも
白雪からコピーしてモデル名のところを変更して
それぞれ作りました

一般にモデルの表示順には注意する必要がありますので
ここで説明しておきます

・スカイボックス(スカイドーム)
・ステージ(か床)
・ダミーボーンとか
・ray_controller.pmx
・(SKshira.pmx などの)材質コントローラ系
・キャラ
・エフェクトなどの PMX

モーションなしの状態で各種設定を行ったらいったん
セーブして次の機会にそこから再調整しつつ進める
(毎回0からは進めない)というのを推奨いたします



 ・・・


(2)fxファイルの準備


上記と同じフォルダ内で「material_skin__1.fx」を
複製コピーを作り「SKhada01.fxsub」というファイル名に
して保存

○「SKhada01.fxsub」

#define CONTROLLER_NAME "material_skin_1.pmx"
#include "material_editor.fxsub"
↑先頭にこの2行があるはずなので削除



次に「白雪」というキャラについて「SKshira01.fx」という
設定ファイルを作り肌を制御することにします

「SKshira01.fx」というファイルを新規作成し中身を
以下のようにしました

#define CONTROLLER_NAME "SKshira.pmx"
#include "material_editor.fxsub"
#include "SKhada01.fxsub"
↑こんな感じの3行です

1行めはさきほどのコントローラを設定しており
これは別キャラの fx であれば別の設定(SKmiyu.pmxなど)
になります

2行めの SKhada01.fxsub に各キャラ共通設定をする
ことになります

3ぎょうめは上記で作成したファイル名と同じものを
書きましょうです

このじょうたいで、キャラ(白雪)に「SKshira.fx」を
読み込んでエラーが出なければおkです

(`ヮ´)<文字コードは Shift-JIS ちゅうい

読み込めないファイルがある、とかエラーが出たら
確認しつつ慎重に修正をお願いします


別キャラなどにも「SKmiyu.fx」などとこぴぺ&キャラ名の
ところを改変して同様に作成していきます


(3)SKhada01.fxsub の変更

今回は全設定をMMD上でやることはせず、いつも
やってる設定を固定値として入れてしまうことにしました

いつもやってる設定は(といっても先週から開始した
ばかりですが)「Materials/Skin/material_skin_beige_dark.fx」
ですので、それを参考にしてしまいます

NORMAL_MAP (法線マップ)関係もいじっていますが
今回特にその設定を使ってませんので省略します

http://neko3nano.blog.jp/archives/23256934.html
↑(07/01)肌や服や髪の法線マップを検討する

自作の法線マップを作成し、それを利用するための
fx ファイルを使用したい場合には上記の記事が参考に
なるかもです

○修正前

static const float3 albedo = mAlbedoColor;
static const float2 albedoMapLoopNum = mAlbedoLoops;

○修正後

const float3 albedo = float3(247, 199, 149) / 255;
const float2 albedoMapLoopNum = 1.0;

↑いわゆる固定値です

肌の色が(日焼けとかあるとしても)毎回ベース色が
変わるのはどうかと思ったので今回は、元にした
「material_skin_beige_dark.fx」の値で固定とします

○修正前(さいごのほう)

static const float customA = mCustomA;
static const float customAMapLoopNum = mCustomALoops;

static const float3 customB = mCustomBColor;
static const float2 customBMapLoopNum = mCustomBLoops;

○修正後

const float customA = 0.6;
const float customAMapLoopNum = 1.0;

const float3 customB = pow(float3(238, 104, 94) / 255, 2.2);



↑こちらは表面下散乱(A)と表面曲率(B)の設定のようです


のようです、と書きましたが専門的な分野につき設定に
関する解説が少なく、今回はここもきめうちとしました

d(`ヮ´)<どう設定したらいいか、あとでわかったら変える

初期値はやはり「material_skin_beige_dark.fx」から
こぴぺしたものです


あとは「SKshira.fx」を読み込んでテストします


 ・・・


(4)モーフのチェック


「モデル編集時カメラ・照明追従」にしておくのが
セオリーです

ase04










↑まずは発汗っぽいのをやってみましょうです

「その他」の表情操作のところで・・

Smoothness (滑らかさ) をそれなりに上げる
Metalness (金属っぽさ)をちょっと上げる
深雪とかなら Melanin (日焼け)も上げてやるとおk

ase05










↑白雪の鼻頭、首筋、腕などに汗っぽいのが見えますでしょうか

こういう感じで任意にモーション中で発汗状態を制御して
通常のダンスに効果をつけることが可能です

○動画も



↑モーション:一騎当千(moka)

こちらの動画では後半から徐々に発汗が目立つ・・
かもしれません

なお、髪や服などは今回は基本的に固定にしていますが
それらも制御することも可能です

髪や服については材質の fx ファイルをキャラ別にしないで
全キャラ共通にしてしまうのも一案でしょう
(コントローラーの数が増えすぎないようにするため)


○モデル
・とらはぜ式白雪
○アクセ・背景
・葱焼町(葱焼P)
・孤島 昼(mahiro)
・ray-cast 1.3.1  https://github.com/ray-cast/ray-mmd/releases

ずさーc(っ`ヮ´)っー!