BlenderとCrazyBumpを使ってリアルな壁を作る

この記事はBlender Advent Calandar 2014の20日目の記事です。
前日の記事はmelrosecoolさん。
今回はCrazyBumpというシェアウェアを使ってリアルな床を作ります。
What is CrazyBump
CrazyBumpは画像から法線マップ、ディスプレイスメントマップ、光沢マップなどを作ってくれるソフトです。 マップを適用した3Dモデルをリアルタイムでぐりぐり回しながら、パラメータを調整できるのが特徴です。 シェアウェアですが30日間お試しで使えるみたいなので、それを使用してみます!
CrazyBumpのwebページ先のリンクから、CrazyBumpをDL&インストールしてください。

CrazyBumpの使い方
まずは、元となるテクスチャを用意します。CG Textures あたりから引っ張ってきましょう。今回用意したのはこんなテクスチャ。

CrazyBumpを起動し、Clcik this button to begin を選びます。

Open photograph from file をクリックし、画像ファイルを選択。

近い形状を選びましょう。今回は左を選択。

プレビュー画面とプロパティをいじれる画面が出てきます。

メインのウィンドウから、各種プロパティをいじれます。
項目は英語を読んでみてください。
タブから法線マップ、ディスプレイスメントマップ、光沢マップ 等の切り替えと項目の調整ができます。

プレビュー画面
左クリック+ドラッグでモデルを回転。
右クリック+ドラッグで照明の位置を移動します。
Optionメニューから 法線マップ、ディスプレイスメントマップ、光沢マップ 等の表示/非表示が切り替えれます。 「Ball」をクリックすると、モデルを他の形状に変更できます。

保存
「Tool」 → 「Preferences...」より、 NomalMapY-Axisの項目をDownからアップに変更。
保存ボタンを押し「Save All Textures...」を選択しましょう。 こんな感じで保存されました。

Blender
Blenderでの操作に入ります。
Blenderを起動し、平面にDiffuseシェーダとImageTextureを貼り付けます。
ImageTextureにDiffeseテクスチャ(元となった画像)を指定します。
平面にUVの設定を忘れないで下さいね。

このままでは、画像を貼り付けただけの平面に見えますね。
法線マップ(ノーマルマップ)
続いて法線マップを適用します。法線マップとは、
direction(向き)を保存する画像です。法線の向きが画像の RGB値に直接入っています。直線に沿う面から離れたピクセルだけをシミュレートするよりもにはるかに正確で、任意の方向に動かされたピクセルを任意の方法でシミュレートできます。 Blender Wiki より
こんなやつですね。

ImageTextureに法線マップを指定。 「Vector」 → 「NormalMap」ノードを作成し、こんな感じに繋げましょう。

ディスプレイスメントマップ
次にディスプレイスメントマップを適用します。
ディスプレイスメントマッピングを使うと、テクスチャを入力にして、レンダリングされたジオメトリの頂点位置を操作することができます。陰影を歪ませて凹凸の魔法をかける法線マップやバンプマップ と違って、ディスプレイスメントマップは実際のメッシュに、本当の凸凹やしわ、隆起などを作ります。このため変形されたメッシュは影を作り、他のオブジェクトを遮り、その他本当のジオメトリができるあらゆることを行えますが、一方で動作に必要な頂点はずっと多くなります。 Blender wiki より

平面にDisplaceモデファイヤを適用します。

Texture: のNewをクリック。

Textureタブに移動し、MaterialをDisplaceにし、TypeをImage or Movie に。
Imageにディスプレイスメントマップを指定します。

これだけでは変化は起きませんね。Displaceモデファイアは直接メッシュを変形するので、平面の頂点数を増やしましょう。
EditモードでSubdivide。ショートカットは「W」です。
Subdivideしまくった結果。

DisplaceモデファイヤのStrengthを調整していい感じにしましょう。今回の場合、0.025くらい。 あと、ついでにSmoothをかけときましょう。

スペキュラマップ
最後にスペキュラマップを適用します。
スペキュラマップは、光沢を出すためのものです。

まずは、ノードエディタに移動し、GlossyシェーダとMixシェーダを追加しましょう。

スペキュラマップを指定したImageTextureを作成。
それをMixシェーダのFacに繋げます。強さを調整できるよう、その間に「Color」→「MixRGB」ノードをかまします。
もう片方のColorを黒にして、Facを調整しましょう。

アンビエントオクルージョン
オブジェクトの狭い空間ほど暗くすることで、よりリアルなソフトシャドウを生成します。 GI(グローバルイルミネーション)を表現する手法でもあるので、ランプの光が当たらない部分も柔らかく照らし出します。 http://cg.xyamu.net/Blender/entry232.html CG制作より
使うテクスチャはこれ

ImageTextureを作成。
「Color → 「MixRGB」ノードを作成。モードをMultiplyに。
Diffeseテクスチャとアンビエントオクルージョン用のテクスチャを入力とし、出力をDiffuseシェーダに。

レンダリング
出来上がったノードがこちら。

んで、レンダリングしたもの

参考までに、平面にテクスチャだけを適応したもの

まとめ
某Andrewさんのこの動画を参考に、メモも兼ねて書きました。この動画に法線マップなどの詳細も説明されているので、英語わかる人はこっち見ちゃったほうが早いと思います。 明日の記事はRyoAwaさんです。よろしくお願いします。