HDRP の話題にかこつけてちょっとやらちい画像をうpするので閲覧注意
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

HDRP の話題にかこつけてちょっとやらちい画像をうpするので閲覧注意

2020-09-18 12:00
    ■Unity HDRP の SSS とスペキュラ

     Unity HDRP の Subsurface Scattering で人肌を再現する。Object Space Normal Map で筋肉も表現する。Specular Map で汗を表現する。どれも、絵がリアルになり、ちょっとやらちくなる。それらを全部同時に適用したら、とってもとってもやらちい絵ができるかと思ったけど・・・上手くいかない。汗の表現が弱くなってしまう。
     Unity2018.3.7f1 + HDRP4.2 じゃ古いかな? と思って、取り急ぎ Unity2020.1.6f1 + HDRP8.2.0 でやってみたけど、結局同じことみたい。


    1)Standard。これも絵面がすでにアレですが

    1)を SSS でちょっと柔らかくする


    1)に Normal で筋肉をつける(これはつけすぎるんで多少落とします)


    1)に Specular で汗を足す


    以上を全部同時に・・・あれっ?汗が弱い
    (ホントはもっと弱い。強度を 4倍にしてこんなもんです)

     HDRP の SSS は、Albedo を塗って、Specular を足して、そのあと SSS を適用する・・・んだと思う。多分ね。SSS は、平たく言うと、できあがった絵をボカす処理。だもんで、Specular もボケてしまい、汗の表現の大半は喪失してしまう。

     シェーディングのイロハのイも分かってない俺だけど、よくよく考えればこの仕様は妥当な線だ。
     だって、金属を表現する際には、金属の地の色を表す Albedo マップと、金属の光沢を表す Specular マップを用意するんだ。Material や Shader って、そういうものだ。
     なのに、肌を表す Albedo マップと汗を表す Specular マップを用意してどうこうしようってのは、無理な相談だ。肌と汗、違う材質のものを一緒の Material で表現しちゃいけない。肌の Albedo と一緒に適用できるのは、肌表面+皮下組織のテカリだ。ってことでしょう? きっと。

    ■じゃあ別個の Material で表現しよう

     ものすごく単純な解決。SkinnedMeshRenderer に Materials を2つ与えて、ひとつを Opaque で SSS な肌、もうひとつを Transparent で Specular な汗にすればいい。後者は、Alpha をゼロにしてしまえば、Specular だけが塗られる。
     合ってるかどうか知りませんよ。今回のコレ以外のケースだと ZTest とかまずいと思いますよ。けど何にせよこれで、俺の求めた絵は出ます。

    強度も設定可能にしておく。4倍だぁー

    はいきたやらちい

    夏だ!(終わったとこやがな)

    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。