[Shade3D] DOKI for Shade3DとPBRマテリアルの指定

  • by

古いテレビのモデリング(Shade3Dを使用)と、テクスチャの作成(Substance Painterを使用)まで進みました。
次は、Shade3Dにテクスチャを読み込んで形状として完成させ、レンダリングします。
Shade3D ver.19までのマテリアル(マスターサーフェス)やver.20からの「Shade3Dマテリアル」はPBRマテリアルには対応していません。
ver.20 Pro版以降はPBRマテリアルも指定できるようになりました。
今回はこれは説明せず、「DOKI for Shade3D」( http://www.ft-lab.ne.jp/shade3d/DOKI/ )を使用したレンダリングについて書いていきます。

Shade3D Standard ver.17.1.0、
DOKI for Shade3D ver.1.1.1.0、を使用しました。

DOKI for Shade3D

「DOKI for Shade3D」はIntel社のOSPRay( https://www.ospray.org/ )を使用したレンダラプラグインです。
プラグイン自身はBOOTHで公開しています。

https://ft-lab.booth.pm/items/2363063

これはShade3D ver.14以降のStandard/Professional版で動作します(64bit版のみ)。
「SSE4.1以上がサポートされているCPU」がハードウェアの動作条件です。
そのため、Intel CPUやほとんどのAMDのCPUには対応しています。
GPUを使用しないレンダラですが、高速に高品質なレンダリングができるのが特徴です。
インストールや起動方法は「 http://www.ft-lab.ne.jp/shade3d/DOKI/2_installandrun/ 」をご確認くださいませ。

まずは、「[Shade3D] 古いテレビでUVを割り当てる 2」の段階の古いテレビをShade3Dに読み込み、DOKI for Shde3Dでレンダリングしてみます。

背景を割り当て

Shade Explorerより、背景を読み込みました。

金属などの映り込みが発生するマテリアルを指定している場合は、背景の割り当てがないとリアルにはなりません。

面光源を割り当て

無限遠光源は無効にします。
「明るさ」を0にしました。
また、シーンに面光源を2つ配置しました。

無限遠光源を1つ使用するのでも問題ないのですが、室内の場合は面光源を使用するほうがよりリアルになります。

色補正ウィンドウでガンマ2.2にする

色補正ウィンドウでガンマの値を2.2にします。

これは、リニアワークフローでよりリアルな色合いにするために必要な指定になります。

レンダリング設定で「手法」を「DOKI」にする

レンダリング設定で、「手法」で「DOKI」を選択します。
表示されていない場合は「 http://www.ft-lab.ne.jp/shade3d/DOKI/2_installandrun/ 」の内容を読み、
正しくDOKIプラグインおよびOSPRayがインストールされており、OSPRayのファイルへのパスを追加してShade3Dを起動しているか確認してください。

レンダリングする

レンダリングすると、以下のようになりました。

これはOSPRayのパストレーシングのレンダリングになります。
色補正ウィンドウでガンマ2.2にしただけで、レンダリングはリニアワークフローで行われます。
まだマテリアルは仮のため、次にマテリアルを調整していきます。

Shade3Dの標準レンダリングとの速度比較

Shade3Dの標準レンダリング(パストレーシング+パストレーシング)とDOKIとのレンダリング速度を比較してみます。

レンダリング環境は以下になります。
結構古い4コアのIntel CPUです。

OS : Windows 10
Mem : 16 GB
CPU : 4 x Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz
Shade3D : Shade3D Standard ver.17.1.0

初期設定の状態で「手法」を「パストレーシング」、「大域照明」を「パストレーシング」でレンダリングしました。
以下がレンダリング結果です。拡散反射色はリニアワークフローに対応していないため、白寄りになっています。

レンダリング時間は「41秒」でした。

次に「手法」を「DOKI」に切り替えてレンダリング。
レンダリング結果は前述のとおりで以下のようになります。

レンダリング時間は「7秒」でした。

マテリアルを割り当てる

テクスチャイメージを読み込み

Substance Painterで出力したテクスチャ(glTF出力したもの)をShade3Dに読み込みます。
テクスチャは、1マテリアルごとに3つのpngファイルで出力されていました。
ツールボックスの「作成」-「その他」-「イメージ」より、pngファイルを読み込んでいきます。
1マテリアルに対して「xxx_baseColor.png」「xxx_normal.png」「xxx_occlusionRoughnessMetallic.png」の3つのファイルを使用しています。
マスターサーフェス「back_tomegu」は背面の留め具でこれはテクスチャを指定しないため、テクスチャを読み込まなくてOKです。
以下のようにテクスチャを読み込みました。

マテリアルの調整

「body_wood」のマスターサーフェスのマテリアルを調整します。
ブラウザのマスターサーフェスパートで「body_wood」を選択。
DOKIのレンダラにおける「PBRマテリアル」の指定を行います。
表面材質ウィンドウの「情報」より「マテリアル情報 (DOKI)」を選択します。

マテリアル情報ダイアログボックスで「マテリアルの種類」を「PBRマテリアル」にします。

OKボタンを押して確定すると、ブラウザの「body_wood」の横に[DOKI : PBR]のラベルが付きます。
これで、DOKIのPBRマテリアルの指定が有効になります。
これは、表面材質ウィンドウの各パラメータをDOKI用に使用する指定になります。
PBRマテリアルの情報(色、値、テクスチャなど)をそのまま渡すと、PBRマテリアルとしてレンダリングに反映されるモードになります。
すべてのマスターサーフェスに対して、同様の指定を行うようにしてください。

表面材質の「基本設定」「効果設定」で扱うパラメータは以下の赤く囲った部分になります。
「PBRマテリアル」時は、他は使用されません。

Shade3Dでの項目名 OSPRayでの項目名 説明
拡散反射 ベースカラー 材質の色そのもの
テクスチャを指定可能
反射 メタリック 映り込み成分
テクスチャを指定可能
透明 透明 (Transmission) 1.0に近づくほど透明になる
テクスチャを指定可能
屈折 屈折 屈折率 1.0 ~
荒さ ラフネス 表面のざらつきの強さ
テクスチャを指定可能

Substance Painterで出力したglTF用のテクスチャを使用する場合、
「拡散反射」の値 1.0、白色、
「反射」の値 1.0(色情報は参照されません)、
「荒さ」の値 1.0、
とし、テクスチャマッピングを「乗算」合成します。
もし「反射」(メタリック)が0と分かっている場合は、「反射」の値を0.0として、マッピングの「反射」は指定しない状態で問題ありません。
また、「屈折」を1.5としました。
PBRマテリアルでは屈折は非常に大事です。透明でない場合の金属のような表現でも屈折を使用します。
「屈折」が1.0のままだと、ハイライト的な光沢表現はほとんどでなくなります。

マッピングでは以下を指定しました。

  • イメージ/拡散反射
  • イメージ/法線
  • イメージ/反射
  • イメージ/荒さ

順番は前後しても問題ありません。

「イメージ/拡散反射」はxxx_baseColor.pngのテクスチャを割り当て、「乗算」合成。
「適用率」を1.0としました。

暗くしたい場合は、基本設定の拡散反射値のスライダを調整するのがよさそうです。

「イメージ/法線」はxxx_normal.pngのテクスチャを割り当て、「通常」合成。
「適用率」を1.0としました。

もし、凸凹を弱める/強める場合は、「適用率」の値を調整してください。

「イメージ/反射」は、xxx_occlusionRoughnessMetallic.pngのテクスチャを割り当て、「乗算」合成。
「適用率」を1.0としました。
また、「チャンネル合成」を「グレイスケール(B)」とします。
これは、RGBAのうちB成分を参照する指定になります。

基本設定の「反射」のスライダを下げると反射が弱くなることになります。

「イメージ/荒さ」は、xxx_occlusionRoughnessMetallic.pngのテクスチャを割り当て、「乗算」合成。
「適用率」を1.0としました。
また、「チャンネル合成」を「グレイスケール(G)」とします。
これは、RGBAのうちG成分を参照する指定になります。

効果設定の「荒さ」のスライダを下げると荒さが弱くなり、わずかに映り込みが出てくることになります。

なお、「オクルージョン」がxxx_occlusionRoughnessMetallic.pngのRチャンネルに存在しますが、
パストレーシングレンダリングでは不要なため指定しません。
※ OSPRayではオクルージョンマップの指定がありません。

この指定を、すべてのマスターサーフェスに対して行うようにします。

背景パネルの留め具のマスターサーフェス「back_tomegu」については、テクスチャを使用せずに以下の指定を行いました。

拡散反射 0.77、白色、
反射 1.0、
透明 0.0、
屈折 1.5、
荒さ 0.17。

スクリーンのガラス部の「screen_glass」は半透明要素が入ります。
これは、拡散反射マッピング時のチャンネル合成で「アルファ透明」を指定しました。

「screen_glass_baseColor.png」のベースカラーテクスチャは、RGBA成分のAで不透明(Opacity)を持ちます。

これでマテリアルの指定が完了しました。

レンダリング

DOKIでレンダリングします。
以下のようにレンダリングされました。レンダリング時間は9秒。
640 x 480ピクセルのレンダリングです。

ガラス部に映り込みを入れるために、背景ウィンドウの「方向」を調整しました。

以下のようにレンダリングされました。レンダリング時間は10秒。

ズームしてレンダリングしてみました。レンダリング時間は11秒。

後ろはこんな感じ。レンダリング時間は6秒。

ラフネス(荒さ)によるモヤモヤもいい感じに出ています。
反射要素がたくさん入ってるのに、レンダリング時間がテクスチャを貼る前とさほど変わってないのを確認できます。

Shade3D標準の「パストレーシング+パストレーシング」でレンダリングすると、同じPC環境で87秒かかりました。
反射と拡散反射の関係はPBRマテリアルとは異なるためそのままではレンダリング比較できませんが、
この段階で8倍ほどの速度差になっています。
間接照明が充満した部屋の場合は、もっと差がつきます。
この速度だと、いくらでもトライ&エラーでレンダリングして確認できそうですね。

今回はここまでです。
次回、地面を付けたりテレビに文字の装飾を追加していきます。