今回はBSLightingShaderProperty編です。テクスチャのパス設定やライティング、スペキュラやグロスの強度等、さわる機会が多いです。設定次第で大きく雰囲気の変わるところでもあります。前回も書きましたが、あまりモデリングを専門にやってない人なので、間違いあるかもしれません。
一応続き物です。
前回の記事はこちら
マテリアルの設定やテクスチャ情報がこの中に格納されています。esmやespでTexture Setが定義されていない場合は、ここで設定されたテクスチャをメッシュに貼り付けます。
BSShaderTextureSet
前後しますが、先にBSLightingShaderPropertyの子ノード、BSShaderTextureSetからいきます。
Detailsに、テクスチャのパスが設定されています。過去記事でも少し触れましたが、好きに書いていい訳ではなく、どこに何のテクスチャを指定するか決まっています。
テクスチャは上から順に、次の並びになっています。
Slot1.ディフューズマップ
Slot2.ノーマルマップ
Slot3.エミッシブマップ(グロウ、リムライト)/サブサーフェイスマップ
Slot4.ハイトマップ
Slot5.キューブ環境マップ
Slot6.環境マップマスク
Slot7.Tintマップ
Slot8.スペキュラマップ/バックライトマップ
BSLightingShaderPropertyの設定によって、必要なテクスチャが決まります。
テクスチャの詳細は別記事参照してください。
BSLightingShaderProperty
下のSSはScaledArmorのBSLightingShaderPropertyです。親ノードである41番の下に、46番として接続されています。
Block Detailsの詳細です。光に関する設定がてんこ盛りです。各項目をわかる範囲でまとめてみます。
Skyrim Shader Type
陰影や反射、透過といった色の見え方に関する基本設定です。この設定とShader Flagsの設定に不整合があると、表示の異常や確定CTDの原因になります。(自分の所ではDefault設定でSLF2_Glow_MapをONにすると確定CTDを確認)
いっぱいありますが、わかるのだけ書きます。そのうち追記します。
Default
多くがこの設定になっています。ランプみたいなStatic Object、メタリック感の無い装備、食べ物等色々です。Shader Flagsの設定で、テクスチャスロットの使い方が変わります。
追加テクスチャSlot
Slot3(Sub Surface Map、Rim Lighting Map)
Shader Flags2 SLSF2_Soft_LightingをONでSub Surface Map(だと思います)
Shader Flags2 SLF2_Rim_RightingをONでRim Lighting Map
両方ONだとRim Lighting設定が優先になるみたいです。どちらも使わないという場合も多いです。
Rim Lighting Mapはエミッシブマップの一種みたいですがすいません良くわかりません。輪郭抽出されるようなリムライトを自分の環境で確認できません。Trollには設定されているのですが、テクスチャがリムライトの演出できるようには見えません。僕が根本的勘違いしてる可能性もありますが。
Slot8(Supecular Map、Back Lighting Map)
通常Specular Map(SLSF1_SpecularがONの場合。OFFの時はスペキュラが無いので意味無し)
Shader Flags2 SLSF2_Back_LightingをONでBack Lighting Map
Environment Map
キューブ環境マップからの写り込みを使います。金属系鎧に多いです。設定項目「Environment Map Scale」が有効になります。
追加テクスチャSlot
Slot5(Environment Map)
Slot6(Environment Map Mask)
Shader Flags1 SLSF1_Environment_MappingをON
Shader TypeをEnvironment Mapにすれば、「Environment Map Scale」の項目がグレーから黒になり、使えるようになります。あとはShader Flags 1の設定を忘れずに。
比較画像作ってみました。比較対象はScaled Armorだけです。他の部位や体は変更してません。
画像上段
Skyrim Shader Typeの変更と環境マップマスクの有無の比較です。
左:DefaultのScaled Armor。見ての通り普通です。
中:Environment Map。写り込みの影響で全体がてかってます。
右:マスクで胸部の金属だけに適用しています。他の部分は影響ありません。
画像下段
胸部の金属のディフューズマップとノーマルマップを変更してフラットにしてみました。画像幅900pxあるので拡大するとわかりやすいかも。
※変なリンク仕込んでないので安心してください。カーソル載せて変なファイル名でてくるのは、はてなブログの仕様です。ファイル名変えられないんですよね・・・
左:Scale0.3です。凹凸を潰したのでかすかに写り込みが見えます。
中:Scale1.0です。上段右と同じ。左より写り込みがちょっと強め。
右:Scale10です。1.0を超えてるので発光みたいになってしまいました。
SS撮影に使った環境マップ、ディフューズ、ノーマル、マスクの各テクスチャです。
環境マップはLDR and HDR Environment Cubemaps、Scaled ArmorのテクスチャははaMidianBorn Scaled Armorを、やっつけ仕事でフラットにしました。環境マップマスクは適当に塗っただけです。
Glow Shader
「Emissive Color」で設定した色で自己発光します。設定項目「Emissive Multiple」で発光強度が変わります。
Environment MapのShader Typeとは排他使用になると思います。一部は発光、一部は写り込みといった形にしたい場合は、メッシュ分けないとダメな気がします。
追加テクスチャSlot
Slot3(Glow Map)
Shader Flags1 SLSF2_Glow_MapをON
Glow Shaderの比較画像。
上段左:Emissive Multiple 0.3。ほんのり光ってます。写り込みはもう無いです。
上段中:Emissive Multiple 1.0。アクシズショックくらいの光です。
下段左:Emissive Multiple 10。小林幸子級に光ってます。
下段中:Emissive Multiple 20。Slot3のグロウマップを使って、胸部だけ白色発光。
せんとくん:Emissive Multiple 50。目とおでこを赤く発光。
上段中の設定。Glow ShaderでEmissive Colorを緑っぽく設定しています。
下段中の設定。Shader Flags 2にSLSF2_Glow_Mapを追加してます。Emissive Colorは白、倍率20です。
グロウマップ。胸部の丸だけ発光許可です。SSで使うちんちくりんの、かんから屋さんのゴーグルも、この理屈で光ってます。
Heightmap
パララックス対応テクスチャを使う場合しか知らないです(他にもあるかもですが見チェック)。この場合、ENBが無いと機能しません。
追加テクスチャslot
Slot4(Height Map)
Shader Flags 2 SLSF_2_ParallaxをON
※地形(terrain)用のパララックス対応テクスチャの場合、ディフューズマップのアルファチャネルにハイトマップが格納されてます。このテクスチャを使いたい場合は、ハイトマップを分離してからslot4で指定する必要があります。
Face Tint
顔に使います。Shader Flags1のSLSF1_Facegen_Detail_MapをONでSLSF1_Model_Space_NormalsをONにすると、オブジェクトスペース型ノーマルマップが使えるようになります。
追加テクスチャSlot
Slot3(Sub Surface Map)
Shader Flags2 SLSF2_Soft_LightingをON
Slot4(Detail Map)
Shader Flags1 SLSF1_Facegen_Detail_MapをON
Slot6(TintMap)
特に設定無しで使えそう?
サブサーフェイスマップの違いによるリディアさんの顔の比較です。違いがハッキリ出るようにENBの強度かなり上げているんで、実際はここまで強烈にはなりません。
上段がリディアさんのSS、下段がサブサーフェイスマップです。真ん中はUNPのインストーラに入ってるものです。緑を使うと肌色と全く違うので、乗り方が見えて面白いです。
ディティールマップの違いによるヘイムスカーさんの比較画像。
左:blankdetailmap.dds。ちょっと若く見えます。
中:maleheaddetail_rough02.dds。デフォルトです。
右:maleheaddetail_age50.dds。渋いオジサマになりました。
Tintマップの違いによるリディアさんの比較。
左:真っ白のTintマップ。すっぴん状態。
中:SBFのリディアさんのTintマップ。ほんのり薄化粧。
右:バニラのリディアさんのTintマップ。パンチが効いてます。
Tintマップですが、プラグイン側でアドレスで管理されているようなので、BSShaderTextureSetを書き換えても反映されないと思います。
Skin Tint
体に使います。設定項目「Skin Tint Color」が有効になります。Face Tint同様、Shader Flags1のSLSF1_Model_Space_NormalsをONにして、オブジェクトスペース型ノーマルマップを使うのが一般的です。SLSF1_FaceGen_RGB_TintをONにすると、Shader Type「Face Tint」での色に合わせてくれる気がします。OFFだと色が合わず、境目が見えます。
追加テクスチャSlot
無し。Defaultと同じ。
SLSF1_FaceGen_RGB_Tintを胴だけOFFにしてみました。首と手の境界がはっきり見えてます。手はONのまま。
※プライバシー保護のため一部画像を修正しております。あらかじめご了承ください。
髪とか目はやったことないんで現状わかりません・・・そのうち試したら追記します。
一旦切ります。Shaderだけで結構な分量になってしまいました。
続きはこちら