Blenderであそんでみた

3D-CGソフトBlenderの小技や豆知識など。

プリンシプルBSDFで異方性反射の使い方(3)/スピン加工の作り方

f:id:hainarashi:20210806112949j:plain

※記事製作時のバージョン:Blender2.92

 

プリンシプルBSDFで、いろいろな質感表現の方法を探っていくシリーズ。
第16回は異方性反射の使い方その3です。
今回の記事ではスピン加工の作り方について解説します。

 

異方性反射の設定方法は、他のパラメーターに比べてかなり独特で、説明する内容も多くなります。
1回の記事ではまとめきれないので、次のように段階を踏みながら説明します。
(リンクから各記事にジャンプします)

  1. 旋盤加工の作り方
  2. ヘアライン加工の作り方
  3. スピン加工の作り方(この記事)
  4. 異方性反射の基礎知識
  5. 応用と補足と余談

 

スピン加工とは?

金属の表面処理のひとつで、同心円状のヘアラインをたくさん並べて模様を作る仕上げ方法です。
英語では "circular brushed" と言います。

f:id:hainarashi:20210722203048j:plain

スピン加工(ウロコ模様)

 

実際のスピン加工を見たい方は、こちらの動画をどうぞ。

www.youtube.com

 

主な用途は、テーブルの天板とトラックの内外装(トラックアート・デコトラ)です。

f:id:hainarashi:20210723130504j:plain

テーブルの天板

画像出典:ガーデン丸アルミテーブル【カメリア -CAMELIA-】(ガーデン 丸 テーブル 60幅) :SH-05-65037:コンパネ屋 Yahoo!ショップ - 通販 - Yahoo!ショッピング

 

f:id:hainarashi:20210723131316j:plain

トラックアート

画像出典:トラックアート・デコトラ装飾|株式会社美光技研

 

スピンの形や大きさ、並べ方などを変えることで、いろいろな模様が作れます。
下の画像は、上記リンク(美光技研のHP)で紹介されている見本の一部です。

f:id:hainarashi:20210723132550j:plain

いろいろなスピン加工

 

スピン加工の作り方

スピン加工はノーマルマッピングを流用して設定します。

f:id:hainarashi:20210723144436j:plain

ノーマルマッピングでスピン加工の設定

 

ノーマルマッピングは、面の向きを記録した特殊なテクスチャ(ノーマルマップ)を元に、面の向きを擬似的に変更する手法です。
ノーマルマップを、ノーマルノードを通してタンジェントにつなぐと、面の向きのベクトルが異方性反射の方向として扱われる、という仕組みです。

f:id:hainarashi:20210726213525j:plain

ノーマルマッピングタンジェントを設定する仕組み

 

仕組み的にはバンプマッピングでも作れますが、ノイズが発生します。
ノーマルマッピングではノイズは発生せず、綺麗に仕上がります。

f:id:hainarashi:20210805193948j:plain

f:id:hainarashi:20210726213550j:plain

バンプマッピングとノーマルマッピングの比較

 

バンプマッピングでノイズが発生するのは、テクスチャ(ハイトマップ)の情報精度が足りないためです。
情報精度が足りないのは、スピン加工の場合、テクスチャをベイクで作るためです。
旋盤加工の作り方で紹介したようにプロシージャルテクスチャを使えば、情報精度が充分なのでバンプでも綺麗に仕上がります。

f:id:hainarashi:20210805201300j:plain

プロシージャルテクスチャを使ったバンプマッピング

 

ウロコ模様

実際にウロコ模様を作ってみましょう。
まず、ノーマルマップの元になるオブジェクトを作成します。

 

1. 追加 > メッシュ > 円柱

2. 編集モード > 上下の面を削除

f:id:hainarashi:20210726213602j:plain

円柱追加、上下の面を削除

 

3. 編集モード > 上の円の頂点を選択 > スケール:0.0

4. 編集モード > すべての頂点を選択 > スケール Z:0.1

以後、このオブジェクトを「円錐」と呼びます。

f:id:hainarashi:20210726213612j:plain

頂点編集

 

5. スケール:0.9

6. オブジェクト > スムーズシェード

7. ノーマル > 自動スムーズ > ON

8. モディファイアーを追加 > サブディビジョンサーフェス

  • レベル:レンダー > 4

これで、円錐のサイズが少し小さくなり、面が滑らかになります。

f:id:hainarashi:20210725195240j:plain

サイズを少し小さくして、面を滑らかにする

 

9. 下の画像のように、円錐を複製して配置する

f:id:hainarashi:20210726162726j:plain

円錐の複製と配置

 

10. Shift を押しながら、すべての円錐を選択 > 統合(ショートカット:Ctrl + J)

f:id:hainarashi:20210726213700j:plain

f:id:hainarashi:20210726213709j:plain

すべての円錐を統合

 

これで、元になるオブジェクトができました。
次にノーマルマップをベイクします。

 

11. 画像エディターから、テクスチャを新規作成

  • 名称:uroko_tangent
  • 幅:2048px , 高さ:2048px
  • アルファ > OFF
  • 32ビット浮動小数点 > ON

f:id:hainarashi:20210726171447j:plain

新規テクスチャ作成

 

12. 追加 > メッシュ > 平面

  • 位置 X:0.0m , Y:0.0m , Z:-0.5m

13. 平面のマテリアルを作成 > 画像テクスチャノードを追加 > "uroko_tangent" を選択

  • 色空間:Non-color

画像テクスチャノードはマテリアル内に配置するだけでOKです。
他のノードにつなぐ必要はありません。

f:id:hainarashi:20210726213727j:plain

平面追加・マテリアルに画像テクスチャノード追加

 

14. Shift を押しながら、円錐 ⇒ 平面 の順に選択

15. レンダーエンジン > Cycles

  • サンプリング > レンダー:1

16. 以下の設定をして、ベイクを実行する

  • ベイクタイプ > ノーマル
  • 選択物 → アクティブ > ON
  • ケージ > ON
  • ケージを押し出し:2m

f:id:hainarashi:20210727170207j:plain

ベイクの実行

 

17. 画像エディターから、ベイクされたテクスチャを .png 形式で保存

f:id:hainarashi:20210727171809j:plain

テクスチャを保存

 

これでノーマルマップができました。
下の画像のように設定すると、ウロコ模様の完成です。

※ノーマルマップの色空間は Non-color にします。
タンジェントに流用する場合、ノーマルマップノードの強さは結果に影響しません。
 0.0 以外はすべて同じ結果になるので、初期値の 1.0 のままでOKです。

f:id:hainarashi:20210805201820j:plain

マテリアル設定

 

リングスピン重ね模様

リングスピン重ね模様は、次の2つのテクスチャで作ります。

f:id:hainarashi:20210804170346j:plain

リングスピン重ね模様

 

では、ノーマルマップから作ってみましょう。

 

1. ウロコ模様の 1~4 の手順で円錐を作る

2. 編集モード > ループカット(Ctrl + R)で、好みの位置にカットを入れる

3. 編集モード > 中心の頂点を削除

以後、このオブジェクトを「リング」と呼びます。

f:id:hainarashi:20210804164212j:plain

リングの作成

 

4. オブジェクト > スムーズシェード

5. モディファイアーを追加 > サブディビジョンサーフェス

  • ビューポートのレベル:4
  • レベル:レンダー > 4

6. サイズ X:2.0m , Y:2.0m

サブディビジョンサーフェスで角を滑らかにする影響で、円の直径が少し小さくなってしまいます。
2m間隔で隙間なく並べたいので、サイズを修正します。

f:id:hainarashi:20210804164640j:plain

面を滑らかに ⇒ サイズを修正

 

7. 下の画像のように、リングを複製して配置する

8. Shift を押しながら、すべてのリングを選択 > Ctrl + J(統合)

f:id:hainarashi:20210804165210j:plain

リングの複製・配置と統合

 

後はウロコ模様と同じ手順・設定で、ノーマルマップをベイクします。
画像テクスチャの名前は "ringspin_tangent" にします。

f:id:hainarashi:20210804165634j:plain

ノーマルマップのベイク

 

次に異方性マッピング & ラフネスマッピング用の白黒テクスチャを作ります。

 

9. リングのマテリアルを作成 > ベースカラーを白(V=1.0)にする

f:id:hainarashi:20210804170855j:plain

リングのマテリアルを作成

 

10. 追加 > メッシュ > 平面

  • 位置 X:0.0m , Y:0.0m , Z:-0.2m
  • スケール:2.0

11. 平面のマテリアルを作成 > ベースカラーを黒(V=0.0)にする

f:id:hainarashi:20210804194556j:plain

平面を追加

 

12. Shift を押しながら、平面とリングを選択 > Ctrl + J(統合)

リングにかかっているサブディビジョンサーフェスの効果が平面にも出ますが、問題ありません。

f:id:hainarashi:20210804172225j:plain

平面とリングを統合

 

13. 画像エディターから、テクスチャを新規作成

  • 名称:ringspin_aniso
  • 幅:2048px , 高さ:2048px
  • アルファ > OFF
  • 32ビット浮動小数点 > OFF

 ノーマルマップとは異なり、32ビット浮動小数点はOFFのままにします。

14. ベイク用の平面のマテリアル > 画像テクスチャノード > "ringspin_aniso" に変更

  • 色空間:Non-color

f:id:hainarashi:20210804195029j:plain

ベイク用テクスチャ作成

 

15. Shift を押しながら、リング ⇒ 平面 の順に選択

16. 以下の設定をして、ベイクを実行する

  • ベイクタイプ > ディフューズ
  • 影響 > 寄与
     直接照明 > OFF
     間接照明 > OFF
     カラー > ON

その他の設定はノーマルマップのベイクと同じです。

f:id:hainarashi:20210804174106j:plain

ディフューズ(カラー)のベイク

 

17. 画像エディターから、ベイクされたテクスチャを .png 形式で保存

 

これで異方性マッピング & ラフネスマッピング用の白黒テクスチャができました。
下の画像のように設定すると、リングスピン重ね模様の完成です。

※粗さ(ラフネス)は、範囲マッピングノードで 黒 ⇒ 0.1 , 白 ⇒ 0.5 に変換しています。この値は好みで変更します。

f:id:hainarashi:20210804174602j:plain

マテリアル設定

 

ヘアラインディテールの作り方

スピン加工にヘアラインディテールを追加すると、より質感が良くなります。
ディテールは次の手順で作ります。

 

1. 追加 > メッシュ > 円柱

2. 編集モード > 上下の面を削除

3. 円柱を正面から見る視点に合わせ、UV展開 > 円筒状投影

f:id:hainarashi:20210731171819j:plain

円柱をUV展開

 

4. 円柱のマテリアルを作成 > 下の画像のように設定

f:id:hainarashi:20210801163444j:plain

マテリアル設定

 

この円柱を元に、模様の元オブジェクトを作成します。

f:id:hainarashi:20210804185901j:plain

模様の元オブジェクト

 

ディフューズのカラーをベイクします。
手順・設定は、リングスピン重ね模様の異方性マッピング & ラフネスマッピング用の白黒テクスチャと同じです。
画像テクスチャの名前は "***_hairlineVector" にします。

f:id:hainarashi:20210804190220j:plain

ベイクしたテクスチャ

 

ウロコ模様の場合、下の画像のように設定すると、ヘアラインディテールが追加されます。

f:id:hainarashi:20210801182520j:plain

ウロコ模様のヘアラインディテール

 

リングスピン重ね模様の場合は、下の画像のように設定します。

f:id:hainarashi:20210804192340j:plain

f:id:hainarashi:20210804175040j:plain

リングスピン重ね模様のヘアラインディテール

 

なお、ヘアラインディテールは、模様をアップで映す場合のみ有効です。
下の画像はディテールを設定していますが、つぶれて見えなくなっています。
こういう場合はディテールは省略した方が、レンダリングが早くなります。

f:id:hainarashi:20210805094744j:plain

模様がアップでないとディテールは見えない

 

補足

ノーマルマップの面の傾きについて

ノーマルマッピングタンジェントに流用する場合、面の傾きの大きさは結果に影響しません。
下の3種類のノーマルマップは、タンジェントに適用するとどれも同じ結果になります。
円錐やリングの高さは、自由に設定してOKです(0mは除く)。

f:id:hainarashi:20210802135744j:plain

元オブジェクトの高さを変えた比較

 

サンプリング数について

下記はdskjalさんのブログからの引用です。

サンプル数をあげても法線のベイクの品質にはほとんど影響しない。
なのでレンダリングのサンプル数を1にすることで、ベイクを高速に実行できる。

引用元:Blender で法線のベイク

 

ディフューズのカラーだけをベイクする場合も同じ事が言えるので、今回のベイクではどれもサンプリング数を 1 にしています。

 

「ケージを押し出し」について

平面からどこまでをベイクするかの範囲です。
元オブジェクトの高さに合わせて、値を調整します。
広く設定する分には問題ありません。
(余裕を取り過ぎるとベイクに時間がかかる気がしますが)
私が下の模様をベイクした際は、竜ウロコと竜線ウロコは11m、その他は2mに設定しました。

f:id:hainarashi:20210806115653j:plain

各模様の元オブジェクト高さ

 

32ビット浮動小数点(32bit Float)について

32ビット浮動小数点テクスチャは、精度の高い情報を記録できるテクスチャです。
ノーマルマップを通常の24ビットテクスチャで作成すると、情報精度が不足して仕上がりが悪くなるため、必ず32ビット浮動小数点テクスチャで作成します。

f:id:hainarashi:20210731152256j:plain

ノーマルマップの比較

  

手っ取り早くスピン加工を使いたい場合は

今回解説したものを含めた8種類のスピン加工のマテリアルを、BOOTHで無料配布しています。
各パターン毎に、ヘアラインディテールあり・なしのバージョン違いを用意しています。

hainarashi.booth.pm

 

 

以上、スピン加工の作り方でした。

 

※添削・構成アドバイス:相方

 

twitter

灰ならし (@hainarashi) | Twitter