2015年12月13日日曜日

雑記:安価なテクスチャ生成ソフトやBlenderアドオンを買いました その2

その1に引き続いてBlenderアドオンの紹介です。紹介するアドオンはBake ToolとBlendUp、アドオンはここで購入しました。

BLENDER MARKET


Blender向けのモデルやマテリアル、アドオンを販売しているサイト。アドオンは動画で機能紹介されており、英語に自信がなくてもなんとなくわかる。また不具合対応や新機能追加などちょくちょくバージョンアップを行ってくれるアドオンも多め。

Bake Tool


$14.95(購入時¥1,873)で購入。Blenderレンダー/Cyclesでのテクスチャベイクの設定を楽にかつ、バッチ処理(あらかじめ設定した手順に従い自動的に連続処理を行うことで、ここでの意味は設定に従い複数マップのベイクを自動で行う処理)もやってくれるアドオン。
ちなみにベイクのバッチ処理だけなら公開されているスクリプトでできるらしいので、探してみるといい。

以下、このツールでのベイクの流れを解説する。
Blenderのバージョンは2.76b、Bake Toolは1.31。

インストール

インストールは他アドオンのインストール手順と変わらない。

Blender Marketからダウンロードしたファイルを解凍する。


ファイル→ユーザー設定→アドオンのタブを開き、下段の「ファイルからインストール」をクリック。


先ほど解凍したBake Toolのフォルダを開き、baketool.zipを選択してファイルからインストールを選択。


右側のチェックボックスにチェックを入れて左下のユーザー設定の保存をクリックする。


プロパティの「レンダー」タブをスクロールしてBake Toolの項目があればインストールは成功だ。

Blenderレンダーで単一のオブジェクトをBake Toolでベイクする手順


Blenderレンダーデフォルトのベイクの手順と同様、ベイク用のUVマップを追加し(わかりやすくBakeなどにリネームしておくとよい)、UV展開を済ませる。


ベイクするオブジェクトの全マテリアルのテクスチャのマッピングを設定する。「座標」をUVに、「マップ」はそれぞれのマテリアルに設定したUVを設定。
(ひとつ前の手順で追加したベイク用のUVマップを間違って設定しないように!)


プロパティの「レンダー」からBake Toolの項目へ移動し、Job Managerの下の追加をクリックしてJobを作成。


このモデルのような単一オブジェクトのベイクならば、オプションでモードを「個別」に設定する。(上の画像中ピンクで囲まれた箇所)
Save pathで保存先フォルダを設定。(再度同じマップをベイクする際、フォルダを変更しないと勝手に上書きされてしまうので注意)

Object Managerで書き出すオブジェクトを指定する。(上の画像中水色で囲まれた箇所)
ベイクしたいオブジェクトを選択して、スポイトのアイコンをクリックすればリストにオブジェクトを追加できる。オブジェクト名のすぐ隣の欄はベイクの書き出し先のUVだ。ここに、この手順で最初に追加したUV(Bake)を設定する。

Pass Managerで書き出すマップを設定する。(上の画像中黄色で囲まれた箇所)
追加のボタンを押すと、Pass 1 が追加される。Passはいくつでも追加できる。
オプションの項目で追加されたPassごとに書き出すマップのタイプやサイズ、余白が設定できる。ベイクタイプの種類はBlenderレンダーデフォルトのベイクと同一なので説明は省く。



Passの設定を終えたら、Bake Toolの項目の一番上にある、BAKE!を押すことでベイクが始まる。 

ひとまず試しに256×256程度の低解像度で比較的軽いディフューズだけベイクしてみることをおすすめする。というのも、一度ベイクを始めてしまうと一切Blenderの操作が出来ないためだ。
見切り発車で高解像度の複数Passのベイクを始めてしまうと痛い目を見る。(体験談)
そのため、BakeToolでのベイク前にファイルを保存することも忘れてはいけない。


上の画像が256×256でベイクした結果。ベイクが終わると、完成したマップが予め指定していたフォルダに保存される。指定していなくても、「F ジョブ名_オブジェクト名_ベイクタイプ」(例:F job 1_Mesh03_NORMALS)の名前で画像が保存されているので、その画像を開いて画像を別名保存しても良い。
きちんとベイクされることを確認したら、本番ベイク用のPassを設定していく。



2048×2048サイズのPassを5種類のベイクタイプで設定した。あとは就寝前や出勤・通学前にBAKE!を押すだけで勝手に作業をしてくれる。



ベイク中はウィンドウの左上に進捗が表示される。




書きだしたマップの一覧がこんな感じ。Blenderレンダーでのベイクなので、一晩もかからなかった。
(i7 6700Kで30分くらい)

BlenderレンダーでBakeToolを使用する場合、全マテリアルのテクスチャのマッピングを設定する手順が面倒だった。(Blenderレンダーデフォルトのベイクなら特に設定しなくてもベイクできてしまう)どちらかといえば、Cyclesでのベイク向きといえるかもしれない。

今回紹介できなかった機能もいくつかあり、一度にバッチ処理可能なのはオブジェクト一つだけでなく、Jobを追加して別のオブジェクトを指定しPassを設定すれば、別々のオブジェクトのそれぞれのベイクもやってくれる。
 私は使わないが、別々のオブジェクトのUVを一つのマップにまとめてベイクしてくれる機能もあり、使い方次第でかなり時間の節約になるアドオンだ。


機能紹介ビデオがこちら


BlendUp 

2018/2/18現在、BLENDER MARKETから削除されており、残念ながら入手不可能です。


$35.00(購入時¥4,418)で購入。SketchUp内のメニューからそのままBlenderへインポートできる。これは厳密に言えばSketchUpのプラグインだ。SketchUpで設定したマテリアルのテクスチャ、UV、エッジの設定、Ngonもかなり綺麗な状態でBlenderに読み込んでくれる。私はSketchUpのモデリングに慣れきってしまっているため、このようなアドオンはありがたい。

これについても似たアドオン(Sketchup importer)が公開されているのでこちらで代用しても良い。
機能制限版のBlendUpLTSketchUpでの面が1000以上だとコンバート不可) もあるので気になる方は試してみるといいだろう。

以下、コンバートの流れを解説する。SketchUpは2016、BlendUpのバージョンは1.3。

プラグインのインストール、Blender・SU側の設定の確認


Blender Marketからダウンロードしたファイルを解凍し、インストールされているSketchUpのバージョンに合ったインストールプログラムを起動する。



特にSketchUpのインストール先を確認されることもなく、すんなりインストールが終了する。うまくいかない場合は一時的にウイルス対策ソフトを切ったり、右クリックして「管理者として実行」 を試すといいだろう。


SketchUpを開く前に、Blender側の設定を見なおしておかないとならない。
ファイル→ユーザー設定→「システム」タブ→ ローカライズの項目(スクロールすると現れる、右下の項目)
Blenderを日本語化している方はここの項目を設定して日本語化していると思うが、ここで設定されている項目によってはアドオンが正常に動かないので要注意。

ここに「インターフェイス」、「ツールチップ」、「新規データ」の項目が並んでいるが、一番右の「新規データ」がオンになっている場合はオフにする。

「新規データ」は作成したオブジェクトやモディファイヤの名称を日本語にしてくれる項目だが、それらに日本語を使うと特にアドオンなんかは動いてくれないことがある。Sketchup importerや今回のBlendUpも正常に動いてくれず(SketchUpから書き出すとカメラと光源しか書き出されない)しばらく悩んだ末、危うくこんな事でBlendUpのサポートに連絡を取ってしまうところだった。

 
SketchUp2016を使用している場合、SU側でも設定が必要だ。ウィンドウ→環境設定の拡張設定の項目にある、Spread 3D BlendUpという項目にチェックを入れる。

SketchUpからのコンバート


準備が済んだら、早速SketchUpでコンバートをする。このモデルは面が8745ほど、マテリアルが29種類だが、コンバートはかなり高速なのでテスト用に適当な軽量モデルを用意しなくても問題ないはずだ。

コンバート用にモデルやマテリアルを修正する作業は必要ない。書き出してみておかしな部分があれば直す程度で済む。

 
コンバートはファイル→BlendUpの項目でできる。が、まずはコンバート先のBlenderのフォルダを設定してやる必要があるため、BlendUpのいずれかの項目を選択するとウィンドウが出てBlenderのフォルダを設定するよう催促される。(あとからOptionsのConfigureで再設定できる)

 
Optionsの項目はシンプルだ。

Unit / Metric(メーター)かImperial(フィート)から選択。Metricで問題ない。

Rendering / Blender Internal(Blenderレンダー)か Blender Cyclesを選べる。

Use Sun Shasows / オンにするとBlenderにサンを置いてくれるが、今のところ太陽高度は反映されず、デフォルトでサンを設置した時と同じように真上からの日照となっている。(アップデートで修正?)

Export as Quads and N-Gons / オンにすると三角ポリゴンか多角形ポリゴンで書き出される。.daeや.3dsでの書き出しは自動的に三角ポリゴンへ変換され、編集時の見栄えが悪いので、この項目にチェックを入れるとかなり綺麗な状態で書きだされ、三角ポリゴンの数も僅かに減る。

Export Scenes as Cameras / オンにすると、SU上のシーンでカメラの位置を登録している場合に限り、Blenderにカメラを書き出してくれる。個人的にはBlenderのカメラは正直使い勝手が悪い(3Dビューのビュー内「視点を揃える」で「現在の視点にカメラを揃える」を使っても若干見切れていて現在の視点通りになっていない)のでこの項目は重宝する。ただし、書きだしたカメラはクリッピングの終了距離が100m程度なのでBlender側で修正する必要がある。

Simplify Materials / SU上では表と裏でそれぞれマテリアルを設定できるが、この項目をオンにすると表面しか書き出さない。ただし、SU上で表面と裏面が統一されていないと、面が正しくレンダリングされないなどの不具合が発生する。

Mark Edges / SU上のエッジをBlenderの辺のシャープに変換してくれる。シャープは曲面上でエッジを尖らせたいときに使える。

Keep Hierarchy / オフにすると単一のメッシュとして読み込まれる。

Use Blender Groups / コンポーネントを持つ大きなファイルサイズのSUファイルをコンバートする際にこの項目にチェックをつければ、Blenderグループに変換され、各グループは特定のシーンに蓄えられる、とある。(英語力が無くて最後の行についてはよくわからなかった)

Configure / blender.exeがあるフォルダ指定する。


 
オプションの設定が済んだらついに書き出しだ。ファイル→BlendUp→Exportで保存先を設定するとコンバートの進行状況を示すコマンドプロンプトが表示され、数十秒もすれば勝手にBlenderが起動する。書き出し速度はSU内部エクスポーターのdae、3dsなどより格段に速い。

 
Blenderが起動するとほぼこんな画面なので面食らうが、 これはOptionsの項目でも触れたように、初期のカメラのクリッピング終了距離が100m程度なのでオブジェクトが描画されていないだけだ。
画面を移動すればモデルを見ることができる。


コンバート時点のシェーデングはソリッドになっている。


シェーディングをレンダーにするとこんな感じ。サンが設定されているので綺麗に表示されるが、サンが真上にある設定なので、影の落ち方には違和感がある。

 
編集モードで開いたところ
左がOptionsのExport as Quads and N-Gonsをオン、右がオフ。右は.3dsなどで書きだした場合とほぼ一緒だ。左の三角面が31,566、右が32,713とポリゴン数もやや削減される。


あとがき

このプラグインもかなり重宝しそうです。というか、SUプロ版(商用版118,000円)の機能のうちひとつがこのプラグインで代用できるので(Blenderに書き出してしまえば、各種フォーマットへの変換も容易)、少し心配になります。
(2018/2/18追記:不安が的中してしまったようです)

何はともあれ、これらのソフトウェア/アドオン・プラグインを導入してみて、かなり便利になったことは間違いないので、どれもオススメできます。代用可能なフリーウェアのリンクも貼っておいたので、そちらをつかうのもいいでしょう。最近は独立系開発会社が大手ソフトウェアの機能に遜色ないソフトウェアを比較的安価だったりフリーウェアで提供してくれるからありがたいです。そんな開発者を応援する意味でも、今後もそんないいモノを見つけたらここで紹介したいと思います。それでは!




2015年12月12日土曜日

雑記:安価なテクスチャ生成ソフトやBlenderアドオンを買いました その1

お久しぶりです。タイトルの通りですが、いろいろ購入したので簡単に紹介しようと思います。

MindTex

http://frozenflamecorp.com/site/pages.php?page=entryview&category=products&entryid=2
¥ 1,480でSteamに売っていたので購入。(Steamリンク、Steamではたまに値下げセールあり)
1枚のテクスチャ画像からノーマル、バンプ、反射、アンビエントオクルージョンを生成してくれる便利なソフト。生成した各種マップをBlenderのCyclesで設定しレンダリングした画像が以下のもの。(生成する元画像のチョイスが悪かったと後悔)


似たようなソフトではBitmap2Material 3CrazyBumpなどがあるが、どちらも1万円前後するため、似た機能を持ちながらこの値段は安価と言える。
どのソフトもトライアル版があり、Bitmap2Material 3は書き出し可能なマップ種類・機能が多く、CrazyBumpはシンプルでとっつきやすいがそのぶん割高感がある。
オープンソースソフトウェアでは、ノーマル、バンプ、反射、アンビエントオクルージョンに加え、グランジ(汚し)などを生成可能でBitmap2Material 3並の機能を持つAwesomeBumpというソフトもあるので、チュートリアルを頼りに習得してみるのもいいだろう。こちらは設定がやや難し目なソフトだ。

以下、撮影した壁面からGimpとMindTexで各種マップを作成する流れを載せてみる。例によってGIMPの基本操作的なことには触れていない。詳細なチュートリアルがネット上にあるのでそちらを参考にして欲しい。Gimpのバージョンは2.8.16。


こちらが撮影した元データ
この壁面はタイル吹き仕上げで合っているのかな


GIMPで画像を開く


やや暗いので明るさを補正


正方形にリサイズ

 
解像度が高いので1024×1024にリサイズ


中心と外側で明るさが違い、タイリングした際に模様となって際立ってしまうため、プラグインのハイパスフィルターを適用して明暗をなくす


適用後、同じくプラグインのResynthesizerを使用して画像をシームレス化


完成したシームレステクスチャがこちら


続いてMindTexを起動し、先ほどのテクスチャを読み込む

 
平面にマップされている状態で確認したいので、下段真ん中の3DView Settings(ワイヤーフレーム球体のアイコン)を開いて3DモデルをBoxに変更
右下のMap View/3D Viewボタンでいつでも2Dマップと3Dオブジェクトに切り替えができる


2Dマップのプレビューに切り替えてノーマルの設定をする
以下、いじってみた感じでパラメーターを解説

Tiny Detail 大きく設定することで凸凹の境界にメリハリがでる
Small Detail Tiny Detail程ではないが、凸凹の境界にメリハリをつけられる
Medium Detail 大きく設定すると凹凸が大きくなめらかな凹凸となる
Large Detail 大きく設定すると全体的に凹凸が大きくなめらかな凹凸となる
Shape  大きく設定すると凸凹が際立つ
Z Intensity  大きく設定すると出っ張りが大きくなる


Tiny、Smallを大きくして、Medium、Large、Shapeを小さくすれば、平面に細かな凹凸がある質感となり、すべてのパラメーターを大きくすれば、凸凹感の大きい質感になる


ハイトマップのパラメータはノーマルと兼用なので、マップだけ確認して次の設定へ


続いてスペキュラの設定
撮影した壁面は光沢感のある質感ではなかったので、光沢は極力抑えた

こちらもいじってみた感じでパラメーターを解説

Image 小さく設定するとフラットな光沢に、大きく設定すると光沢部分が凸凹の影響を受ける
Shape 凸凹に合わせて光沢の明暗を設定(マイナス側に設定すると光沢部分が反転)
Wear 小さく設定すると光沢が強く、大きくすると光沢が弱くなる
Dent Imageと似ている設定だが、大きく設定するとくぼみが強調される
Contrast  小さく設定すると均一な光沢に、大きくするほど明暗が分かれる
Brightness  大きく設定すると光沢が強くなる(Wearとの違いが分からなかった)


アンビエントオクルージョンの設定をする
アンビエントオクルージョンは陰の表現だけでなく、汚しのマップを設定する際にも使える

同じく、いじってみた感じでパラメーターを解説

Image 小さく設定するとフラットな陰に、大きく設定すると凸凹の影響を受けた陰になる
Shape 大きく設定すると、なめらかな凸凹となっているような陰をつけてくれる
Dent Imageと似ている設定だが、大きく設定するとくぼみが強調される
Contrast  小さく設定すると均一に、大きくするほど明暗が分かれる
Brightness  AOマップ全体の明るさを設定

他にDiffuseとIlluminationも弄れるが、今回は必要がなかったので割愛


ここまで設定して、凸凹が逆だったことに気がついたので、Invert Shapeをクリックして修正
完成したらSaveのAllをクリックし保存フォルダを設定すればすべてのマップを保存してくれる

 _ao_d_s
 _n_h
生成したマップがこちら
マップは自由に使ってください


Blenderレンダーでのレンダリングはこんな感じ


Cyclesでレンダリングしたのがこちら


Textures.com



上記のようなテクスチャ配布サイトからシームレステクスチャをダウンロードしてMindTexで各種マップを生成してやれば、手軽にフォトリアルな質感を作り出せる





その2続く