Blenderで作成したモデルにSubstancePainterを使ってみました

女の子モデリング修行のBlenderで作成したモデルのテクスチャーを作成するのに、以前からずっと気になっていたSubstancePainterを使ってみようと思い立ちました。
※画像はクリックで拡大できます
SubstancePainterを使おうと思った理由
モデルをUV展開してそれに合わせてテクスチャーを書いて作成していくというのは、UV展開を上手く行うための知識と経験が必要でしょうし、クオリティの高いテクスチャーを作成するには絵心が必要となると考えています。
残念ながら、自分にはその両方が全く備わっておりません(涙
SubstancePainterは何やら3Dモデルに直接リアルタイムで色をペイントできたり、肌や布地等の質感もペイントする事ができたりするようなので、一から自前で作成するよりも効率的にモデル用テクスチャーを作成できるのではと考えました。
そういう訳で、 SubstancePainterに救いを求めてみたいと思います。
SubstancePainterの導入

早速SubstancePainterをダウンロードできるAllegorithmic社のページに行きます。
30日間無料版がダウンロード出来たので、使ってみて欲しくなったら買う事としました。
ダウンロードが完了したので早速インストールしました。早速起動します!

のっけから何やら警告表示が出てしまいました(汗
とりあえず上から解決していきたいと思います。
DRIVER ISSUE
グラボのドライバが古いため、予想外の挙動とクラッシュが発生するかもしれない!という警告でした。グラボのドライバーが古いとは・・・・教えてくれて有難う!早速更新してきました。
TDR ISSUE
こちらの内容は、TDR(Timeout Detection Recover)の値が低すぎる、といった事らしいのですが、WindowsOSはGPUの処理でこのTDRで指定されている秒以上の処理時間が掛かった場合は、GPUドライバを強制的にキルしてしまうそうです。
その時にSubstancePainterも終了してしまうそうなので、 このTDRの値を60秒、もしくは余裕を持って120秒に変更すれば良いようです。
レジストリを書き換える必要があるので、Windows7を使ってる自分は「プログラムとファイルの検索」に「regedit.exe」と入力してregedit.exeを実行します。
regedit.exeを起動したら、「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers」を探してクリックします。右側に「TdrDelay」と「TdrDdiDelay」という二つのキーがあるらしいのですが・・・・

TdrDelayとTdrDdiDelayの二つのキーは自分の環境にはありませんでした。
無い場合は作れば良いらしいので、右側で右クリックして「新規→DWORD(32ビット)値(D)」を選択してTdrDelayとTdrDdiDelayを作成追加します。
TdrDelayとTdrDdiDelayをそれぞれ右クリックして「修正」を選択、表記を「10進数」にして「値のデータ」を120にします。

PCを再起動後、再びSubstancePainterを実行してみます。

今度は警告表示も出ずに、SubstancePainterを起動する事ができました!
Activation wizardというライセンス認証のウィンドウが出ましたが、30日無料体験と言う事で、ここでは「Evaluate this product」を選択してAllegorithmicのページで登録したアカウントとパスワードを入力、トライアルのライセンス選択といった感じでどんどんNextボタンを押して行きました。
SubstancePainterにモデルをインポートしてみる
いきなり前回作成したキャラクターモデルで作業するのもなんだか不安なので、Blenderで簡単なコップのモデルを作成しました。

ちなみにコップ本体と取っ手は別オブジェクトになっております。SubstancePainterにインポートした際にどういった状態になるのか試すためです。

SubstancePainterにインポートする前に、モデルのUV展開をしておく必要があるみたいなのですが、複数のオブジェクトを一枚のテクスチャにUV展開する場合はUVが重ならないようにしなければならないようです。
Blenderの標準搭載アドオン、「Texture Atlas」を使う事で複数のオブジェクトのUV展開を重ならないように行えるようですので、これを使ってUV展開しておきます。早速BlenderのアドオンTexture Atlasを有効にします。

アドオンを有効化すると、プロパティエディター中カメラマークのアイコン「レンダー」の一番下にTexture Atlasが追加されるので、テクスチャーをまとめたいオブジェクトを全て選択した状態で「+」を押し、グループを作成します。

グループを作成したら、「AddSelected」で選択中オブジェクトをグループに割り当て、「StartManualUnwrap」を押して選択中のオブジェクトを全て統合した状態のオブジェクト(自分の場合はcupGroup_mergedObject)が生成されるので、それをUV展開します。自分は「スマートUV投影」の「島の余白」を0.01にしてUV展開しました。

統合されたオブジェクトのUV展開が重なっていない事が確認できたので、「FinishManualUnwrap」を押します。これで重ならないUV展開ができました。
このままエクスポートしてSubstance Painterに持っていきたい所ですが、一点確認する所がありました。それはプロパティエディタの「オブジェクトデータ」を選択して各オブジェクトの「UVマップ」を見てみると、統合オブジェクトのUV展開より前のUVマップ情報が入っている場合がある事です。

UVマップに複数設定されていると、Substance Painterで正しく認識されずに二つのUVマップが重なった状態になってしまいます。その状態で塗ったりするとおかしな事になったので統合前のUVマップは削除します。
UVマップを一つにしたら、モデルをfbx形式でエクスポートします。fbxエクスポートの設定は下記画像のようにしました。
SubstancePainterを起動し、「ファイル」→「新規プロジェクト」を選択します。プロジェクト作成ウィンドウが出てくるので、「選択」ボタンを押してblenderでエクスポートしたfbxファイルを選択します。他の設定は下記画像の通りです。
OKボタンを押して見ると、作成したコップのモデルと、複数オブジェクトの統合されたUVマップが無事表示されました!

とりあえず軽く触ってみる
Substance Painterの導入とモデルのインポートで長くなってしまいましたので、今回は軽く触って次回から色々試したいと思います・・・・(汗
とりあえずSubstance Painterには「Smart materials」というマテリアル達が用意されており、それを適用するだけでも劇的に見た目が変わります。
レイヤの所に「Add a smart material」というアイコンがあるので、それを押して好きなスマートマテリアルを適用できます。



スマートマテリアルとマテリアルは、まだまだ沢山あるので付け替えてるだけで楽しい・・・・。
パっと作ったコップのモデルが、スマートマテリアル変えるだけで様々な変化を遂げていくのに正直感動しました(涙
ディスカッション
コメント一覧
初めてコメントさせて頂きます。投稿記事参考にさせて頂き、ありがとうございます。本記事のうちの「更新」の方法が分かっておりません。(当方グラボ: GTX970/PCIe/SSE2)教えて頂きたく、どうぞよろしくお願いします。
SHELF内のMaterials等の表示がされず黒いままなのは、このせいでしょうか。お時間ある時に、返答いただきたく、よろしくおい願いします。