プロシージャルテクスチャを画像に
これ、そんなに大したことじゃないんですけど、ちゃんと理解した上で手順として確立しておくと良いですよ、っていうお話です。
【悪用厳禁】フツウでは取り出せないテクスチャをブッコ抜く!!
まあ、人によってはこんな感じの「ヤバい系」タイトル付けてしまうのかもしれません、ええ。
タネあかし
最初にタネあかししておきますと、「出来上がっているものに対して」以下を行うだけです。
・Planeにマテリアル適用して
・所定の画像サイズに合わせて
・(Diffuse Color)平行投影のカメラでレンダリング
・(Normal)ノーマルマップをベイク
なので、基本的に元となるマッピングが「UV」のものに限ります。他のマッピングを使ったマテリアルで何か工夫して出力とかそういうことは例外的なものということで。
なお、Blenderは「立体のままマテリアルの情報をテクスチャとして画像に転写」することも可能です。参考に以下の記事を。
今回のお題
こいつを使います。kabo.blend。
ダウンロードして、ひとまず開いてみるとこんな感じ。サブディビジョンサーフェスモディファイアを有効にすると少し見栄えは良くなります。
ノードが表示されているところのヘッダ、マテリアル名が kabo になっていることをご確認ください。
これを何もせずに一旦閉じます。
新規シーンへマテリアルをAppend
新しくシーンを開きます。デフォルトキューブを消し、ワールド原点位置にPlane を追加します。大きさ等は変更しないでください。
ダウンロードした kabo.blend をD&D します。
ファイルをドロップするとメニューが現れるので、Appendを選びます。
D&D対応していない場合にはファイルメニューから Append で。
Material > kabo を Appendします。
Planeを選択した状態で、マテリアルを選択します。 kabo を選択。
平面にマップされた状態で表示されました。
kabo マテリアルの確認
何をマップ画像として出力するべきか、を確認します。Shaderエディタから。
テクスチャコーディネートはUV、シェーダーは Principled BSDF シェーダー で、以下が必要になりそうです。
・ Diffuse Color(Base Color)
・ Normal
ということでちゃっちゃとやりましょうか。
出力用セットアップ
出力用の設定を変更していきます。先に設定したものを保存しておけば良いですね。
[Renderタブ]
Propertiesエディタ、Renderタブ > Color Management の View Transform を Filmic から Standard に変更します。(Render EngineはEeveeで)
表示品質がビューポートと同じで良い場合には、Sampling の値、Render を View Port と同じ 16 にしておきます。(変更しなくてもOK)
他、AOやBloom等の効果は全て無効にしておきます。
[Outputタブ]
Propertiesエディタ、Outputタブ > Dimension の Resolution X 、Y の値を実際の出力画像のサイズ(ピクセル数)にします。
これで出力画像の設定は完了しました。次はカメラ。
[カメラ]
カメラの設定をします。
・ 真上から
・ 並行透視
デフォルトシーンに存在していたカメラを使います。カメラオブジェクトを選択して、メニューから Object>Clear>Location ( [Alt]+[G] ) で位置をクリア、Object>Clear>Location ( [Alt]+[G] ) で位置をクリア、[G][Z][5][Enter] として (0,0,5) の場所にカメラが真下を見下ろすように配置されているようにします。
「真上から」の設定は終わったので次は「平行透視」。
プロパティエディタのObeject Data タブ、Lens の Typeと Orthographic Scaleを変更します。
・ Type: Orthographic
・ Orthographic Scale: 2.0
カメラビューにします。カメラの撮影範囲ちょうどにPlaneが収まっていることを確認ください。
Diffuse Color
Planeを選択しておき、画面レイアウトを変更します。Shaderエディタを上半分に表示。
まあこの時点で大体お分かりかと思いますが、Planeに表示されているテクスチャ、色味が何か違う気がしますよね。Renderd にするとすぐに気づくと思いますけど、環境光のせいですね。
環境光の影響を受けないよう、Emission シェーダーにつないで、それを出力します。
はい、これでレンダリングする、と。
[F12]キーを押してレンダリングした後、イメージエディタから Image > Save As ([Shift]+[S])で画像を保存します。ファイル名は kabo_col.png で。
出力し終えたら、Emmitionシェーダーから Principled BSDF シェーダーに切り替え直しておきます。
Normal Map
ノーマルマップはテクスチャで Principal BSDF シェーダー の nomal にノードが繋がっている、という場合に、必要に応じて実施します。
[Cyclesレンダーエンジンへの変更]
2.80では Eeveeではノーマルマップ等はベイクできないので、Cycles レンダーエンジンに切り替えます。ついでにレンダリング時のサンプリング値も 1 に変更しておきます。
次に Bake パネルを Normal 出力用に切り替えます。
Shaderエディタで、 kabo マテリアルに Image Texture ノードを追加します。
[+New]ボタンを押して新規画像を作成します。 2048x2048px の画像を作成。名前を kobo_nor とします。
Image Texture ノードがアクティブ選択状態のまま(白枠で囲まれている)、プロパティエディタの Bake ボタンを押します。
画面右下にプログレスバーが表示され、少しすると「セーブかパックして」というメッセージが表示されます。
Image > Save As ([Shift]+[S])で画像を保存します。 ファイル名は kabo_nor.png 。
ひとまずこの時点の作業を保存します。 bake_setting.blend
Blenderを閉じます。
この時点で、このようなファイルが出来ているはずです。
確認
kabo.blend を開いて、複製したメッシュにこれまでの手順で作成した画像を反映したマテリアルを割り当ててみましょう。先に、 Node Wrangler Add-on を有効にしておきます。
オブジェクトを複製してマテリアルを削除します。
新しいマテリアルを追加します。
おもむろに [Shift]+[Ctrl]+[T] 。ファイルセレクタ画面になるので、kabo_col.png と kabo_nor.png を選択して、[Principled Texture Setup]ボタンをクリックします。
するとノードが自動的に作成されます。_col とか _nor とかファイル名につけていたのはこの為に、です。
3Dビューエディタで確認します。
Normal Mapの強さを調整して
ひとまずこれで。
画像の色味が若干変わるとかNormalマップの凸凹がちょっと印象違うとかNormal Map画像の強さ調整しなくちゃいけないとかありますが、及第点程度の出力にはなると思います。
大体こういう作業が必要なのって、Blenderのみで最終出力まで行くようなものではなく、「外部ツールにメッシュとテクスチャを持って行く」場合ですね。
See Also
お読みいただきありがとうございます。サポートいただいた分はおやつのグレードアップに使おうかと思います。スキ、SNSにシェアもよろしくお願いします!