ねこさんなのです

前日の記事で砲戦・・いえ法線マップを髪について
作成して適用する件について書きましたので今回は
成り行き的に服や肌(日焼け、いわゆるヌルテカなど)
について既存の法線マップの利用を中心に書き進めて
みました

mikuray01








↑(左)三隈通常髪 (右)法線マップで陰影を強めた髪

デフォ肌で不健康そうな色でもうしわけないのですよ

まずは三隈先生の髪に注目をお願いします
どうみても別の人に見えるかもしれませんが今三隈と
決めましたので以後そういうことでよろしくです

http://neko3nano.blog.jp/archives/23222571.html
↑(06/30)前日の記事、ノーマルマップで髪に陰影

mikuray02









↑後頭部も確認しておきましょうです

(左)陰影あり (右)標準ではつるっとした感じです





 

とりあえず髪の法線マップの変更について書きます

(1)テクスチャからの法線マップの作成

「gimp-normalmap」を「gimp」に導入しテクスチャを読み
「フィルター」「マップ」「Normalmap」を実行し、
「Scale」で陰影の深さを調整し
「InvertY」で凹凸の向きを必要に応じて反転

詳しくは前日の記事で書きましたので要点だけ述べました

今回 ray-cast だけで使うことにしますと、モデルの
改造については不要ですので、ここからは fx ファイルの
書き換えについてのみ再度説明します

(2)fx ファイルの書き換え

「/Materials/Hair」以下の「material_hair_sss.fx」
に対して法線マップを使用する変更を行うこととします

修正後は必ず別名で保存することにしましょうです


○修正前

#define NORMAL_MAP_FROM 0
#define NORMAL_MAP_TYPE 0
#define NORMAL_MAP_UV_FLIP 0
#define NORMAL_MAP_FILE "normal.png"

○修正後

#define NORMAL_MAP_FROM 1
#define NORMAL_MAP_TYPE 0
#define NORMAL_MAP_UV_FLIP 0
#define NORMAL_MAP_FILE "tnormal/hair_49I.png"


ただし(1)で作成した法線マップは「tnormal/hair_49I.png」
というファイル名で保存したことにします

上記の部分に継続している
const float normalMapScale = 1.0;
という行が陰影の凹凸の深さに関わる数値で、とりあえず
手で書き換えて保存すれば設定が変わります

ファイル名に日本語が含まれる場合 Notepad++ を使って
いるならば「エンコード → 文字セット → 日本語 → ShiftJIS」
としておかないとMMDでエラーになります

(`ヮ´)<デフォはUTF8

Notepad++ についても前日の記事で説明したので省略します

MMDのMMEの特徴で、割り当てている状態の fx ファイルは
書き換えた瞬間に何もしないでもMMD上で読み直され
最新の設定が適用されますので確認にベンリです

mikuray03








↑髪型によって良好なものは変わると思います


(3)法線マップの凹凸の反転

場合によっては陰影の凹凸を反転したいかと思います

法線マップの画像に対して「gimp」ならば
「色」「トーンカーブ」にて
チャンネル「赤」及び「緑」に対して
デフォでは左下から右上に伸びている直線を
左上から右下に変更する

上記の作業で陰影が反転されます

またノーマルマップを左右反転する場合はRのみ
トーンカーブを左上から右下に変更します
同様に、上下反転する場合はGのみ左上から右下に、
それぞれ変更しないと模様と法線がズレますので注意です

自作のノーマルマップでなく、ネットで公開されている
ノーマルマップを利用する場合、必要に応じて陰影の
修正をしましょうです



 ・・・


○肌の設定

(4)日焼け肌

「Materials」「Skin」「material_skin_beige_dark.fx」
に対して、日焼け肌の設定をしてみました

mikuray04









↑(左)デフォ肌 (右)日焼けしたような色の肌


○修正前

#define ALBEDO_SUB_ENABLE 0

○修正後

#define ALBEDO_SUB_ENABLE 4
#define ALBEDO_SUB_MAP_FROM 0
#define ALBEDO_SUB_MAP_UV_FLIP 0
#define ALBEDO_SUB_MAP_APPLY_SCALE 0
#define ALBEDO_SUB_MAP_FILE "albedo.png"

const float3 albedoSub = 1.0;
const float2 albedoSubMapLoopNum = 1.0;

↑こんどはこんな感じです

albedoSub を書き換えていくと日焼けの度合いが変わります
数字が大きいほど強く肌が日焼けします


(5)ヌルテカ肌

mikuray05









↑(左)通常肌 (右)日焼けかつちょっとテカった肌

あんまりヌルヌルさせていませんが、調整が
適当なのでどうぞおゆるしくださいです


○修正前

const float smoothness = 0.45;

const float metalness = 0.0;


○修正後

#define SMOOTHNESS_MAP_FROM 0
#define SMOOTHNESS_MAP_TYPE 0
#define SMOOTHNESS_MAP_UV_FLIP 0
#define SMOOTHNESS_MAP_SWIZZLE 0
#define SMOOTHNESS_MAP_APPLY_SCALE 0
#define SMOOTHNESS_MAP_FILE "smoothness.png"

const float smoothness = 0.75;
const float smoothnessMapLoopNum = 1.0;

#define METALNESS_MAP_FROM 0
#define METALNESS_MAP_UV_FLIP 0
#define METALNESS_MAP_SWIZZLE 0
#define METALNESS_MAP_APPLY_SCALE 0
#define METALNESS_MAP_FILE "metalness.png"

const float metalness = 0.01;
const float metalnessMapLoopNum = 1.0;



↑「滑らかさ」と「金属っぽさ」を多少上げてみましょうです


(6)服とか

「Material/Cloth」以下の「material_cloth.fx」に対して
上述の(2)で記述した髪の場合と同じように
修正を試みました


mikuray06









↑(左)標準の服 (右)布っぽい?反射低めで陰影ありの服

(`ヮ´)<ようやく落ち着いて見られる感じになってきたにゃー


(7)おまけ

MMEのタブで Main とか Material など、材質ごとに
いろいろ複雑な設定をすることがあると思います

mikuray07









↑MMEではモデル単位での設定の保存を明示的にできます

いっかい設定したらセーブすれば、次から同じモデルか、
あるいは似た材質順を持つ姉妹艦のモデルなどでロード
して使い回しができます

なお、「Main」や「Material」など、保存されるのは
タブごとの情報ですので注意です

(※)「Main」だけ保存しても例えば「Material」の
情報は保存されていませんので別に保存しないといけません

これは前日の記事で説明してませんでしたので改めて
ここで説明させていただきました



 ・・・


テクスチャを法線マップに変換する方法を1回覚えておけば
だいたいなんでもできる、ような気がします

細かくは保留しますが、若干発光するタイプの fx と組み合わせ
わずかに発光させつつ陰影もつけるとより良いかもしれません

いずれにせよ ray-cast で法線マップを髪、肌、服の一式に
設定できるようになり、これでどうやら通常の利用で
 ray-cast を使っても問題ないレベルに到達できたかもです
(´ヮ`)b


 ・・・


○いちおう

特に日焼け部分について確認のために動画も作っておきました


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


 ・・・


○モデル
・とらはぜ式153A
 髪:三隈
○アクセ・背景
・ray-cast 1.3.1  https://github.com/ray-cast/ray-mmd/releases
・実写背景 http://www.hdrlabs.com/sibl/archive.html
  Harbour_2

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