読者です 読者をやめる 読者になる 読者になる

Skyrim箱庭DIY

MODによる固有の環境不具合は自分で直して快適ゲーム。CTDにさようなら。Do It Yourself!!

Skyrimの子供種族へのサブサーフェイススキャッタリング(SSS)適用実験



スポンサーリンク

Nifskopeの記事の続き書いてたら、ちょっと思いついてしまったのでまた脱線。

子供種族へのSubsurface Scatteringの適用実験をしてみました。子供種族にはSSSの効果がうまく適用されず、首に線ができるかと思います。正しくは体だけ適用されて頭には適用されない感じでしょうか。

何かわかる事ないか?と、あれこれ試してみましたので、まとめてみます。

全然見当違いのことしてるかもしれません。元々頭部周りの構造とSSSにはかなり疎いので・・・(メインブログ見てもらえればわかりますが、かなり残念な人です僕)

 ラース君(でいいのかな、Lars君)で実験してみることにしました。

撮影場所はReview Studio With Green Screen Roomsです。TK Childrenを使っています。スケルトンはちょっとちんまりさせています。

デフォルトのラース君を確認

TK Childrenのラース君です。頭及び胴(服からちょっと見える)は、デフォルトではSSSが効かないように設定されています。Detail Map優先とのことです。

TKChildrenのLars君

 

Detail Map確認の為の印をつける

Detail Map(テクスチャSlot4 Height Map)の確認のために、これを使って額に戦化粧をしてみました。これで適用状態がすぐにわかります。

ラース君ミート君化

 

サブサーフェイススキャッタリングを有効化

頭と、胴の地肌の部分のメッシュの設定を変更して、SSSを有効化します。

Shader Flags 2のSlsf2_Soft_LightingをONに。これでテクスチャSlot3がサブサーフェイスマップとして有効化されます。

TKchildrenにSSSを適用

 

設定したあとのラース君です。首の境目がはっきりと見えます。胴にはSSSが効いていますが、頭には効いていないようです。

胴だけSSSが適用された図

 

Detail Mapを無効化してみる

作者さんのブログの説明で、「FaceGenが有効だとSSSが効かない」とのお話がありましたので、Shader Flags 1 SLSF1_Facegen_Detail_MapをOFFにしてみます。これでテクスチャSlot4が使えなくなるはずです。

子ども改変Mod TK Children skyrimshot

 

OFFにした後のラース君です。額の戦化粧が消えました。たしかにSSSは効いているようですが、Detail Mapが消えたので顔が真っ白な感じです。SSSが効くとはいえ、顔色固定になってしまうのは不便ですので、ちょっと考えてみます。

DetailMap無しだとSSSが効いてる図

 

子供種族の違うところを考える

さて、何が違うせいで問題が起きているのか?という話です。考えるにあたっては、まず情報です。キバヤシなら直感でいけますが僕には無理です。専門知識も乏しい以上、間違い探しのノリでいきます。バニラの大人種族と比較して、2箇所気になる点を見つけました。

 

1.頂点カラーが無い

バニラの大人のメッシュは、いずれも頂点カラーが設定されています。NiTriShapeData>HasVertex Colorsが大人のメッシュではYESですが、子供のメッシュはNOになってます。

ですが、UNP等の体型メッシュでもNOの場合もあるので、とりあえず気に留めておくことにします。

頂点カラーってテクスチャに依存しないでメッシュで色を持てる、ってことでいいんでしょうか。簡易的な陰影をつけるのに便利だとか見た覚えが?

 

2.ノーマルマップがタンジェントスペース型になっている

これちょっとびっくりしました。NPCはみんなオブジェクトスペース型だと思っていたので。SSSが効かないというのは、Shader設定との兼ね合いな気がする(違ってたらすいません)ので、これすごく怪しくないですか?

バニラの子供(男)のノーマルマップです。虹色のオブジェクトスペース型ではないです。タンジェントスペース型です。

子供種族のノーマルマップ

テクスチャとかよくわからない人は、最後にテクスチャ記事のリンク張っておきますので、よかったら読んでください。

 

オブジェクトスペース型ノーマルマップを作ってみる

BlenderでSmoothかけただけのメッシュから、オブジェクトスペース型のノーマルマップをベイクしてみました。

オブジェクトスペースで子供種族のノーマルマップ作成

良く見る虹色のやつができました。これを使ってみます。

 

オブジェクトスペース型ノーマルマップを試してみる

というわけでまた実験です。メッシュのShader Flagsをまた変更します。Nifskopeの記事でも書いてたのですが、ちょっとフライングです。

SLSF1_Model_Space_Normalsをonにします。末尾の_msnって、これの略ですかね。

メッシュをオブジェクトスペース対応にフラグ設定

 

ラース君です。つくりこまれたノーマルマップじゃないのは大目にみてください。Detail Map有効なままSSS効いてるように見えますが、どうでしょう?

DetailMapとSSSが両立できた?

 

Detail Mapを変更してみる

ちょっとDetail Mapを濃くしてみました。顔色ってこうやって変えるんでしょうか?ちょっと赤っぽくなりましたが、首の境界が目立ってる感じです。

DetailMapを濃い目に

胴で設定されている、SLSF1_FaceGen_RGB_Tintの適用がうまくいっていないんでしょうか?過去の実験からだとそんな気もしますが、ちょっとぼくのキャパ超えそうです。

 

胴もオブジェクトスペース型に作り直す

胴もオブジェクトスペース型で作ってみたので、それをつかってみます。頭と同じことしただけです。

ちょっと軽減されたような気もしますが、いかがなもんでしょうか。あんまり目良くないんで自信ないです。

胴のノーマルマップもオブジェクトスペース化

 

頂点カラーを設定してみる

せっかくだからこれも試してみます。Has Vertex ColorsをYESにした上で、SLSF2_Vertex_ColorsもONにします。

なんか軽減されたような気がしなくもないですが、多少ラース君も動いているので厳密な比較にはなっておりませぬ。

頂点マップを設定

 

ちなみにこの状態でノーマルマップをタンジェントスペース型に戻したら、SSSではなくDetail Mapの方が無効化されました

頂点カラー有りのタンジェントスペース

 

オブジェクトスペース型ノーマルマップ&頂点カラーYES状態で、Tint Mapもきちんと有効になってます。龍咲海宇宙の海は俺の海的なのを、ほんのりTint Mapに描いてみました。

龍咲海は俺の海

 

とりあえず全部並べてみました。SS撮り慣れてないのでサイズバラバラですが。

SSS実験まとめ

 

こんな感じで、なんか効いてるような気がしているのですがどうなんでしょうか。根本的に勘違い記事だったらマジすいません。

 

自キャラの顔のSSSが微妙に変と思った人居ましたら、参考に別記事どうぞ。