FC2ブログ

DS4でのShader Mixer その2:シェーダーツリーの作成

Category : Shader Mixer
DAZ Studio用のツリー型シェーダー作成ツール『Shader Mixer』を改めてご紹介する記事の第2回は、実際にシェーダーツリーを組み立てていく流れを追っていきたいと思います。

今回はサンプルとしてAmbient Occlusion(アンビエント・オクルージョン:AO)を発生させるマテリアルシェーダーを作成します。AOはUberEnvironment2ライトなどでご存知の通り、非常にソフトな影が得られる機能です。私は以前からDSでAOのレンダリング画像だけを取り出せないかなあと思っていました。Carraraなどのマルチパスレンダリングを実装しているレンダラーなら可能なのですが、DS4にはそれがありません。そこで今回は、AOだけがレンダリングされるようにマテリアルシェーダーを作成してみます。

ShaderMixer4B SS

※プロパティの内部名の設定方法について追記しました(11)。また、Tilingプロパティの現在値の変更について追記しました(13)。(2012.7.27)


■AOマテリアルシェーダーを作成する

ではさっそくShader Mixerタブを開いて、シェーダーを1から作ってみましょう。

 (1)新規シェーダーを作成します。
タブメニューFile > New Shader を実行すると、
ShaderMixer4 AOマテリアルの作成 新規シェーダーメニュー

シェーダーのタイプと名前を尋ねるダイアログが出現します。
ShaderMixer4 AOマテリアルの作成 新規シェーダーダイアログ
タイプは「Material」で名前は「generateAO」と付けました。

シェーダーのタイプはMaterial、Camera、Lightから選べ、Materialはオブジェクトのサーフェイスに作用するシェーダーを作成することができます。

マテリアルワークスペースにシェーダー名のタブができました。MaterialタイプのみSurface、DS Default Materialという2つのブリックがあらかじめ配置された状態になります。
ShaderMixer4 AOマテリアルの作成 工程1

プロパティページを見ると既にDiffuse、Specular、Ambient、Opacityなどのプロパティが存在することがわかります。

Cameraタイプの場合は何もブリックが無くてもカメラの基本機能(Cameraプロパティグループ)は動作します。Lightタイプの場合は作成したいライトの種類に対応するルートブリックを配置することから始めて下さい。

 (2)Ambient Occlusionブリックを配置します。
ブリックヤードで Bricks (Default)>Functions>Lighting>Shadows を開き、Ambient Occlusionをマテリアルワークスペースへドラッグ&ドロップして下さい。
ShaderMixer4 AOマテリアルの作成 工程2
Ambient OcclusionブリックはAOを発生させるためのブリックです。

配置されたブリックは、その順番がブリックタイトルの末尾に(3)のように付加されますが、画面写真と番号が違っていても気にする必要はありません。
マテリアルワークスペース上で右クリックして出るメニューからも、ブリックを配置することができます。

 (3)ブリックを空いたスペースに移動します。
ブリックの上辺をドラッグすることで、そのブリックを移動することができます。Ambient OcclusionブリックをDS Default Materialブリックの右へ移動して下さい。
ShaderMixer4 AOマテリアルの作成 工程3

 (4)Ambient OcclusionブリックのOcclusionチャンネルとDS Default MaterialブリックのAmbient Colorチャンネルを接続します。
一方のコネクタをドラッグして他方のコネクタ上でドロップして下さい。
ShaderMixer4 AOマテリアルの作成 工程4

この操作によって、このシェーダーにはAmbient Colorというプロパティは無くなり、代わりにAmbient Occlusionブリックで処理されたパラメーターがAmbient Colorとして使用されることになります。

 (5)Image Mapブリックを配置します。
髪などの抜きのテクスチャを使う場合も考え、Opacityにテクスチャが使用できるようにブリックを追加します。
ブリックヤードで Bricks (Default)>Functions>Textures を開き、Image MapをマテリアルワークスペースのDS Default Materialブリックの右の空いたスペースへドラッグ&ドロップして下さい。
ShaderMixer4 AOマテリアルの作成 工程5
Image Mapブリックは画像ファイルをテクスチャマップとして入力するためのブリックです。

 (6)Image MapブリックのImage ColorチャンネルとDS Default MaterialブリックのAmbient Colorチャンネルを接続します。同時に、Image MapブリックのTypeをFloatに変更しておいて下さい。
ShaderMixer4 AOマテリアルの作成 工程6
Typeという設定はたくさんのブリックで使用されます。この設定によって処理するパラメーターの型などが変わります。このブリックのTypeを変更したのは、DAZ Studio Default Shaderと同じようにするためです。

 (7)Tilerブリックを配置します。
Image Mapブリックを使う場合はTilerブリックもセットで使うと考えておいて良いでしょう。
ブリックヤードで Bricks (Default)>Functions>Textures を開き、TilerをマテリアルワークスペースのImage Mapブリックの右へドラッグ&ドロップして下さい。
ShaderMixer4 AOマテリアルの作成 工程7
Tilerブリックはテクスチャマップの繰り返しを設定するためのブリックです。

 (8)Image Mapブリックの上級プロパティを表示させます。
TilerブリックとImage Mapブリックを接続するためには、Image Mapブリックの上級プロパティを表示する必要があります。
Image Mapブリックのコンテキストメニューを開き、「Show Advanced」にチェックを入れて下さい。
ShaderMixer4 AOマテリアルの作成 上級パラメーター表示
SとTというラベルのコネクタが表示されました。これらはテクスチャ座標を表すアルファベットで、ブリックによって表示される上級プロパティは違います。

 (9)Image MapブリックのSチャンネルとTilerブリックのTiled Sチャンネルを接続します。Tチャンネルも同じようにTiled Tチャンネルと接続して下さい。
ShaderMixer4 AOマテリアルの作成 工程8

以上でブリックの組み立ては終了です。

 (10)Imageプロパティのラベルを変更します。
ここからはSurfacesタブでのマテリアル調整がし易いように、細かい部分を修正していきます。
左のペインをPropertiesページに切り替え、作成したシェーダーのプロパティを見てみます。
ShaderMixer4 AOマテリアルの作成 プロパティ確認
追加したブリックのプロパティは、ブリックタイトルでグループが作成され分類されていることがわかります。

ShaderMixer4 AOマテリアルの作成 プロパティ変更前

このImageというプロパティ、このままでは何の調整ができるのか全くわかりません。
まずはプロパティ名を変更しましょう。それには名前の右にある歯車アイコンをクリックして出現するメニューからParameter Settingsを実行して下さい。
ShaderMixer4 AOマテリアルの作成 パラメーター設定メニュー

Parametersタブなどと同じようにParameter Settingsウィンドウが出現しますので、ここでそのプロパティのラベルや値、上限下限などを設定することができます。
Image MapブリックはOpacity Colorに接続していますので、DAZ Studio Default Shaderの名前にならってNameを「Opacity Strength」に、その他の値も下の画像の通りに設定して下さい。
ShaderMixer4 AOマテリアルの作成 パラメーター設定ウィンドウ
※画像ではSensitivityが100%になってしまっていますが、1%が正しいです。

ブリック上のラベルをダブルクリックすることでも、Parameter Settingsウィンドウを呼び出すことができます。ブリックがたくさんある場合は、こちらの方が良いと思われます。

 (11)Opacity Strengthプロパティの内部名をOpacity Strengthに変更します。
先ほど変更した表示名(ラベル)とは別に、各プロパティには内部名(Internal Name)が存在します。これを適切に設定することで、テクスチャや色がビューポートの表示に反映されるようにできます。
そのためにはプロパティ名を右クリックして出現するメニューから「Edit Property Name」を実行して下さい。
ShaderMixer4 AOマテリアルの作成 プロパティ内部名の変更

Property Nameウィンドウが出現しますので、入力欄右にある下向き▼ボタンをクリックして出現するメニューから「Opacity Strength」を選択して下さい。
ShaderMixer4 AOマテリアルの作成 プロパティ内部名設定ダイアログ

内部名の変更は「Diffuse Color」や「Bump Strength」などの、メニューにある代表的なもののみ設定すれば良いと思われます。ブリックのTypeを変更すると内部名も書き換わるので、ビューポートを確認しつつ過不足無く設定するように心がけて下さい。

 (12)Opacity StrengthプロパティのグループをOpacityグループへ変更します。
プロパティグループを既存のものやわかりやすいものに変更し、複数のプロパティをまとめるのも重要です。
そのためにはプロパティ名を右クリックして出現するメニューから「Edit Property Group」を実行して下さい。
ShaderMixer4 AOマテリアルの作成 プロパティグループ編集メニュー

Property Groupウィンドウが出現しますので、「/Opacity」に変更して下さい。先頭の「/」は必須です(/は階層の区切りを表します)。
ShaderMixer4 AOマテリアルの作成 プロパティグループ設定ダイアログ

これで、不透明度を設定するためのプロパティだとすぐにわかるようになりました。
ShaderMixer4 AOマテリアルの作成 プロパティ変更後

また、Opacity Strengthに適用したテクスチャが、プレビューに反映されるようになりました。

 (13)Tiler (5)グループに属するプロパティをTilingグループへ変更します。
グループ名の直接変更はできないので、グループに属する全てのプロパティをProperty Groupウィンドウで一つずつ「/Tiling」グループに変更していきます。既にシェーダーに存在するグループは入力欄右の▼ボタンから呼び出すことができますので、うまく使って下さい。

 (14)シェーダーの各プロパティの現在値を変更します。
作成したシェーダーを適用した時に設定されるパラメーターを変更しておきます。適当な値をここで設定しておけば、後からSurfacesタブで設定しなおす必要が少なくなります。
左ペインのプロパティからでも、右ペインのブリック上からでもパラメーターの変更が可能です。
DS Default MaterialブリックのSpecular Strengthを0%に、Ambient OcclusionブリックのMax Distanceを100に変更しておきます。
ShaderMixer4 AOマテリアルの作成 現在値の変更

同時に、TilerブリックのHorizontal TilesおよびVertical Tilesを1にしておきます(繰り返しの回数)。
ShaderMixer4 AOマテリアルの作成 現在値の変更2

 (15)シェーダーを保存します。
タブメニューFile > Save Shader を実行し、適当なフォルダにシェーダーを保存します。名前はシェーダー名そのままで良いでしょう。
ShaderMixer4 AOマテリアルの作成 シェーダー保存メニュー

以上でシェーダーの作成は完了です。作成したシェーダーツリーは次の画像のようになっているはずです。
ShaderMixer4 レシピ generateAO

今回は一つ一つ順番に解説していきましたが、慣れれば上の画像だけでシェーダーを作成できるようになります。


■generateAOの効果とプロパティ

作成したシェーダーをシーン内のオブジェクトに適用して、その効果を確かめてみましょう。
例として、次のようなシーンを作成しました。
ShaderMixer4 AO球 ノーマル

平面(Plane)の上に球(Sphere)が乗っているだけの、単純なシーンです。

Surfacesタブで適用したいサーフェイスを選択(全て)し、Shader Mixerタブの右下の緑色の「Apply」ボタンをクリックします。
Surfacesタブの左上に表示されているシェーダー名が作成したシェーダーの名前に変わったら、適用成功です。
ShaderMixer4 Surfacesタブ シェーダー名

このシェーダーを使用するに当たって、必要な前準備が3つあります。

 ・ライトを1灯配置し、それを非表示にする。
ShaderMixer4 AOレンダ 前準備1

 ・Background Colorを白にする。
ShaderMixer4 AOレンダ 前準備2

 ・半透明テクスチャを使っていたサーフェイス(髪やまつげなど)は、Opacity Strengthに元のテクスチャを張り直す。

上の設定をしたのち、レンダリングしてみました。
ShaderMixer4 AO球 AOデフォルト

このように、AOだけが描画されます。このシェーダーを適用した時点でオブジェクトに張られた全てのテクスチャは剥がされます。それに照明が無い状態でのレンダリングですので、純粋にAOだけを描き出すことができます。Planeを置けばShadow Catcher用のシェーダーいらずですしね。

このシェーダーのAOに関するプロパティを解説しておきます。
AOの描画はレンダリングコストが高いので、それに影響するプロパティにも言及しておきました。
ShaderMixer4 Surfaces generateAO
・StrengthAOの強さ。ただし下げるとアンビエントの黒色が出てきてしまうので、1固定。
・Max Distance遮蔽物となる対象への最大距離(cm)。簡単な例で言うと、Max Distance100の時、幅が1m以内の廊下は真っ暗。値が小さいほどレンダリング時間は減少する。
・Cone Angle同一メッシュ上でAOが発生する最大角度(谷の角度)。値が大きいほどレンダリング時間は増加する。
・SamplesAOのサンプリング値。値が大きいほどノイズが少なく、レンダリング時間が増加する(影響大)。
・Bias遮蔽物と判定する最小距離。-1はおそらく常にオンの状態。

シーンのスケール、部屋の大きさなどによってMax Distanceを調節し、本番レンダリングでSamplesを上げる(128~)という調整になると思います。AOを描画したくないサーフェイスはMax Distanceを0にして下さい(ただし、そのサーフェイスが他のサーフェイスの遮蔽物となるのは避けられません)。
サーフェイスごとにAOの品質を変更できますので、髪などの半透明テクスチャを使ったサーフェイスや背景オブジェクトにはSamplesを小さくしてレンダリング時間を削減するということも可能です。

例のシーンをSamplesを256に上げてレンダリングすると次のようになります。
ShaderMixer4 AO球 Samples256

また、ガンマ補正(Render SettingsタブのGamma)を適切に設定してレンダリングすると、AOのグラデーションがとても滑らかに描画されます。
ShaderMixer4 AO球 ガンマ補正

今回このようにShader Mixerを使ってAOを描画するシェーダーを作ってみましたが、まだまだ改良の余地はあります。さらにブリックを追加すれば次の画像のように角度のついたAOを描画できるようになったりします。
ShaderMixer4 AO球 志向性あり

他にもAOの色を変更できるようにしたり、ディスプレイスメントを使ったマテリアルにも対応させたり、ブリックの組み方次第でもっと良いシェーダーになります。いろいろといじってみてください。


■シェーダープリセットとしての保存

Shader Mixerタブのメニューから保存したシェーダーファイルは、Shader MixerタブのメニューからOpen>Applyで適用(またはCreate)という流れで使用することしかできませんし、Content Libraryタブから参照することもできません。

このままでは不便なので、シェーダープリセットとして保存しておきましょう。
Surfacesタブで作成したシェーダーが適用されたサーフェイスを選択し、メインメニューFile > Save As > Shader Preset を実行します(マテリアルシェーダーの場合です)。

これでコンテンツディレクトリの適当な場所へ保存しておけば、次からは他のシェーダープリセットなどと同じようにContent Libraryタブからオブジェクトのサーフェイスに適用することができるようになります。

Shader Mixerで作成したマテリアルをプリセットとして使う場合、次のような不具合が出ました。

 ・適用時のオプションでテクスチャ無視ができない。
 ・適用直後にアンドゥをすると、既に適用済みのサーフェイスのマテリアルが変になることがある。

もちろん、フィギュアの複数のサーフェイスに複数のシェーダーを適用した状態で、マテリアルプリセットを保存することも可能です。


■generateAOを使った作例

私がこのシェーダーを作成したのは、マルチパスレンダリングのようにAOのみレンダリングできたら良いなと思ったのがきっかけです。なので、通常のレンダリング画像にポストワークで合成することを想定しています。
いくつかのシーンを次の条件でレンダリングし、それをフォトレタッチソフトで合成しました。

 (A)メリハリの無いライティングでのレンダリング
 (B)AOのみレンダリング
 (C)(A)に(B)を乗算で合成(+色調整)

ShaderMixer4 BEOリーパー 通常レンダShaderMixer4 BEOリーパー AOレンダShaderMixer4 BEOリーパー 合成
Character:BEO Reaper

アーマーのミゾにAOの影ができ、ギュッと締まった印象になりました。

ShaderMixer4 V5 通常レンダ
ShaderMixer4 V5 AOレンダ
ShaderMixer4 V5 合成
Character:Victoria 5

床面や人の関節の内側などにソフトな影が追加され、現実感が増しました。

ShaderMixer4 LOS 通常レンダ
ShaderMixer4 LOS AOレンダ
ShaderMixer4 LOS 合成
Environment:Legend Of The Stone Keeper

壁面のレンガや道具などの陰影が強調され、立体感が増しています。
※この製品にはライトセットが付属していますが、今回それは使っていません。



今回の画像の素材はこちら

BEO Reaper

Victoria 5

Legend Of The Stone Keeper




Comment

非公開コメント

著書
カレンダー
09 | 2019/10 | 11
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
検索フォーム
プロフィール

Kotozone

Author:Kotozone
製品の取扱説明書を読むのが大好きです

FC2ブックマーク
最新記事
カテゴリ
タグリスト

DSプラグイン V4 ライト マテリアル DSシェーダ DS基本 セール Genesis IBL アニメーション タブ解説 iray LuxRender ダイナミッククロス スクリプト Genesis2 ShaderMixer セットアップ バージョンアップ Download レタッチ カスタマイズ トゥーン SSS Photoshop ウェイトマップ NGM ファー 物理シミュレーション ERC D-Form Miki2 IDL 大気 M4 カラーコレクション ボリューム Hexagon Terrain パーティクル Genesis3 モーフセット Genesis8 V5 カメラ アナグリフ インスタンス GIMP 3Dプリント ロボット RAMDisk SLG ダイナミックヘア K4 V8 Python モーションキャプチャ Linux 日本語訳 

最新コメント
リンク
月別アーカイブ
ご意見ご感想はこちらに

名前:
メール: 
件名:
本文: 

ブロとも申請フォーム

この人とブロともになる

最新トラックバック
FC2カウンター