Nifskopeの記事の続き書いてたら、ちょっと思いついてしまったのでまた脱線。
子供種族へのSubsurface Scatteringの適用実験をしてみました。子供種族にはSSSの効果がうまく適用されず、首に線ができるかと思います。正しくは体だけ適用されて頭には適用されない感じでしょうか。
何かわかる事ないか?と、あれこれ試してみましたので、まとめてみます。
※全然見当違いのことしてるかもしれません。元々頭部周りの構造とSSSにはかなり疎いので・・・(メインブログ見てもらえればわかりますが、かなり残念な人です僕)
ラース君(でいいのかな、Lars君)で実験してみることにしました。
撮影場所はReview Studio With Green Screen Roomsです。TK Childrenを使っています。スケルトンはちょっとちんまりさせています。
- デフォルトのラース君を確認
- Detail Map確認の為の印をつける
- サブサーフェイススキャッタリングを有効化
- Detail Mapを無効化してみる
- 子供種族の違うところを考える
- オブジェクトスペース型ノーマルマップを試してみる
- Detail Mapを変更してみる
- 胴もオブジェクトスペース型に作り直す
- 頂点カラーを設定してみる
デフォルトのラース君を確認
TK Childrenのラース君です。頭及び胴(服からちょっと見える)は、デフォルトではSSSが効かないように設定されています。Detail Map優先とのことです。
Detail Map確認の為の印をつける
Detail Map(テクスチャSlot4 Height Map)の確認のために、これを使って額に戦化粧をしてみました。これで適用状態がすぐにわかります。
サブサーフェイススキャッタリングを有効化
頭と、胴の地肌の部分のメッシュの設定を変更して、SSSを有効化します。
Shader Flags 2のSlsf2_Soft_LightingをONに。これでテクスチャSlot3がサブサーフェイスマップとして有効化されます。
設定したあとのラース君です。首の境目がはっきりと見えます。胴にはSSSが効いていますが、頭には効いていないようです。
Detail Mapを無効化してみる
作者さんのブログの説明で、「FaceGenが有効だとSSSが効かない」とのお話がありましたので、Shader Flags 1 SLSF1_Facegen_Detail_MapをOFFにしてみます。これでテクスチャSlot4が使えなくなるはずです。
子ども改変Mod TK Children skyrimshot
OFFにした後のラース君です。額の戦化粧が消えました。たしかにSSSは効いているようですが、Detail Mapが消えたので顔が真っ白な感じです。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効いてるように見えますが、どうでしょう?
Detail Mapを変更してみる
ちょっとDetail Mapを濃くしてみました。顔色ってこうやって変えるんでしょうか?ちょっと赤っぽくなりましたが、首の境界が目立ってる感じです。
胴で設定されている、SLSF1_FaceGen_RGB_Tintの適用がうまくいっていないんでしょうか?過去の実験からだとそんな気もしますが、ちょっとぼくのキャパ超えそうです。
胴もオブジェクトスペース型に作り直す
胴もオブジェクトスペース型で作ってみたので、それをつかってみます。頭と同じことしただけです。
ちょっと軽減されたような気もしますが、いかがなもんでしょうか。あんまり目良くないんで自信ないです。
頂点カラーを設定してみる
せっかくだからこれも試してみます。Has Vertex ColorsをYESにした上で、SLSF2_Vertex_ColorsもONにします。
なんか軽減されたような気がしなくもないですが、多少ラース君も動いているので厳密な比較にはなっておりませぬ。
ちなみにこの状態でノーマルマップをタンジェントスペース型に戻したら、SSSではなくDetail Mapの方が無効化されました。
オブジェクトスペース型ノーマルマップ&頂点カラーYES状態で、Tint Mapもきちんと有効になってます。龍咲海宇宙の海は俺の海的なのを、ほんのりTint Mapに描いてみました。
とりあえず全部並べてみました。SS撮り慣れてないのでサイズバラバラですが。
こんな感じで、なんか効いてるような気がしているのですがどうなんでしょうか。根本的に勘違い記事だったらマジすいません。
自キャラの顔のSSSが微妙に変と思った人居ましたら、参考に別記事どうぞ。