Blenderであそんでみた

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

プリンシプルBSDFで異方性反射の使い方(4)/異方性反射の基礎知識

f:id:hainarashi:20210814151817j:plain

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

 

プリンシプルBSDFで、いろいろな質感表現の方法を探っていくシリーズ。
第17回は異方性反射の使い方その4です。
今回の記事では異方性反射の基礎知識について解説します。

 

異方性反射の記事は全部で5つあります。
(リンクから各記事にジャンプします)

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

 

「異方性のパラメーターはよく分からない」
「どう使えばいいの?」
とよく言われますが、その原因は次の3つと思われます。

  • 「異方性」という言葉になじみが無く、意味が分からない
  • 「異方性反射」という現象がどういうものなのか分からない
  • パラメーターとしては「異方性」だけではなく「タンジェント」と「異方性の回転」も操作する必要があるが、その働きや使い方が分からない

逆に言うと、これらが理解できると異方性に関する操作内容がイメージしやすく、扱いやすくなります。
今回の記事ではこれらを詳しく解説していきます。

 

「異方性」という言葉の意味

異方性とは
「物質や空間の物理的性質が、方向によって異なること」
を表す学術用語です。

異方性の反対は「等方性」で、
「物質や空間の物理的性質が、方向によって異ならない(すべての方向において等しい)こと」
を表します。

科学や技術の分野では割と普通の言葉らしいですが、日常生活ではまず使われません。
日常レベルでイメージできるのは、

  • カニかまぼこ ⇒ 特定の方向に裂ける(異方性)
  • 普通のかまぼこ ⇒ 裂けやすい方向がない(等方性)

という辺りでしょうか。

f:id:hainarashi:20210813175031j:plain

日常に潜む異方性

 

「異方性」という表現は同じでも、どの物理的性質について言うかは、分野により様々です。
※材料強度の異方性、複屈折結晶の光学的異方性、磁気異方性解析、熱伝導率異方性、などなど・・・

プリンシプルBSDFの異方性は、「異方性反射」のことです。

 

「異方性反射」とはどういう現象か

異方性反射とは、簡単に言うと「一定方向のキズや溝が沢山あると、反射光(ハイライト)が帯状に伸びて見える」現象のことです。
専門的に言うと、次のようになります。

入射の角度や方向によって特定方向だけ強く反射する特性をもったもの。

出典:異方性反射 | CG・映像用語辞典 | CGWORLD.jp

 

異方性反射という名称になじみはなくても、そのものは身の回りで普通に見かける現象です。
主な例として、次のようなものがあります。

  • 旋盤加工
  • ヘアライン加工
  • CDやDVDの裏面
  • アナログレコードの盤面
  • 髪の毛の光沢(天使の輪)

この記事では、異方性反射を生じさせる「一定方向のキズや溝」を、一括して「ヘアライン」と呼ぶことにします。

 

異方性反射が生じる仕組みについて、動画にまとめました。
まずはこちらをご覧下さい。

vimeo.com

 

上の動画にあるとおり、異方性反射はヘアラインに直交する方向に反射光(ハイライト)が伸びます。
プリンシプルBSDFの異方性パラメーターは異方性反射のON・OFFを切り替えるだけなので、それとは別にハイライトが伸びる方向を指定する必要があります。
そのためのパラメーターがタンジェント異方性の回転です。

 

タンジェント

タンジェントは、異方性反射でハイライトが伸びる方向を設定するベクトルです。

現実では、まずヘアラインがあり、それに直交する方向にハイライトが伸びます。
しかしタンジェントはハイライトが伸びる方向を直接設定するパラメーターなので、ヘアラインは考慮されません。
そこで、

  1. まずヘアラインの方向・形状を想定して
  2. それに直交する方向にタンジェントを設定する

という順序で考えると、扱いやすくなります。

 

タンジェントは、ベクトルの向きだけが結果に影響します。
ベクトルの大きさは結果に影響しません。

f:id:hainarashi:20210802135744j:plain

タンジェントでベクトルの大きさは結果に影響しない

 

タンジェントのベクトルの向きを180°逆にした場合、元と同じ結果になります。
そのため、

  • バンプマッピングを使う場合
    ⇒ テクスチャのグラデーションを反転させても、同じ結果になる
  • ノーマルマッピングを使う場合
    ⇒ 元オブジェクトの面の向きを反転させても、同じ結果になる

となります。

f:id:hainarashi:20210815113548j:plain

グラデーションを反転させた場合(バンプマッピング

 

f:id:hainarashi:20210815113554j:plain

ノーマルマップを反転させた場合(ノーマルマッピング

 

名前の理由

ところで、なぜハイライトが伸びる方向が「タンジェント」なのでしょう?
三角関数タンジェントとなにか関係があるのでしょうか?
気になったので調べてみましたが、この名前には理由はあるけど意味は無いようです。

 

どんな理由かと言いますと。
もともと3DCGでは、面の向きを処理するための「タンジェント空間」という座標空間が使われています。
この座標空間には、次の3つのベクトル要素があります。

  • ノーマル(法線)
  • タンジェント(接線)
  • バイノーマル(従法線)

f:id:hainarashi:20210602142151j:plain

タンジェント空間

 

ノーマルはおなじみの、面の向きを表すベクトルです。
タンジェントとバイノーマルは、面にUVテクスチャを貼り付ける時の座標計算に使われるベクトルです。
このタンジェントが、異方性反射の方向として流用されているらしいです。
流用なので、異方性の設定に対しては本来のタンジェントの役割はまったく関係せず、ただの「ハイライトが伸びる方向を設定するためのベクトル」として扱われます。

なので、「名前に理由はあるけど、異方性としては意味が無い」というわけです。

 

タンジェントマップについて

タンジェントの設定には、次の3つの方法があります。

  1. 初期状態のまま使う
  2. タンジェントノードを使う
  3. テクスチャで設定する

f:id:hainarashi:20210527204716j:plain

1. 初期状態のまま使う

 

f:id:hainarashi:20210612141914j:plain

2. タンジェントノードを使う

 

f:id:hainarashi:20210723144436j:plain

3. テクスチャで設定する

 

この3つ目、タンジェントを設定するためのテクスチャをタンジェントマップと言います。

さて、ここが重要なところなのですが、タンジェントマップを作る標準的な方法は存在しません。
さらに言えば、タンジェントマップの標準的な形式も、標準的な使い方(どうノードを組んでタンジェントにつなぐか)も、存在していません。

なんてこった!

 

というわけで。

このブログで紹介したバンプマップとノーマルマップをタンジェントマップに流用する方法は、私が個人的に編み出したものです。
そのため、現時点では全く一般的ではありません。

なので、

  • 自作のマテリアルやタンジェントマップを公開する
  • 他の人と共同作業をする

などの場合、他の人にはタンジェント部分の使い方が分からないかもしれません。
その点、ご注意ください。

 

異方性の回転

異方性の回転は、タンジェントを回転させるパラメーターです。
0.0~1.0 が、0°~360°に対応します。

f:id:hainarashi:20210614210336j:plain

異方性の回転

 

タンジェントの項目で説明したように、異方性の回転を 0.5(180°)にすると、0.0 と同じ状態になります。
0.5~1.0 は、0.0~0.5 の回転の繰り返しになります。

 

異方性の回転は、面全体をまとめて回転させるのではなく、下の画像のように「点」に対して個別に作用します(レイトレースのレイ毎に処理されるのだと思います)。
※画像の、赤の矢印はタンジェント、緑の線は仮想のヘアラインです。

放射状のタンジェントと同心円状のタンジェントは、0.25(90°)の回転で入れ替わります。

f:id:hainarashi:20210814145600g:plain

異方性の回転の作用イメージ

 
初期状態の異方性反射は同心円状のタンジェントが設定されているので、0.25(90°)回転させると放射状のタンジェント旋盤加工)になります。

f:id:hainarashi:20210529174542j:plain

0.25(90°)の回転で旋盤加工になる

 

補足

日本語版のマニュアルでは、異方性の回転が次のように説明されています。

異方性反射の方向を回転させます。1.0は完全な円になります。

後半がちょっと混乱しますが、これは誤訳です。
原文(英語)は

Rotates the direction of anisotropy, with 1.0 going full circle.

で、正しくは「1.0で一周します」です。

 

 

以上、異方性反射の基礎知識でした。

 

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

 

twitter

灰ならし (@hainarashi) | Twitter