ラベル SubStance Painter の投稿を表示しています。 すべての投稿を表示
ラベル SubStance Painter の投稿を表示しています。 すべての投稿を表示

2016年8月30日火曜日

Polygon Fill ~ SubStance Painter


SubStance Painterの Polygon Fill機能と Quick Mask機能で簡単にメッシュ面を塗る方法。

こんな感じのものを塗ってみます。




メッシュのエッジ線を境目にちょっと塗りたい時に便利です。

■環境

SubStance Painter2.3.0

OS: Windows10pro バージョン1607(Build 14393.82)
CPU: i7-6700K
MEM: 32GB
GPU: GeForce GTX960(4GB)

※Polygon Fill機能、Quick Mask機能はVer1.xでも同じだと思います。


■モデル

Blenderで適当に作った以下のモデルを使って作業していきます。
OBJ形式で出力しておきます。





■新規プロジェクト作成

SubStance Painter2.2を起動。
CTRL+Nで新規プロジェクト作成ダイアログを開く。
Mesh の Selectボタンから先のOBJファイルを選択。
他の欄も以下のように設定し OK で進む。



以下のような感じになります。
ここで最初からある LayersウィンドウのLayer1は削除しておきます。


File>Save as... で適当なファイル名で保存しておきます。



■作業

ベースのマテリアルを設定

  1. Fill Layerを作成(Fill Layer 1)。
  2. 作成したFill Layerを選択。
  3. Materialsウィンドウから、Plastic Glossy Pure を選択。
以下のようにモデル全体が青のマテリアルで塗りつぶされます。



Quick Mask、Polygon Fill で塗る色の準備


前項と同じ要領で Fill layer を追加(Fill Layer 2)、マテリアルに SciFi PVC Plasticを設定。

Fill Layer 2上で右クリック>Add black mask。
マスクに何も描かれていない為この時点でモデルには Fill layer 1が反映されます。


Quick Mask、Polygon Fill で塗る

Fill layer 2のマテリアルで塗っていきます。

  1. Fill layer 2の black mask の四角をクリックして選択状態にします。
  2. 左上のツールアイコンから、Polygon Fill アイコンをクリックして有効にします。
  3. すると3D Viewのモデルにメッシュのエッジ線が見えるようになります。 
  4. さらにProperties - Polygon Fillウィンドウの Polygon Fillアイコンをクリックして有効にします。


  1. 塗る際はProperties - Polygon FillウィンドウColorスライダをめいっぱい右に寄せて1.0にします。(逆に消す時は左に寄せて0.0にして使う)

  2. 右クリック+ALTでだいたい真横からみえる位置に回転、さらにSHIFTも押下すると視点が正確に真横にスナップします。右クリック+ALT+SHIFTで視点角度が90度単位でスナップ)。
  3. 3D view上でTキーを押すと「Using quick mask」と表示されます。

    モデルの中央のみを選択するようにマウスでクリック&ドラッグで四角く囲います。
    囲ったメッシュ面がblack maskに自動的に書き込まれ、Fill layer 2のマテリアルが適用されます。
  4. このとき奥のメッシュも全て囲い対象になってしまう為、4隅のポールも一部選択されてしまいます。
    Properties - Polygon FillウィンドウColorスライダをめいっぱい左に寄せて0.0にします。
    4隅ポールの塗られてしまった部分をマウスドラッグで横長の四角で囲います。




最終的に以下のように目的のメッシュ面のみに Fill layer 2を適用できる black maskが出来上がります。




この要領で、

  • Fill layer + black mask
  • Polygon Fill
  • Quick mask
を使うとSubStance Painter上の作業だけで任意のメッシュ面のみにマテリアルを適用できます。


ちょっと塗りたい&メッシュ面境界で良い場合は便利です。



以下、他も塗った状態。



塗り絵感覚なのが簡単で良いですね。


Unityにインポートするとこんな感じ。














2016年8月28日日曜日

SubStance Painter2.2で表示される [GPUIssuesCheck] The current TDR~ を解決する

SubStance Painter2.2を起動すると以下のようなログが流れる場合があります。



指定のURLからallegorithmicのサイトに行けば解決方法(英語)が書かれていますが、レジストリを直接書き換える必要があります。
(製品ソフト使用でいきなりレジストリ書き換えというのは少々敷居が高い気もします・・・)



■環境について

OS: Windows10pro バージョン1607(Build 14393.82)
CPU: i7-6700
MEM: 32GB
GPU: GeForce GTX960(4GB)


■何が起きているのか?

以下問題のログメッセージ

[GPUIssueCheck] The current TDR (GPU hang recovery) delay is low 2s.
See http://support.allegorithmic.com/documentation/display/SPDOC/GPU+drivers+crash+with+long+computations


このTDRTimeout Detection and Recovery の略です。

GPUドライバ側でGPUがハングアップしたと判断する時間値(タイムアウト値)が2秒を示しています。
GPUが何らかの原因(熱や故障など)で一定時間以上応答しない時ハングアップしたと判断しGPUにリセット(?)をかけるようです。

この判定時間=タイムアウト値が2秒になってるということです。

そしてSubStance Painter2.2にとって2秒では「タイムアウト値が短すぎるかもしれない」とログでレポートしているわけです。



SubStancePainter2.2はGPUコア(GPGPU的な利用?)を活用しているようで、大きなテクスチャを扱う等の際に、その処理に時間がかかることがあるようです。
(特にテクスチャExport時に長時間GPUを使用するようです)

その際先のTDR値の2秒を超えると、ドライバ側でGPUがハングアップしたと検知されてしまい、処理が中断してしまうようです。

つまりこのTDR値を適切な値に設定しすれば良いということになります。
(ちなみに2秒はドライバ内デフォルト値)


■適切なTDR値は?


ちなみにこのTDR値を0にするとハングアップ検出がされなくなります。
これは本当にGPUがハングアップした際にOSを抱き込んで固まる危険性があります。
その場合PCのリセットボタンか電源をOFFにするしかなくなるので少々リスキーです。

しかしどれくらいに設定すれば良いかの推奨値は先の公式ページにも特に書かれていません。
極論どれくらいの処理をさせるか=作業をするかに依存しそうです。

ひとつの目安としてテクスチャサイズが関係しているようです。
ちなみに巨大なテクスチャで(4k?8k?以上とか)あまりに複雑なことをやるとGPUメモリが3~4GBでも不足するといった事態もあるらしいです。
(そもそもExportができないらしい?)

フォーラム(海外)などの情報では60~240~480などといった数値が散見されます。

まずは30か60程度に指定しておき、作業中にExportがうまくいかない等の状況が発生したら120、240~等に増やしていけば良いかもしれません。



■レジストリ書き換え作業

まず概要ですが、

  • タイムアウト値の設定箇所(キー)は2つあります。
    • TdrDelay
      GPUスケジューラからのGPU処理中断(タイムアウト)されるまでの猶予時間。単位は秒。デフォルト2秒。
      この値秒以上GPUの応答が無いとGPUがハングアップとみなされる。
      今回はTdrDelay値120に設定してみます。
    • TdrDdiDelay
      OSのスレッド処理がGPUドライバ処理中断を判断する時間。単位は秒。デフォルト5秒。
      今回はTdrDelay値125に設定してみます。※TdrDelay<TdrDdiDelayとなっているようなので、TdrDelayより少し長い程度に設定してみます。どうせGPUハングを検出したらアプリ側で長い間待っていても意味がない気がするので。
  • この2つのキーは初期状態では存在していないかもしれません
    その際はキーを作ります。
    データは DWORD です。
    (キーが存在していない場合はデフォルト値が使用されます)




以下書き換え作業手順。
  1. スタートメニュー右クリック>ファイル名を指定して実行 欄で regedit と入力してENTERキー押し。
    「このアプリがデバイスに変更を加えることを許可しますか」のダイアログでは「はい」を選択。
    レジストリエディタを起動。
  2. レジストリエディタ画面左のツリーで以下を辿り右画面に表示させます。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers
  3. TdrDelayが無い場合は作成します(ある場合は次へ進む)
    右画面の空白部分で右クリック>新規(N)>DWORD(32ビット)値(D)
    作成した行の上で、右クリック>名前の変更 でTdrDelay に変更。
  4. TdrDelayの行の上で右クリック>修正。
    「表記」で「10進数(D)」をクリック。
    値のデータ(V)で120と入力します。
  5. TdrDdiDelay についても同じ要領でキーが無ければ作成し、名前変更、値の修正をします。
  6. レジストリエディタを終了し、PCを再起動します。
 これで書き換え作業完了です。

SubStancePainter2.2を起動して問題のログが表示されなければうまくいっています。




■参考サイト

msdn.micrfosoft.com: TDR Registry Keys









2015年4月8日水曜日

デカールを貼る ~ SubStance Painter

SubStance Painterで凹凸のある3Dモデルにデカールぽいものを貼ってみるメモ。


※他にもっとスマートな方法がありそうな気もしますが、とりあえずやってみたのでメモ。
※デカール = プラモデルなどで車のボンネットや戦闘機の翼などに貼ってあるマーク類。痛車ぽい絵を貼る際にも使えるかも。
※Blender上でも同様なことは一応できますが、SubStance Painterの方がいろいろと利便性が良い感じ。





環境

Windows7x64
SubStance Painter 1.3.3。
(モデルとマスクテクスチャ作成にBlender、PhotoShopを使用)

※作業中のデカール素材には『ユニティちゃんライセンス』で提供されるコンテンツを利用しています。


3Dモデルを用意

表面に凹凸があるモデルを用意(Blenderで適当に作ったもの)。
Obj形式でExportできれば他の3Dツールでも良いと思います。



□Blenderでモデルを作る場合のプチメモ:

先のモデルはBlender上では、
  • 色ごとに3つのObjectに分かれている(赤、青、緑)。

  • マテリアルは1つのみ作成。
    3つのObjectで1つのマテリアルを共用に設定。
     
  • UV配置も共存
    それぞれUV展開後、1枚のテクスチャ面積に収まるように各UVを配置。

こうしておくと SubStance Painter上では、
  • マテリアルは1つなので、1つのモデルのように塗れる。
    Particleでオイルなどを流した際に3つのObjectにまたがって流れてくれる。
    ※Blender上で各Object毎にマテリアルを個別に作ってしまうと別のマテリアル領域には流れない。
    デカールも貼りやすくなる(3つのObjectにまたがって同時に貼れるので)。

  • パーツごとの塗りには色選択マスクを使う。
    各Object毎の塗りは色選択マスクを使えば問題なし。
    (参考記事: 色選択マスク ~ SubStance Painter
    マスクは別途2Dソフトで作る必要有。
    BlenderからUVレイアウト(Object3つ分)を出力し2Dソフトで合成&着色するだけ。

  • SubStance Painter上での(3つのObject分の)作業結果も1枚のテクスチャ(法線/絵/光沢など各1枚)になる。
    ExportしてBlenderやUnityで貼る際にも楽。

ということで、Objectが複数あるモデルの場合はマテリアルを1つ(各Objectで共用)でExportすると楽な場合がありそうです。

色選択マスクのテクスチャ(UV)はこんな感じ。
※追記:左下1つだけ8角形に塗れてないのはミスです。
後から気付きましたが記事の本筋には支障がないのでそのまま( ゚∀゚;



SubStance Painterで準備

  1. 3Dモデルの読込。
    Obj形式でExport済みの3DモデルをSubStance Painterで読み込む。

  2. Fill Layerを3つ作成&各色選択マスク追加。
    各Fill LayerにAdd mssk with color selection で色選択マスクを追加。
    2Dソフトで作成済みの色選択マスクを読込む。
    3つのObjectに相当するパーツを色選択マスクで指定。
     
  3. 3つのパーツを適当に塗り塗り。
とりあえず適当にこんな感じに。


デカールを貼る


  1. デカール素材読込
  2. レイヤ追加
  3. ブラシ選択
  4. ブラシのマテリアルにデカール素材を指定



デカールを貼る面が正面にくるように3Dビューを調整。
※3Dビュー内で CTRL+SHIFT+マウス左ボタン押し状態で90度単位の回転を使うと楽。

ブラシ設定内で、アライメントをカメラに設定(重要ポイント)。
各~ジッタの数値を0にする。
Alphaを無し、他、貼る角度を変更など。

3Dビュー上で大きさを調整して左クリックで貼る。


貼り終わった状態。

独り言

SubStance Painterの入門者向け(?)な日本語情報が少ない気がします。

オンラインマニュアル(英語)も簡素な感じであまり詳細に触れてないような。

Youtubeの動画は情報源としてそれなりに有効なのですが英語ばかりですし。
(特に公式動画は早口過ぎっ)

3Dツール関係は必要な基礎知識量(?)が多そうなので、どこまで詳細に説明するかなど、いろいろ難しそうですね。

2015年3月26日木曜日

タイル床を作る~ SubStance Painter + Unity5

タイル床(?)らしきものを簡単に作ってみるメモ。



つくるモノの概要

  • 3Dモデルは単なる平たい四角形。
  • 左右の濃い色と中央とで質感を変えてみる。
  • タイル溝部分はノーマルマップで凹ます。 



    環境

    Windows7x64
    PhotoShop5.5。 ※png形式等で出力できればなんでも可。
    Blender2.73a(x64)。 ※Obj形式で出力できればなんでも可。
    SubStance Painter1.32。
    Unity5.0.0f4(x64)。


    モデリング


    Blenderで作業。
    OBJ形式で出力できれば3Dツールは何でも良いと思います。

    モデルはただのCubeを上下つぶして四角い板状にしただけです。

    UVは上面を床(?)として使う前提でテクスチャ全面に展開。
    (Blenderなら3D Viewで u>unwrap)。
    下面、横面はどうでも良いですが、一応下図では適当な位置にUVを配置。

    できたらOBJ形式でExport。
    Blenderだとモデルを選択状態にして File>Export>Wavefront(.obj) で以下のような感じに。

    マスクを描く

    SubStance Painter上での作業用にマスクを描きます。
    ※最終的なテクスチャは全てSubStance Painter上で生成します。
     ここで作成するマスクはその作業を補助するものです。
    今回はPhotoShopを使っていますが、GMP2でもなんでも良いです。
    pngかtgaあたりで出力できればなんでも可。

    一応最終的な完成イメージは以下のような感じとしました。


    これをSubStance Painter上で作るために、2つのマスクテクスチャを描きます。

    ■タイル溝マスクテクスチャ

    格子線でタイル溝を描きます。
    赤色に特に意味はないです(気分です)。

    ■床面マスクテクスチャ

    中央と左右で床の色を変える為のマスクを描きます。
    既に完成イメージの単色で塗ってありますが、マスクとしては何色でも構いません。
    ※PhotoShop上で色彩を決めたので、そのまま色がのっているだけです。 
    ここで色をのせておくと、SubStance Painter上でスポイドで色を拾えてちょっと便利。


    2つのマスクはpngかtga等で保存しておきます。

    テクスチャ作成

    SubStance Painter上で作業。

    ■新規プロジェクト作成

    File>New (又はCTRL+N)で新規プロジェクト作成ダイアログを開く。
    右上のSelectをクリックしてExport済みのObjファイルを選択。
    Addをクリックして保存済みのマスクテクスチャ2つを選択。
    ※CTRLを押しながらファイルを選ぶと複数選択可能。
    OKをクリックで進む。



    画面下部のShelfパネル内のTextureタブにマスクテクスチャ2つが追加されていることを確認。
    ※もし無ければ File>Import image で読み込む。
    右上のLayersパネル内のLayer1は使わないので、左クリックで選択、DELキー押しで削除する。


    ■左右濃緑部分のレイヤ作成

    【色選択マスク作成】

    Fill layer を追加&Add mask with color selectionでColor selectionを付与。
    参考: 色選択マスク ~ SubStance Painter

    ID Maskでインポート済みの床面マスクテクスチャを指定。
    Pick colorをクリックすると2D/3D画面内がマスクの色を拾うモードに変化します。
    そこで左右の濃い緑部分をクリック。2Dでも3D画面内どちらでも可。



    Fill Layer 1の文字のところでダブルクリックするとレイヤ名を変更できます。
    ここではわかりやすいように Side Line に変更してあります。


    【色をのせる】

    レイヤの左側をクリックして選択(Fill Layer)。
    Base Colorをクリック。


    ここで左右の濃い緑色を指定します。RGB値で入力しても良いのですが、ここではスポイトを使うと楽です。

    ポップアップしているカラーウィンドウ内にスポイトアイコンがあります。
    このスポイトアイコン上でマウスの左ボタンを押したままドラッグして拾いたい色のところで離します。
    読み込み済みのマスクに既に色がついているのでそこで離せば色が拾えます。


    これで左右の端をマスクにしてFill Layerの色が適用された状態になります。


    ■中央薄緑部分のレイヤ作成

    前項と要領は同じです。

    Fill layerを1つ追加してColor selectionで、
    ID Maskは前項と同じマスクテクスチャを指定。
    Pick colorは中央の薄い緑部分を指定。

    Base Colorは中央の薄い緑色を拾います。

    レイヤ名をCenterに変更しておきます。

    ■タイル溝部分のレイヤ作成

    要領は同じです。
    Fill layerを1つ追加してColor selectionで、
    ID Maskはタイル溝マスクテクスチャを指定(赤い色の方)。
    Pick colorは格子の黒い指定。細いのでズームして拾うと良いです。

    Base Colorは格子の部分が細すぎてスポイトでは難しいので、RGB各0値で黒にしておきます。

    レイヤ名をCross Lineに変更しておきます。

    ■質感調整

    【Side Lineレイヤ】

    Side Lineレイヤをクリックして選択。
    同レイヤの左側のアイコンをクリック(マスクではない方)。



    レイヤパネル下の Properties - Fill を見ます。
    その中にRoughnessやMetallicのスライドバーがあります。
    ここで質感を調整。
    • Roughness
      0に近い程反射。1に近い程反射しない。
    • Metallic:
      1に近い程金属らしい反射が強くなる。
      ただしRoughnessとの兼ね合いもある。鏡面反射的な要素はRoughnessが支配的。
      Roughness=0.0、Metallic=1.0 で最もきれいな鏡面反射に。
      Roughness=0.0、Metallic=0.0 にすると鏡面反射しつつやや表面が濁る質感に。
    今回は、Roughness=0.6程度、Metallic=0.2程度にしておきます。
    ※スライドバー上のMetallic文字上をクリックするとさらにDirt等のテクスチャを使ってMetallicの設定もできます。

    【Centerレイヤ】

    同じ要領でCenterレイヤも質感調整。

    Roughness=0.5程度、Metallic=0.1程度にしておきます。

    【Cross Lineレイヤ】

    同じ要領でCross Lineレイヤも質感調整。

    Roughness=0.3程度、Metallic=0.0程度にしておきます。

    溝を凹ましたいので、Heightのスライドバーを0にします。

    こんな感じになります。


    ■Export

    いよいよテクスチャ出力です。

    Unity5のShader=Standardで使う前提で出力します。


    File>Export all channnels (又はCTRL+SHIFT+E)でダイアログを開く。
    ここでは出力形式をpngとしていますがUnityで読めれば何でも良いと思います。
    Config行のプルダウンから Unity5(Standard Metallic) を選択。
    Exportします。
    ※出力先フォルダは上部に見えるパスをクリックで変更可能。

    ※ダイアログでは4ファイル見えていますが、実際の出力は3ファイル。

    Unityで使う

    Exportした3つのテクスチャファイルはそれぞれ、
    1. ~AlbedoTransparency.png
      絵テクスチャ。
    2. ~MetallicSmoothness.png
      メタリック用テクスチャ
    3. ~Normal.png
      ノーマルマップテクスチャ
    と、なっています。


    これらをUnity画面のAssetsにドラッグ&ドロップで放り込みます。
    Export済みモデルのObjファイルも同様にAssetsに放り込みます。

    モデルをシーンに配置。
    モデル内のdefaultを選択。
    Inspectorからマテリアル(defaultMat)を展開。

    Main Mapsの下で各テクスチャを設定。
    ノーマルマップは Fix Now の問い合わせが出てくるのでクリックする。



    こんな感じに


    ただの板きれモデルが、それっぽい感じに♪


    考察


    ブログで書くと非常に面倒ですが・・・マスクテクスチャのデザインさえ決まれば、実作業は1時間もかかりません。

    今回マテリアルは全てSubStance Painterで調整。

    SubStance PainterはちゃんとUnity5向けのExport設定が用意されているのが嬉しいです。

    光源の違いで若干の差はでるものの、実質ほぼSubStance Painter上で見たものがUnity5で再現できます。

    今回のタイルの溝のようなものは、SubStance Painter上のHeight設定で簡単にノーマルマップ化できるので楽です。

    SubStance Painter上でさらにウェザリングの類もかけられるので便利だと思います。
    (Dirtやオイル汚れ等々)

    思うにSubStance Painterのプリセットマテリアルの把握と調整加減が肝なので、そこの感覚をつかむまでに時間がかかりそうです。


    追記~Androidで使う

    Androidなどのスマホ/タブレット系で使う際、Unity5のシェーダーをMobileにしたい場合があると思います(軽くなるはず)。

    その場合は、
    • Mobile/Bumped Specular
    • Mobile/Bumped Specular (1 directional light)
    あたりを使うと思います。

    このシェーダーを使う際は絵テクスのRGBAが、

    RGB=Diffuse、A=Gloss

    となる為、SubStance PaiterでUnity5指定でExportすると合致しません。

    Unity4を指定してExportします。
    ※SubStance PainterのExportダイアログ、Configurationタブをまじまじ見るとわかりやすい。
     右下のconverted mapsの色アイコンとOutput mapsの色アイコンを見比べるとよくわかります。



    1. ~_DiffuseGlossiness.png
      Base(RGB) Gloss(A) のテクスチャに割り当てます。
    2. ~_DiffuseIllumination.png
      使いません。
    3. ~_Normal.png
      Normalmapに割り当てます。
    若干見え方が変わりますが、一応使える感じです。


    独り言

    モノによっては非常に楽ができそうです。
    (BlenderでArrayでタイル並べてローポリにベイクしてる場合ではなかった(笑;


    PopcornFXなんてのもちょっと気になりますね(ボソ


    2015年3月24日火曜日

    ホイール操作の反転/日本語化など ~ SubStance Painter1.32

    SubStance Painterが1.32になり気付いた点などメモ。


    1. マウスホイールのインバートに対応
    2. 日本語対応

    ツールバーメニューから Edit > Settings... で設定を開く。
    デフォルトは言語がEnglishになっているのでこれをJapaneseにする。

    Zoom/ホイール関連も inverse directionのチェックの有無で反転可能に。
    私的にマウスホイールの回転とズームが逆な感覚だったのでこれは助かります。



    一応「おおむね」日本語になりますが、全てではないです。
    (肝心のわかりにくい所とかは英語のままとか)

    一応日本語フォルダを使っても大丈夫そうには見えます。
    (が、多分使わない方が安心な気はします。なんとなく)


    おまけ・・・漢字こもごも

    マテリアル名に全角文字を使ったOBJデータをSubStance Painterに読み込ませた場合。

    GPUを抱き込んで死ぬという現象に遭遇。再現性100%。
    (SubStance Painter1.32)


    ※マテリアル名に全角文字など普通使わないとは思いますが・・・。

    例を挙げるとBlender上でインターナショナルフォント=日本語を選んだ「だけ」ならいいのですが、Translate欄で他も有効にした場合。

    新規マテリアル作成時にマテリアル名に自動で全角カタカナが入ります。
    一度これをやってしまうと半角に書き直してもダメなようです。


    ちなみにインターナショナルフォントを無効にすれば良いだろう、と思うわけですが。
    ここにも罠があります。

    無効にするとAuto Save時に不意にBlender(2.73a)が落ちることがあります。
    (※Auto Sava時なのでなぜ落ちたのか状況が非常にわかりにくい)

    Windows7のシステムではユーザーディレクトリ名に「ユーザー」と全角を使っているのが原因ではないかとなんとなく推察しています。
    一応半角によるエイリアス(?)のパスもあるはずなのですが・・・。













    2015年3月22日日曜日

    色選択マスク ~ SubStance Painter


    SubStance Painterで色選択マスクを使うメモ。

    グレイスケールのマスクではなく、単色カラーを指定してマスクに使う方法。

    1枚のカラーマスクで複数のマスクに使いまわせるのでちょっと便利。
    ※クロマキー抜きを1枚のテクスチャで単色x複数でできるような感じ(?)



    準備としてFill Layer を作成し、マスク対象の色をのせる。
    ここではBase Colorに赤色Metallicをのせてるが何でも良い。
    ※Metallicの加減の調整なども可。
    これでとりあえずオブジェクト全体が赤色メタリックになる。




    作成した Fill Layerの上で右クリック>Add mask with color selection で色選択マスクを作成。


    Fill Layer直下に Color selectionが付加されるのでクリックして選択。
    下部のColor Selection欄の ID Maskをクリック。


    マスク用テクスチャの選択候補がでてくる。
    ここでは予めインポートしておいたサイコロ絵のテクスチャを指定。これをマスクに使う。


    Pick colorをクリックするとマウスカーソルがスポイト状態になる。
    ここではサイコロの1の目の部分をクリックしてマスクで抜くように指定してみる。
    ※このサイコロ絵テクスチャの1の目は単色赤で塗ってある。 2~6目も単色青。
    ※追補:サイコロ絵テクスチャはモデルのUVに貼れる状態で展開済み。


     
    先に作成してあるFill Layerの赤色メタリックがマスク領域のみに適用される。



    今回はPick colorでサイコロの1の目=単色赤を指定したので、そこがマスクとなり Fill Layerの色&マテリアルがその領域のみに適用されている。

    さらに別途Fill Layerを作成してPick colorでサイコロの2~6の青部分を指定すればそこをマスクにできる。


    うまく単色マスクを複数のせたテクスチャなら1枚で複数のマスク領域を指定できるので便利そう。
    ※これはSubStance Painter同梱サンプルの Cymourai.spp でも使用しているので、そちらを見るとわかりやすいかもしれない。


    ワークフロー的には例えば、モデリング>UVレイアウトを2Dテクスチャで出力>2Dツールで部位別に単色で塗り(マスク)>部位ごとにSubStance Painterでマテリアル付与、みたいな感じもできる。

    2014年12月20日土曜日

    SubStance Painterを買ってみた

    STEAM で安かったので SubStance Painter を買ってみた。


    日本円で 4949円。


    昔STEAMでの支払いはUSDだったはず。
    ここ1年位?の間に請求額面が登録国リージョンの通貨になった様子(?)。


    以下、素人目線での雑感。

    ■試した動作環境


    Windows7x64
    Blender 2.72b x64
    Unity 4.6.0f3
    PC: CPU i3-2130 3.4GHz(Sandy Bridge) / RAM 16GB / HDD 5TB / SSD 128GB
    GPU: Geforce 550Ti



    ■購入前検討


    本家HP: allegorithmicSUBSTANCE PAINTER


    最初公式動画等を見た感じでは、ノーマルマップの作成に強そう?みたいな第一印象。

    とりあえずトライアル版が無料利用できるので試してみました。

    思うに購入前にはトライアル版での動作確認を強く推奨な気がします。

    • グラボの機能を積極的に使ってるらしい
      GPUとの相性がでやすいかもと推察。

    • グラボドライバをアップデートしろと警告がでる
      最新版ないしは、かなり最新寄りのドライバVerを具体的にコンソール画面で指定してきます。
      警告無視でも一応使えましたが。

    2014/12/19時点でnVidiaドライバパッケージ344.48以降を導入するように警告がでたのでアップデート。
    ちなみに最新は344.75ですがこの版は画面色調があからさまに変わってしまう問題が出たので344.48に戻しました。これはSubStanceだけでなくUnity他でも色変化するのでnVidiaのドライバの問題だと思います。





    ■SubStance Painter って何ができるの?


    最初 SubStande Designer と Painter の違いがよくわからず。

    Painterは「塗り」に特化みたいですね。Designerはノードとかいろいろ扱えるような感じ?

    インディーズパック(Designer等も同梱)も安いと思いましたがとりあえず Painter のみを購入。


    思うに肝は「マテリアル」ぽいですねこれ。

    さまざまな質感のマテリアルがプリセットされており、それを利用することで高品位な「塗り」ができる。
    (2Dだと Filter Forge をたまに使ってますが、さらに強力な3D版的な印象)



    ■使ってみた


    一応トライアル版でも出力ができないだけで機能は一通り使えます。
    しかしやはり実際出力して使ってみないと・・・ですね。


    私的環境においてとりあえず試行してみた感じを以下に。
    (一応3D系のこの手のツールは不慣れな為、最初結構とまどった)


    □ Blenderでモデリング

    練習用に2つのObjectで構成。
    1つのObjectは複数マテリアル割り当て
    (モデルは自作の適当なものなので見栄えが悪いですが気にしない方向で)





    □ Blenderでモデルをエクスポート

    OBJ形式が良いようです。
    SubStance Painter はFBXを読めませんでした。
    海外フォーラムなどでもFBXでは読めない、OBJが無難と言った書込も散見されます。


    □ SubStance Painter で Objファイルを読む

    File > New。開いたダイアログの右上のSelectでObjファイル指定。
    (なぜかこの開き方が最初わかりにくかった)。



    □ SubStance Painter で塗り塗り

    「なんとなく」わかる感じのGUI。ちょっとBlenderにも似てる。
    マテリアル選択、ブラシ選択、ブラシ強度等々。


    塗る際の面境界はBlender上で割り当てたマテリアル面単位(TextureSets)となっており、それを選択する画面が左にあります。


    □ SubStance Painter で エクスポート

    CTRL+SHIFT+Eでエクスポートのダイアログを開く。
    出力フォーマットなどを指定してテクスチャをエクスポート


    テクスチャ/ノーマルマップは各TextureSets単位(Blenderのマテリアル単位)で出力される。なのでこのままではUnity上で貼りにくい(マテリアルが多数あるので)。

    ここで1枚に合成したテクスチャ/ノーマルマップの出力方法がわからなかった(できない?)。出力できればそのままUnityに持っていけると思ったが・・・。
    やむなくBlender上で再度ベイクすることに。

    ※追記1: Unity4/5で使うなら素直に各エクスポートのプリセットを使う方が楽です。
    ※追記2: 色選択マスクを使うと、Blenderでモデリング>SubStance Painterでマテリアル付け>Unity持ち込みとワークフローがすっきりする感じ。 参考: 色選択マスク ~ SubStance Painter




    □ Blenderのマテリアルでテクスチャを設定

    テクスチャ、ノーマルマップを設定。
    スペキュラは今回未設定。
    各マテリアルにSubStance Painter出力のテクスチャ/ノーマルマップを設定。




    □ Blenderでテクスチャ、ノーマルマップをベイク&保存

    テクスチャ、ノーマルマップを各々1枚にベイク&保存。
    ノーマルマップのベイクをするとSubStance Painterとは少し異なる結果になる(再演算してる?。
    単純に1枚に合成できればいいのでテクスチャ扱いで合成すれば多分同じ結果でノーマルマップもベイクできそうな気がする。



    □ Unityでテクスチャ、ノーマルマップをインポート

    全く同じとまではいかないがUnity上でそれなりな感じで見える。
    (シェーダー次第でまた見え方も変わりそう?)







    作業フロー的には SubStance Painter はテクスチャ/ノーマルマップ/スペキュラ作成に特化した部分と考えれば良さそう。
    今までここはフォトショップやBlender上でプロシージャル・テクスチャやノードでやっていた部分なのでうまく併用すれば面白そう。


    ただ、複数マテリアルをテクスチャ1枚で出力はできないのかな?という点は気になる(要勉強?
    ひょっとするとソコは SubStance Designer 使ってクダサイなのか・・・。


    とりあえず Blender と併用でも充分使えそうなことは確認できた感じ。

    4949円なら良い買い物だった気はします。


    そしてSubStance Designerも気になる・・・(笑