マテリアルの指定

DOKIで使用されるOSPRayはPBRマテリアルとしてのマテリアル表現を行います。
Shade3Dの「Shade3Dマテリアル」(ver.19までの標準のマテリアルの種類)は、ある程度PBRマテリアルに似せるように変換されOSPRayのレンダリングに渡されます。
Shade3Dの表面材質の指定とOSPRayのマテリアルは違いがあるため、Shade3Dの標準レンダリングと同等の結果を再現できるというわけではありません。

PBRマテリアル

OSPRayでのマテリアルは、「PBRマテリアル」がベースになります。
PBRマテリアルの一般的な情報については「PBRマテリアル」をご参照くださいませ。

マテリアルの種類

マテリアルのパラメータは、表面材質ウィンドウの「情報」ポップアップメニューで「マテリアル情報 (DOKI)」を選択して表示されるダイアログボックスで指定します。
shade3d_ospray_material_02.png
「マテリアル情報」ダイアログボックスの「マテリアルの種類」では、以下の4つを選択できます。

マテリアルの種類 説明
Shade3D 表面材質ウィンドウのパラメータをPBRマテリアルにある程度近似して使用(デフォルト)
PBRマテリアル 表面材質ウィンドウのパラメータをPBRマテリアルとしてそのまま扱う
ガラス (Glass) 透明体専用のマテリアル。テクスチャマッピングは使用できません。
発光 (Luminous) 発光を行うマテリアル。テクスチャマッピングは使用できません。

従来のShade3Dのシーンを扱う場合は「Shade3D」を選択すると、DOKIのレンダリング時にShade3Dの標準レンダリングにある程度近似します。
完全一致ではない点に注意してください。
「Shade3D」「PBRマテリアル」のどちらを選択しても、マテリアル情報ダイアログボックスで追加指定できるパラメータは同じです。
「PBRマテリアル」を選択すると、表面材質の各パラメータを変換せずにそのままPBRマテリアルのパラメータとして使用します。
「ガラス (Glass)」は透明体専用のマテリアルです。
OSPRayでは形状自身が発光する表現は、「Luminous」のマテリアルを指定する必要があります。
「発光 (Luminous)」を選択すると、形状自身が発光するものとして扱われます。
このLuminousではテクスチャマッピングは使用できません。

「Shade3D」「PBRマテリアル」のどちらがよいかは、PBRマテリアルのほうが理解しやすいと思われるため「PBRマテリアル」の使用をお勧めします。

マテリアルの種類ごとに追加パラメータを指定できます。
追加パラメータについては「カスタムマテリアル設定」をご参照くださいませ。

OSPRayで使用できるマテリアルの種類

OSPRayでのマテリアルの各種パラメータについては、
https://www.ospray.org/documentation.html#materials
をご参照くださいませ (英語)。

Shade3Dのマテリアル情報の「Shade3D」「PBRマテリアル」使用時は、OSPRayの「Principled」を割り当てています。
これは、OSPRayのマテリアルとしてプラスチック、金属、木、ガラスなどあらゆる表現を行うことができます。
ただし、「Principled」は発光表現をサポートしていません。

Shade3Dのマテリアル情報の「ガラス (Glass)」使用時は、OSPRayの「Glass」(ThinがOffの場合)または「ThinGlass」(ThinがOnの場合)を割り当てています。

Shade3Dのマテリアル情報の「発光 (Luminous)」使用時は、OSPRayの「Luminous」を割り当てています。

マテリアルの種類 : Shade3D

マテリアルの種類で「Shade3D」を選択します。
Shade3Dの表面材質ウィンドウのパラメータとして、「拡散反射」「光沢1」「反射」「透明」「屈折」「荒さ」を参照します。
shade3d_ospray_material_01.png

「光沢1」の色、「反射」の色、は白のままにしておいてください。「光沢1」「反射」は内部的にはグレイスケール値として扱います。

拡散反射と反射

Shade3Dの標準のマテリアル(Shade3Dマテリアル)では、反射や透明値が大きい場合に拡散反射色を黒に近づけていく必要があります。
鏡のような鏡面反射を表現する場合、Shade3Dマテリアルでは「拡散反射」を0にし、「反射」を1.0にします。
shade3d_ospray_material_03.png

DOKIレンダラでマテリアルの種類を「Shade3D」としている場合、鏡面反射させるには「拡散反射色」を白に近づけ、「拡散反射値」を0.0に近づけるようにします。
DOKIでレンダリングすると以下のようになります。
shade3d_ospray_material_04.jpg

黒でかつ鏡面反射させる場合は、「拡散反射色」を黒に近づけ「拡散反射値」を0.0に近づけるようにします。
shade3d_ospray_material_05.png
DOKIでレンダリングすると以下のようになります。
shade3d_ospray_material_06.jpg

「反射」はPBRマテリアルでの「メタリック」に相当します。反射の強さを表します。
「反射」「光沢1」「荒さ」を考慮して「ラフネス」値が決定されます。ラフネスが大きい場合、表面がざらついた表現になります。
下画像は左が「荒さ」0.0、右が0.3の指定になります。
shade3d_ospray_material_07.jpg
ラフネスを完全に0にしたい場合は、「光沢1」を1.0「荒さ」を0.0にします。

屈折とラフネス

PBRマテリアルでは、金属のような反射でも「屈折」の値は重要です。
「屈折」が1.0、「荒さ(ラフネス)」が0.0の場合はハイライト表現ができません。
マテリアルの種類で「Shade3D」を選択しているときに「屈折」が1.0の場合は、内部的には1.5が自動で割り当てられます。

透明

透明体を表現する場合は、「拡散反射」の値を0.0に近づけ、透明を1.0に近づけます。
また、「反射」を与える場合はわずかに指定するようにします。
「反射」+「透明」の値は合計で1.0を超えないように調整します。
shade3d_ospray_material_08.png
ラフネスを0にするために、「光沢1」を1.0、「荒さ」を0.0にします。
DOKIでレンダリングすると以下のようになります。
shade3d_ospray_material_09.jpg

「荒さ」を0.2とすると、ラフネスがかかります。
shade3d_ospray_material_10.jpg

マテリアルの種類 : PBRマテリアル

マテリアルの種類として「PBRマテリアル」を選択した場合、表面材質ウィンドウの各パラメータをPBRマテリアルとして扱います。
Shade3Dの標準レンダラとは互換性がありません。そのため、表面材質のプレビューはDOKIのレンダリング結果とは異なります。

パラメータの役割については「PBRマテリアル」もご参照くださいませ。
「PBRマテリアル」時は表面材質ウィンドウのパラメータとして、「拡散反射」「反射」「透明」「屈折」「荒さ」を参照します。
shade3d_ospray_material_15.png

DOKIで使用しているOSPRayでのPBRマテリアルのパラメータとは1対1に対応しています。

Shade3Dでの項目名 OSPRayでの対応項目 説明
拡散反射 ベースカラー 物体色、アルベドとも呼ばれる
テクスチャを指定可能
反射 メタリック 反射の強さ
テクスチャを指定可能
透明 透明 (Transmission) 1.0に近づくほど透明になる
テクスチャを指定可能
屈折 屈折 屈折率 1.0 ~
荒さ ラフネス 表面のざらつきの強さ
テクスチャを指定可能

マッピングの指定

マッピングの指定は、イメージ指定で投影が「ラップ」(UVマップ)のものに対応しています。
マッピングでは、以下の赤い箇所が使用されます。
shade3d_ospray_material_11.png

使用できるマッピングの種類は以下になります。

パターン/種類 説明
イメージ/拡散反射 表面の基本色。
OSPRayでのBaseColorとして使用
イメージ/反射 映り込み。
OSPRayでのMetallicとして使用
イメージ/透明度 半透明/完全透明の表現。
OSPRayでのTransmissionとして使用
イメージ/マット 1つ上のレイヤのマッピングを参照して使用
イメージ/荒さ 表面のざらつき。
OSPRayでのRoughnessとして使用
イメージ/不透明マスク 不透明度のマスク。
OSPRayでのOpacityとして使用
イメージ/バンプ 凸凹の表現。
OSPRayでのNormalとして使用(内部的に法線マップに変換して使用)
イメージ/法線 凸凹の表現。
OSPRayでのNormalとして使用

「マテリアルの種類」が「Shade3D」の場合は、PBRマテリアルへの近似のため複数のテクスチャで変換処理が行われます。
たとえば、Shade3Dでの「荒さ」のマッピングは(1.0 - 荒さ)が適用されるため、PBRマテリアルに渡す場合は意味が逆になるため変換が必要となります。
「マテリアルの種類」が「PBRマテリアル」の場合は、テクスチャの種類ごとにそのままのテクスチャが渡されます。

マッピングで複数レイヤが存在する場合、DOKIに渡される際にマッピングの種類ごとに1枚のテクスチャにベイクされます。
ベイクとは、テクスチャごとに色反転や左右反転などの変換が行われたり複数枚のテクスチャを使用する際に1枚に合成してまとめる処理を指します。「焼き付ける」とも表現されます。
複数レイヤをベイクする際に反復回数が異なる場合は、テクスチャの種類別に繰り返しもベイクされ、反復は1 x 1となります。
そのため、テクスチャのピクセル精度が落ちることになります。
「反復」を指定する場合は、同じテクスチャの種類ごとにできるかぎり同じ反復回数を指定するようにしてください。

「色反転」「左右反転」「上下反転」「90度回転」チェックボックスがOnの場合は、テクスチャはベイクしてDOKIに渡されます。

テクスチャイメージに指定できるファイル

テクスチャイメージとしては、png/jpegなどのLDRI、hdr/exrのHDRIがありますが、いずれの場合もマテリアルとしてDOKIに渡す際はダイナミックレンジを使用しないLDRIとして渡されます。
また、動画テクスチャ(Windows環境はavi、Mac環境はmov)を指定することもできます。

メタリック(反射)とラフネス(荒さ)のマッピングについて

PBRマテリアルを指定する場合、金属などの表現ではメタリックとラフネスは重要な要素になり、
マッピングでテクスチャとして指定する場合も多いです。
メタリックは表面材質の「反射」、ラフネスは表面材質の「荒さ」で表現します。
このとき、マッピングとして反射を指定する場合は、基本設定の「反射」を1.0を指定し、マッピングでは「乗算」合成するようにします。
同様に、マッピングとして荒さを指定する場合は、基本設定の「荒さ」を1.0を指定し、マッピングでは「乗算」合成するようにします。
shade3d_ospray_material_metallic_roughness_value.jpg
OSPRayでは、メタリック/ラフネスともに値とテクスチャを別途指定することができます。
テクスチャ併用時に全体的に反射や荒さを下げていく場合は、基本設定のスライダで調整することになります。

透明体の表現

透明体の色は「透明色」で指定します。透過による光の減衰で色が表現されることになります。
shade3d_ospray_material_20.png

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

透明体の場合は、形状の厚みによる減衰距離の指定が必要となります。
また、透明体で薄い形状の場合は、別途指定が必要となります。これらについては「カスタムマテリアル設定」をご参照くださいませ。

透過ピクセルの表現

木の葉のように1枚のポリゴンに対してテクスチャを割り当てる場合、テクスチャをRGBAのpng形式としてAlpha値に不透明度を指定します。
このときチャンネルの合成モードを「アルファ透明」にすると、Alpha値が1.0の部分のピクセルは不透明に、0.0に近づくにつれて透明になります。
shade3d_ospray_material_12.png
レンダリングすると以下のようになります。
shade3d_ospray_material_13.jpg

Shade3D ver.16以降では「不透明マスク」のマッピングレイヤで同様の処理を行えます。
shade3d_ospray_material_14.png

合成で対応しているもの

表面材質のマッピングでの「合成」は、以下に対応しています。

  • 通常
  • 加算
  • 減算
  • 乗算
  • 比較(明)
  • 比較(暗)
  • 乗算(レガシー)

shade3d_ospray_material_blend_mode.png

チャンネル合成で対応しているもの

表面材質のマッピングでの「チャンネルの合成モード」は、以下に対応しています。

  • アルファ乗算済み
  • アルファ透明
  • グレイスケール(輝度)
  • グレイスケール(平均)
  • グレイスケール(R)
  • グレイスケール(G)
  • グレイスケール(B)
  • グレイスケール(A)

shade3d_ospray_material_channel_blend_mode.png

制限事項

  • イメージマッピングのみ使用できます。
  • 「投影」は「ラップ」(UVマッピング)のみ使用できます。
  • UVレイヤは1層のみ使用できます。常にUV1を参照します。
  • 頂点カラーは1層のみ使用できます。常に頂点カラー1を参照します。
    頂点カラーは頂点ごとに乗算されます。このとき「適用率」は反映されず、常に1.0として使用されます。
  • 複数のマッピングレイヤが存在する場合、テクスチャの種類ごとに1枚にベイクされます。