古いテレビをSubstance Painterで3Dペイント

  • by

前回Shade3D上で、古いテレビのUV割り当てとマスターサーフェス割り当てを行いました。
これをfbx形式でエクスポートしてSubstance Painterに持って行きます。
ここではSubstance Painter 2018を使用しました。バージョンによっては操作が異なる場合があります。

Shade3Dからfbxエクスポート

Shade3Dでは、マスターサーフェスとしてマテリアルを与えました。
fbx形式でエクスポートします。

この段階で「ポリゴンメッシュのUV」と「マスターサーフェス名」がしっかり決められている必要があります。
3Dペイントに持って行くため、
それぞれの面が重ならないようにUV展開されていること、
マスターサーフェス名は他のものと同じ名前のものが重複していないことを確認します。
なお、Substance PainterではShade3Dで言う「マスターサーフェス」ごとにテクスチャを描画するツールになります。
マテリアルを参照するポリゴンメッシュが複数ある場合は、それらのポリゴンメッシュの面がUV展開したときに重ならない配置となっている必要があります。

出力対象以外の形状(オブジェクト光源など)はブラウザで非表示/非レンダリングにしておきます。

メインメニューの「ファイル」-「エクスポート」-「fbx」を選択します。
FBXエクスポートダイアログボックスでは以下の設定にしています。

FBXフォーマットのバージョンはデフォルトの「FBX 2012」にしておきます。
※ FBXのバージョンによっては正しく読み込めないツールもあります。バージョンが高いほどよいとは限りません。

各種オプションは以下の指定にしました。
注意する点を赤く囲んでいます。

「ジオメトリ」タブの「面の頂点の法線を出力」をオンにします。
Shade3Dでの法線はポリゴンメッシュが持つ「限界角度」で自動計算されますが、このスムージングの角度が存在するかはツールによって異なります。
形状を渡す際は、面ごとの法線ベクトルを与えるのが最も確実になります。
ツールによっては、面の法線が存在しない場合は面が真っ黒になってしまう場合があります。

「表面材質」タブの「イメージをFBXファイルに埋込み」チェックボックスをオフにします。
これでテクスチャイメージを割り当てている場合はfbxファイルと分離して出力されます。
FBXフォーマットで渡せるマテリアル情報は非常に簡素なため、マテリアルはできるだけ出力先のツール側で与えるようにします。
もしFBXファイルにイメージが埋め込まれていると、読み込みツール側でその都度イメージのインポートが発生して、処理時間の低下につながる場合があります。
Shade3Dでfbxを出力する際、他ツールでマテリアルを調整する際は、Shade3D上でマテリアル(表面材質)でマッピングのイメージを与えないのが効率がよさそうです。

「アニメーション」タブで、このテレビはアニメーション情報はないため何もしなくて問題ありません。
「出力対象」タブのすべてのチェックボックスをオフにします。
形状以外は出力しません。
「old_tv.fbx」というファイル名にしました。
いったんShade3Dを閉じて、Substance Painterを起動します。

Substance Painterでfbxファイルを読み込む

ここではSubtance Painter 2018を使用しました。
メインメニューの「File」-「New」を選択します。
New Projectダイアログボックスの「File」の「Select」ボタンを選択し、「old_tv.fbx」を指定します。

以下のように読み込まれました。

右端の「TEXTURE SET LIST」タブにShade3Dで指定したマスターサーフェス名が列挙されます。

テクスチャのベイク処理

まずはじめに、AO(Ambient Occlusion)や法線(World Space Normal)などをテクスチャにベイクする処理を実行します。
これは、これから行う3Dペイント処理の自動化で必要な処理になります。
AOのほか、自動で汚れを付ける際などで使用します。

「TEXTURE SET SETTINGS」タブの「Bake Mesh Maps」ボタンを押します。
Bakingダイアログボックスの一番下の「Bake all texture sets」ボタンを選択します。

この後計算が行われます。しばらくすると、3DのビューでAOが適用されます。

次に、「TEXTURE SET LIST」タブのそれぞれの要素ごとに3Dペイントしていきます。

背景のパネル (back_board)

背景のパネルを3Dペイントします。
これはコルクのような質感にしました。
「LAYERS」タブでレイヤに分けて3Dペイントしていくことになります。
Fill Layerを追加し、SHELFのMaterialsでそれっぽいのを探して割り当てます。
Fill Layerは指定のマテリアルで塗るレイヤとなります。
Leather bagあたりがそれらしいでしょうか。

Propertiesで色を明るめの茶色に変更しました。

本体の木の部分 (body_wood)

本体の木の部分を3Dペイントします。
Fill Layerを追加し、SHELFのMaterialsで「Wood Walnut」を指定しました。

木目のスケールを調整します。
Propertiesで「Scale」のロックを解除し、値を変更します。

こんな感じになりました。

汚しをSmart Materialでつける

汚れをわずかに付けることにしました。
レイヤに「Smart Material」を追加します。
「Dirt」を指定しました。


そのままだと汚れが強いため、レイヤとしての影響を弱くします。
BaseColor/Metallic/Roughness/Normal/Heightを切り替えて、それぞれの値を小さく調整していきました。

以下のように控えめな汚れとなりました。

背面パネルの金具 (back_tomegu)

このマテリアルはテクスチャを使わない予定なのでそのままでもOKですが、雰囲気として金属っぽさを出しておきました。
Fill Layerを追加し、SHELFのMaterialsで「Steel rough」を指定しました。
また、Propertiesで「Steel Color」を若干暗くしました。

側面の穴 (side_hole)

側面の穴は薄汚れたプラスチックの感じにしてます。
Fill Layerを追加し、SHELFのMaterialsで「Plastic Matte Pure」を指定。
Propertiesで「Base Color」を灰色にしました。


レイヤに「Smart Material」の「Dirt」を指定して調整しました。

足 (leg)

足は、2つの質感を1枚のテクスチャに割り当てます。そのために「マスク」を使いました。
Fill Layerを追加します。

レイヤを右クリックしてポップアップメニューで「Add black mask」を選択します。

レイヤのマスクの部分を選択し、左端のToolsより「Polygon Fill」を選択。

UVビューで、ペイントの影響を与える面をドラッグで矩形選択します。
これで、選択された面のみがこのレイヤの描画対象となりました。

レイヤのペイント部を選択。

SHELFのMaterialsで「Steel Rust and Wear」を指定しました。
マスクされた部分がペイントされました。

今度は足先をペイントします。
Fill Layerを追加し、同様にblack maskを追加します。
レイヤのマスク部を選択、UVビューで下半分を範囲選択し、マスク対象とします。

レイヤのペイント部を選択。
SHELFのMaterialsで「Gold pure」を指定しました。
PropertiesでBase Colorを少し暗く調整。
これでマスクされた部分がペイントされました。

レイヤに「Smart Material」の「Dirt」を指定して調整しました。

長くなったので、いったんここで区切ります。
今回は、以下のマテリアルを3Dペイントしました。

  • back_board
  • back_tomegu
  • body_wood
  • side_hole
  • leg

次回、続きを3Dペイントしていきます。