見出し画像

SDF Face ShadowマッピングをBlender4.0.2に導入した手順

ことの始まり・・
それは(略


SDFマスク生成用テクスチャ作成

SDFマスクを作成するためには・・
光源の角度ごとで合計9枚のマスク画像が必要とのこと・・
つまり、180÷8=22.5度ごとのマスク画像ですね。

180、157.5、135、112.5、90、67.5、45、22.5、0度・・
このうち、180度は全て影にするので今回は不要・・
従って合計8枚のマスクが必要になります。

参考動画では0度のマスクを省略されていたのですが・・
私は追加で作成しました・・
その場合、後ほど記載の方法で・・
SDFマスク生成ツールの設定を変更します。

まず、Blenderで画像を作成して〝アタリ〟取りです。

SDFマスク生成用テクスチャ作成の前準備

対称を有効にし、なるべく綺麗な線を引くため・・
ブラシ設定の〝Stabilize Stroke〟を使いました。

あとはひたすらアンドゥリドゥ♪ですね・・
ちなみに・・
ここで綺麗な線を引く必要はありません。

アタリを取り終わったら、画像を外部保存して・・
Export UV LayoutでUV配置画像を出力して・・
それらを下絵にマスク画像を作るというわけです。

今回、マスク画像の作成にはGIMPを使いました。

GIMPでのマスク画像作成

この度、使わせて頂くSDFマスク生成ツールの仕様により・・
8bit以下の画像である必要があります。

私はGIMPで一旦BMPで保存したのち・・
かれこれ15年以上の相棒〝JTrim〟で一括変換したのです☻

SDFマスク生成用画像

SDFマスク生成ツールの導入

下記動画の概要欄にDLリンクがあります。
※Googleドライブ

DL時点では〝a〟~〝g.png〟を読み込む設定ですが・・
0度のマスクが欲しいので〝h.png〟を追記しました。

〝run.bat〟と〝run.py〟ファイルをメモ帳的なソフトで開き・・
該当部分を以下のように編集します。

rem 〝run.bat〟

--name="a.png b.png c.png d.png e.png f.png g.png h.png"
# 〝run.py〟 ※g.pngのあとに空白が必要です。

imageNames += "g.png "
imageNames += "h.png"

〝sdf_tool〟の〝images〟ディレクトリに・・
〝a〟~〝h.png〟ファイルを入れて・・
〝run.bat〟を実行すれば・・
SDFマスクである〝sdf.png〟が出来上がります☻

このマスク画像を閾値でコントロールする事により・・
スムーズな影の移り変わりを実現するわけですね・・

Blenderのマテリアルで実装

以下、NPRシェーダーに組み込んだ実装例・・
ドライバに関する設定は割愛させて頂きます。

尚、この実装では参考動画と同じく・・
光源のZ軸のみ対応しております。
(場面によって切り替えることを想定)

SDFマテリアルの実装例
SDFマテリアルの実装例(NPRシェーダ内)

参考


この記事が気に入ったらサポートをしてみませんか?