SL のビューワーに新しく追加された PBR 材質機能の話の続きです。
前回はそもそも PBR って何? という疑問から
全般的な話をしましたので、今回から具体的に
Firestorm ビューワーを例にその使い方について書いていきますが、
PBR 材質機能が追加になったことで、
これまでの材質の機能はどうなるの?
自分は glTF ファイルなんか作れないし、持ってないし
今までの材質の機能で十分なんだけど?
という方もいらっしゃることと思います。
限に僕自身がそうです。
こうした疑問や不安をお持ちの方のためにも
追加になった PBR 材質機能の説明に入る前に、
従来の材質機能について先に説明することにします。
オブジェクトを編集する「製作ツール」で
従来「材質」だったタブは「テクスチャ」に名前が変わり、
その「テクスチャ」タブを開くと、
従来は「材質」と「メディア」を選択するドロップダウンだったのが「PBR」、「Blinn-Phong」、「メディア」の
3つのタブが並ぶ形に変わっています。
(リンデン公式ではドロップダウンのままのようです。)
デフォルトでは「PBR」のタブが選択されていますが、
真ん中の「Blinn-Phong」が従来型の「材質」になります。
前回のこの日記で従来型の「材質」は「Blinn-Phong」に
名前が変わった、と書きました。
これはリンデン公式の Wiki の表現をそのまま用いたのですが、
実際に触ってみると単に名前が変わっただけでなく、
こちらはこちらで機能がバージョンアップしていることが
わかりました。
ブリン・フォンというのは、光の反射モデルの名前です。
3D コンピュータ・グラフィックスの世界で、
モデリングされたオブジェクトの面に影や光の反射をつけるのを
コンピュータに計算させて実現するわけですが、
ユタ大学のブイ・トゥオン・フォン博士が開発したのが
フォン反射モデルと呼ばれるもので、
これに同じくユタ大学出身の博士ジム・ブリンが改良を加えたのが
ブリン・フォン反射モデルと呼ばれるもので、
SL がベースにしている OpenGL で採用されている反射モデルが
このブリン・フォン反射モデルというわけです。
つまり、ブリン・フォン反射モデルは計算によって
オブジェクトの光の反射や影の付き具合の
「近似値」を求めることができるのに対して、
PBR では「物理的に正しい」光の反射や影が実現できるわけです。
言い方を変えると、近似値でも十分満足できるのであれば、
ブリン・フォン反射モデルによる従来型の材質による製作でも
十分楽しめるようになっている、それが今回のバージョンアップの
特徴でもあると言えます。
そうなんです。
上の「Blinn-Phong」タブの画面を見て頂ければおわかりのように
テクスチャを設定する正方形の枠が1つから3つに増えています。
これこそ、これまで以上にブリン・フォン反射モデルを利用して
よりリアルな光の反射や影を実現するためのものなのです。
が、いきなり英語で「Diffuse」、「Normal」、「Specular」って
3つもあるうちどこに何を設定すればいいの〜っ?
って感じですよね。。。いや、僕自身そうでした。
で、まずここから説明していきます。
従来のテクスチャを設定するのは一番上の「Diffuse」になります。
これは「拡散反射マップ」を表す英語なのですが、
「拡散反射」とは、オブジェクトに当たった光が
跳ね返されるよりもオブジェクト全体に広がる効果のことです。
言い換えると、光によって反射したテカリや影ができない
そういう状態のことで、つまりは照明や陰影の効果の全くない
テクスチャに描かれているものをそのままというわけです。
これは、オブジェクトに色情報を与えるものになるので
「カラーマップ」とも呼ばれています。
真ん中の「Normal」は「ノーマルマップ」を表していて
これは「Diffuse」で描かれているものに凹凸の情報を与え
影を付けるためのテクスチャを設定するところになります。
凹凸は勿論、ポリゴンとして表現すれば当然リアルになりますが
そのためには当然計算量が増えるわけで、
スピードが要求されるゲームなどの世界では、
このノーマルマップを使用して平面に立体感を与えることで
計算量を減らしてきたわけなんですね。
一番下の「Specular」は「鏡面反射マップ」を表しています。
「鏡面反射」とは、光が当たったところが白くテカるアレです。
分かりやすい例としては黒い瞳に光が当たると、
瞳の中に白く輝く点ができますよね、アレです。
つまり、「Diffuse」で設定されている画像に
「Normal」で凹凸情報が追加されているわけですが、
そこに光を当てた時にその凹凸に応じて反射する具合が
表現されることになるわけです。
これらの説明を書くのに、反射モデルに関する記事を
たくさん読みましたが、その中には STYLY MAGAZINE さんの
「Tips 【Blender】様々なテクスチャマップを理解しよう」
というリンク先の記事もあって、
そこに「拡散」「ノーマル」「鏡面」それぞれの
画像がありましたので、実験で使わせて戴きました。
この場をお借りして御礼申し上げます。
次の画像は上のサイトにある3つの種類のマップを
製作ツールに読み込んだところです。
こんな感じになります。
最終的にはこうなるのですが、それぞれの効果を確認するために
Diffuse から順番に読み込んでいったところを見ていきましょう。
いつものように木箱を作って、その面に色情報のテクスチャを
マップしてみたのがこの状態です。
ただ写真が木箱に表示されているだけですね。
これに2番目のノーマルマップを適用するとこうなります。
どうでしょう? より立体的に見えませんか?
わかりづらい?
そうかもしれません。
これ、元の画像に影が入っているので
それだけで元の画像にある種の立体感があるかもしれません。
よりリアルな照明や陰影の効果を実現するためには
元の画像は影のない状態である必要があるようで、
素人には撮影でそんなテクスチャを作るのはムリですね。。。
そこで、立体感を確認するために、
いっそ色情報の Diffuse のマップを削除してみました。
Diffuse は真っ白な平面ですが、ノーマルマップによって
凹凸感が出ているのがわかると思います。
あれ? この凸凹はどこかで見たことがあるぞ?
という方もいらっしゃるかもしれません。
そうなんです。
以前のプロジェクトで「バンプ」というものが導入され
これまでの「材質」タブにもその項目がありました。
このバンプは平面に凸凹情報を与えるものなのですが、
ノーマルマップとはそのバンプの一種と言えます。
「バンプ」は今も「テクスチャ」のタブでは健在で、
ノーマルマップを適用するとプルダウンのところに
「テクスチャを使用」と表示されていますが、
そのプルダウンをクリックすると、次の画面の通り
これまでもあった選択肢が表示されます。
では、試しに色情報を戻して、これらのバンプの中から
「Suction(吸着?)」を適用してみましょう。
ほら、何だか丸い形に凹凸が付いて見えますよね?
この凹凸は表示されている画像とは全く関係なく凸凹してますが、
ノーマルマップとは画像に適切な形で凹凸情報を与えるもの
と僕は理解しました。
あ、因みにこんな風にバンプを適用してしまうと
ノーマルマップは解除されて「×」の状態に戻りますのでご注意。
最後に鏡面反射マップを適用したところです。
画面左下の石の一点が特に強く白く光っているのがわかるでしょうか。
これ、反対側から見るともっとわかりやすい。
全体に凸凹感もキラキラ反射している感じも
よく出ていると思います。
これ、木箱の1平面なんですけどね。
こんな感じで、これまでは影も含めたようなテクスチャを1枚
設定するだけでしたが、
ノーマルマップや鏡面反射マップが利用できるようになったことで
PBR でなくても結構な質感を表現することが
できるようになったわけなんですね。
従来型の「材質」はただ名前が変わっただけではない、
と書いたのはこういうことなんです。
まぁ、僕自身はノーマルマップとか鏡面反射マップとか
用意できる人間ではないのでショボいオッブジェクトを
作り続けることになるでしょうが。。。w
次回はいよいよ PBR の使い方について書きます。
お楽しみに。
(2024.12.01 追記)
上の実験をやっていて、ノーマルマップと鏡面反射マップを使うと
"Bumpiness" と "Shininess" に「テクスチャを使用」となっていて
もしかして? と思って気づきました。
これは、PBR 以前のバージョンでは次のような画面でした。
「凹凸」と「輝き」となっていますが、その後ろにかっこ書きで
「標準」、「反射」とあるのは、今思えば
ノーマルマッピングと鏡面反射マッピングのことですね。
このかっこ書きは僕自身が付けたのか、他の方が訳してくれたのか
今となっては全く覚えていませんが、
僕が訳したのだとすると、全くどういうことか理解せずに
訳していたことになりますね。ごめんなさいです。
で、このラジオボタンを選択すると、
ちゃんとマップを指定できるようになっていました。
そして、マップを指定しなくても、
「凹凸」の方は "Brightness" か "Darkness" を選択すると
明るさまたは暗さを強調してノーマルマップのようなことができ、
「輝き」の方も強度を指定して鏡面反射マップみたいなことが
できるようになっているのでした。
なので、必ずしも自分でノーマルマップや鏡面反射マップを
用意できなくても、擬似的に凹凸や光の反射を
表現できるというわけですね。
そこで、ノーマルマップや鏡面反射マップを使わずに
これらの設定を使ったのが次の写真です。
マップを使った上の写真と比べるとイマイチ感は否めませんが
それなりに凹凸や光の反射の感じは出ていると思いませんか?
最後に、この部分の翻訳に当たっては、「拡散」とか「標準」とか
普通の日本語の感覚からは分かりづらいので、
それぞれ次のように訳すことを考えています。
Diffuse = カラーマップ
Normal = 法線マップ
Specular = 鏡面反射マップ