Textures
Blender 3.0
オブジェクトの表面に使用される画像やパターンのことをテクスチュアと言い、これを位置を最適化しつつ貼り付ける操作をテクスチャマッピングと言います。Blenderではこの設定を、シェーダーエディタ、テクスチュアノードエディタ、UVエディタ等を使って行います。
テクスチュアの設定方法
Shading ワークスペースの利用
マテリアルの設定と同様、テクスチュアの設定でも Shadingワークスペースを使うのが効率的です。TopBar の ワークスペース選択から Shading を選択すると Shader Editor を含むワークスペースが表示されます。
テクスチュアの新規作成
新規のオブジェクトは、テクスチュアの情報を持っていません。オブジェクトにテクスチュアを貼るには、オブジェクトがマテリアルを持っていることを前提として、その階層下にテクスチュアデータブロックをリンクする必要があります。この初期操作は、対象となるオブジェクトを選択した状態で、以下のいずれかの方法で実現できます(後者を推奨)。
PropertyEditor > Texture Property > New > Image or Movie など ShaderEditor > Header > Add > Texture > ImageTexture など
NodeEditor でテクスチュアを設定
NodeEditor 上の TextureNode でテクスチュアを設定するには、ノードの出力ソケットを ShaderNode のいずれかの入力ソケットに接続する手続きが必要です。NodeEditor上では、右図のように、左から ImageTexture > Shader > MaterialOutput の順に並ぶように接続します。
以下、オブジェクト全体に画像を単純に貼り付ける事例を紹介します。
- ImageTextureNode パネルの Open から画像ファイルを選択、あるいは既存の画像を選択します。
- ImageTextureNode の出力ソケット Color を、ShaderNode の入力ソケット BaseColor に接続します。
以上で、3D View に表示されているオブジェクトの表面の色がテクスチュア画像によって変わることが確認できると思います(3D Viewの表示モードが、Material Preview あるいは Render Preview モードになっていることが必要です)。立方体にレンガの模様、球体にコンクリート表面の画像・・など、形状と画像との詳細な位置調整のいらないマッピングであれば、この方法でも問題ありません。
UVマップ
実際のテクスチュアマッピングでは、構造物の特定部分に当該素材の画像を貼る、顔面形状に顔の画像を貼るなど、画像と頂点との対応を正確に決めなくてはなりません。そのような場合は UVマッピングという技法を使います。基本的な考え方は、オブジェクトの各頂点データと、UV画像の中の位置情報(これをUV座標といいます)を対応付けしていく…というものです。
既存のUV画像にに頂点を割り付けていく方法と、頂点の展開図に合わせてUV画像を作る場合がありますが、ここでは、簡単な前者の方法で説明します。
UVマップ画像の準備
立方体の6つの面にサイコロの1から6の面を対応させることを前提に、右のような画像を用意します。境界線は邪魔になるので、ない方がいいのですが、ここでは作業がしやすくなるよう、境界線をグレーで描いています。(練習の際は右の画像をダウンロードして下さい)。
NodeEditor でUVのリンク設定
UVマップを貼る作業は、ShaderEditor 上で行います。これを適正に行うには、NodeEditor 上に TextureNode と UVMapNode を追加するとともに、これらを正しい順序でソケット接続することが必要です(右図)。以下、その手順です。
- ShaderEditor 上で TextureNode を追加します。
ShaderEditor > Header > Add > Texture > ImageTexture ImageTexture パネルの Open をクリックして UV画像ファイルを選択
- ImageTextureNode の出力ソケット Color を ShaderNode の入力ソケット BaseColor に接続しておきます。
- ShaderEditor 上に UVMapNode を追加します。
ShaderEditor > Header > Add > Input > UV Map
- UVMapNode の出力ソケット UV を ImageTextureNode の入力ソケット Vector に接続します。
以上で、UV座標データをもとに、画像がオブジェクトに貼り付けられる準備が整いました。
オブジェクトの展開
展開図を作成するためには、オブジェクトに Seam(縫い目)を定義する必要があります。UV画像に対応した展開になるよう、EditModeで Seam となる部分をすべて Edge 選択していきます。
Seam となる Edge をすべて選択したら、これを以下のようにして記録します。
Header > UV > Mark Seam
次に、この Seam で展開することを指示します。
EditModeで、全ての Edge を選択(Seam 部分のみ太く強調表示されます) Header > UV > Unwrap
展開図は、UV Editor に表示される前提で、この時点で3D Viewport 上に展開図が表示されるわけではありません。とりあえず、準備完了です。
付記:基本的には Seam は自分で設定するものですが、Blender の初期画面にデフォルトで表示される Cube にはあらかじめ Seam が設定されています。
UV Editor で位置調整
Shaderワークスペースの左にあるエディタを、UV Editor に切り替えて、ここに画像と展開図を重ねて表示します。以下のようにします。
Header > 画像選択 > 対象となる UV画像を選択します。 3D Viewport の EditMode で、Edge を全選択します。
選択した UV 画像とオブジェクトの展開図がともに表示されることが確認できると思います(うまくいなかい場合はもう一度 UV Unwrap を実行してみて下さい)。
頂点と画像の対応付け
UV Editor の中で、画像と頂点の対応付けを行います。モデリングの操作が2Dになるだけで、頂点の移動・回転・拡縮は、[ G ] , [ R ], [ S ] で行うことができます。対応付けを行なった結果は右図のようになります。
3D Viewport が Material Preview あるいは Render Preview モードになっていれば、マッピングの様子はリアルタイムに表示に反映されます。
UV マップ(補足事例)
ビル群のように直方体が立ち並ぶ景観をつくるのに、ビルの壁面テクスチュアをまとめて貼ってしまいたい場合があります。このような場合は、UV データの作成時に Project From View を選択します。
ビル群のデータ準備
- ビル群(複数の直方体など)をまとめてひとつのオブジェクトにします。
ObjectMode でまとめたいものをすべて選択 Header > Object > Join( [CTRL] + J )
- 天井にテクスチュアが貼られないよう、天井部分を分離します。
EditMode > 面選択でいずれか一つの天井を選択 Header > Select > Select Similar > Normal これで全ての天井が選択 Header > Mesh > Separate([p]) > Selection これで分割完了 ObjectMode に戻る
- すべての壁面と床のみ1つのオブジェクトになっています。
マテリアルとテクスチュアを設定
- これに新規のマテリアルを適用して、BaseColor の部分を ImageTexture として、壁面のテクスチュア画像を割り当てます。この時点で、右図のような感じになります。
UV設定
- UV Editing ワークスペースに切り替えます。
- UV Editor の Header > Image > Open で壁面用の画像を読み込みます。
- 3D Viewport 上のオブジェクトをTopView [1] あるいは SideView [3] に切り替えた後、以下の操作をして下さい。
[A] Key で、すべての面を選択します Header > UV > Project From View
- 操作の直後は、右図のような状態になります。
- その後、UV Editor 上で、すべての面を選択して、画像よりもメッシュの全体が大きくなるように拡大すると、右図の様にテクスチュアがリピートされて、それらしくなります。
- 同じサイズの複数のテクスチュアを重ねていくと、右図のようなものができます。
参考情報
- テクスチュアデータは、以下のものを使用しました。
https://www.textures.com/download/PBR0537/138572 - 関連記事:Blender/Add-ons
テクスチュアマッピングに関連する Node
Input Nodes
- UV Map:UVマップノード*1
- Texture Coordinate:テクスチャ座標ノード
- Generated:メッシュの頂点位置から自動的に生成されたテクスチャ座標
- Normal:オブジェクト空間の法線。ポイントライトとスポットライトで使用
- UV:アクティブなレンダーUVマップからのUVテクスチャ座標
- Object:座標のソースとしてオブジェクトを使用
- Camera:カメラ空間内の位置座標です。
- Window:スクリーン上のシェーディングポイントの位置
- Reflection:反射ベクトルの方向を座標として使用
~
Texture Nodes
- Image(Movie) Texture:画像(動画)テクスチュア
- Environment Texture:環境テクスチュア
- Procedural Texture:計算によって生成されるテクスチュア
- Brick Texture:レンガ
- Checker Texture:一松模様
- Gradient Texture:グラデーションテクスチュア
- Magic Texture:サイケデリックなカラーテクスチャ
- Noixe Texture:ノイズテクスチュア
- Sky Texture:大気のテクスチュア
- Wave Texture:波のテクスチュア
Vector Nodes
- Mapping:対応付け(移動、回転、拡縮を適用)
平行移動、回転、およびスケーリングを適用し、入力ベクトルを変換
- Bump:バンプマッピング
ピクセル単位の高低情報(グレースケール画像)で擬似的に陰影生成
- Normal :ノーマルマッピング
ピクセル単位の法線ベクトル(XYZ値=色情報)を用いた凹凸の表現
- Displacement:ディスプレイスメント
ピクセル単位の高低情報を用いて形状に凹凸変形を施す