glTFのテクスチャの構成

  • by

Substance Painter(2018)で作成したテクスチャをShade3Dに持って行きます。
今回は、glTFとしてのテクスチャはどのような内容になるかというのに内容を絞るようにしました。
Substance Painterでは以下のように3Dペイントしていました。

Substance PainterからはglTF形式で出力し、テクスチャをShade3Dに持って行くことになります。
なぜglTFかというと、glTFの場合はMetallic/Roughness/Occlusionテクスチャを1枚のpngイメージにパックするため、
Shade3Dでイメージ読み込みの手間を少し省けるから、という理由です。
(Shade3Dでのイメージ読み込みは1枚ずつしか読み込めないです)

Substance PainterでglTF出力

メインメニューの「File」-「Export Textures」を選択。
Export documentダイアログボックスでエクスポートする情報を指定します。

EXPORTタブの一番上のボタンを押し、出力先のフォルダを指定します。
Configでは「glTF PBR Metal Roughness」を選択することでglTFフォーマットで出力します。
Texture setsで出力するテクスチャを指定、テクスチャサイズを指定します。
デフォルトは1024 x 1024ピクセルですが、
全体に占めるサイズが小さく、それほど大きくなくてよいテクスチャは512 x 512や256 x 256にしました。
テレビの本体の木の部分(body_wood)と前面のパネル(front_panel)は重要なため、1024 x 1024ピクセルで出力しました。
Exportボタンを押すと、指定したフォルダにglTFに関連するファイルや画像が出力されます。

テクスチャはpngとして出力され、それ以外にテキスト形式のgltfファイル、glbファイル、binファイルが出力されます。
glbファイルは、bin/gltf/pngが同梱されたものになります。
glTFとしてはこの1つのファイルを用いればOKです。
今回の目的はテクスチャのみを使用するため、各種pngファイルを見ていきます。

glTFのテクスチャファイル

glTFとして出力したとき、
「マテリアル名_baseColor.png」のRGBがベースカラーのテクスチャ、Aが不透明度(Opacity)のテクスチャ。
「マテリアル名_normal.png」が法線マップのテクスチャ。
「マテリアル名_occlusionRoughnessMetallic.png」がオクルージョン(R)、ラフネス(G)、メタリック(B)をパックしたテクスチャとなります。
マテリアルごとにこの3つのファイルが出力されます。
(発光成分を持つ場合はEmissiveのテクスチャも出力される)

この3つのファイルは、以下のようなテクスチャ構成になります。

Unityの場合はPBRマテリアルに対応しているため、そのままテクスチャを渡してShader(もしくはShader Graph)としてマテリアルにマッピングすればOK。
Shade3Dの場合は、ver.19までのマテリアル(ver.20以降では「Shade3Dマテリアル」と呼ばれるもの)ではこのままでは使用できません。
Shade3D ver.20のPro版以降では「PBRマテリアル」が実装されているため、テクスチャを渡してそのまま対応できます。

次回は、PBRマテリアルに対応している「DOKI for Shade3D」( http://www.ft-lab.ne.jp/shade3d/DOKI/ )プラグインを使ってテレビの形状のマテリアルを調整していきます。
「DOKI for Shade3D」はIntel社の「OSPRay」というレンダラを使ったレンダラプラグインです。