2024年11月10日日曜日

【技術情報】 今更ですが、PBR って何?〜その1

今年の6月20日、Firestorm ビューワーの
PBR バージョン 7.1.9 がリリースされました。
ちょうど SL21B の時期です。
この時期、メチャメチャ忙しかったこともあり、
また、PBR バージョンを入れたらトラブったという話も
X 辺りでチラチラ目にしていましたので、
SL21B でイベントが予定されている身としては
敢えて危険を冒したくなく、
そのタイミングでのバージョンアップはしませんでした。

そもそも PBR って何? というところから始まり、
Firestorm の開発にも絡んでいる自分としては
この略語は Public Beta Release、つまりベータ版のリリースを
意味する言葉でしかなく、ますますインストールする気には
なれないのでした。
それがその SL21B のライブの模様を
しんさんが録画してくれたのを見て、おお? と思ったのでした。
しんさんの撮影はいつも超高でやって下さっているはずですが、
この時の映像は、全体に色に深みがあり、
よりリアルな感じがしました。
そこで、これ、PBR ビューワーで撮ったの? と訊くと
そうです、と仰るので、それでは自分も PBR 試してみるか、
と思った次第なのです。

それからもう随分時間が経ちましたので、
今更 PBR って何? という人も減ってはいると思いますが、
自分の備忘も含めてここにまとめておこうと思います。
技術的な話は例によって長くなりそうなので、
2回に分けて、今回は PBR の全般的な話、
次回は Firestorm ビューワーでの具体的な操作について
説明していこうと思います。
いや、一つにはこのところビューワーの翻訳サボってて
またまた英語がいっぱい増えて、何の機能か、
触ってもトラブったりしないか、不安に思っていらっしゃる
みなさまへの罪滅ぼしも兼ねて、でございます。

     *   *   *

PBR というのは Physically Based Rendering の略で、
日本語では一応「物理ベースレンダリング」という
中途半端な訳が当てられていますが、どちらかというと
コンピュータグラフィックスの世界では、
もう PBR という英語の略語の方が一般的に通っているようです。
これは、SL の世界で言うと、光の反射(Reflection)と
材質(Materials)に関連した話のようです。
材質と言えば、2013年頃に——もう10年以上前か!——
Project Materials というプロジェクトがあり、
そこでよりリアルな材質の表現が可能になりましたが、
今回の PBR は更にリアルな質感をもたらすものとなります。

材質というのは、金属だったり、木だったり、石やプラスチック、
或いは革だったりしますが、
私たちは遠目からそれを見ただけで、金属だ、プラスチックだ、と
敢えて触ってみたりすることなく見分けることができます。
これは何故かというと、その材質によって反射の性質が異なるから
だそうなんです。
そこで、ある角度から光を当て、それをまたある角度から見た時に
光がどのように反射してその物体が目に入ってくるか、
これを実際の物理の法則に従って計算して描画する、
というのが PBR なんですね。

なんだけれども、PBR でできることというのは
実に範囲が広いようで、昨年の11月にリンデンが導入したのは
まずこの材質の部分で、最初に書きましたように、
PBR は光の反射とも関係しますので、地面だとか空や水とか
SL の環境全体が今後はよりリアルな見え方をするように
変わっていくようです。

一方で、現在の SL 内に僕等住民たちが作ったオブジェクトの殆どは
従来の「材質」を使って作られていますので、
材質に関しては、当面従来の材質と PBR とが共存できるように
ビューワーの変更が為されているわけです。
そして、従来の「材質」ですが、これを PBR の材質と区別するため
呼び方が Blinn-Phong と変わっています。
これは SL が採用している OpenGL のシェーダーモデルの一つ
ブリン=フォン反射モデルによるそうです。
シェーダーのモデルのは他にフォン反射、ランバート反射など
あるようですが、従来の SL はブリン=フォンだ、というわけですね。

で、その従来のブリン=フォンで使われるテクスチャは
JPG, PNG, TGA といった形式だったりしましたが、
PBR で使われるテクスチャは glTF という形式のファイルです。
どんどん新しい言葉が出てきて目が回りそうですが、
実はこれはコンピュータグラフィックスの世界では、
JPG とか MP3 に当たるものだそうで、
つまり、JPG や MP3 が OS やアプリケーションを選ばないように
glTF はどんなグラフィック編集でも扱うことのできる形式、
新しいスタンダードなのだそうです。

ところで面白いのは、この glTF という形式で書き出すと、
".gltf" という拡張子のファイルと共に、PNG だったり
いくつかの種類のファイルが出力されるんですね。
SL にアップロードする時はこれら全部を持ち込む必要がありますが、
もう一つ ".glb" という拡張子もあって、
こちらは全部のファイルをまとめた形式なのだそうです。
そしてSL にアップロードする時にこの ".glb" ファイルを指定すると、
個別のファイルをアップロードするのか、
全部まとめてアップロードするのかを確認するダイアログが
表示されるようになっています。

僕自身は PBR のテクスチャを編集するソフトは持ってませんので
glTF ファイルをアップロードすることはできません。
この辺りは最後に紹介する動画をご参考にされるとよいと思います。

さて、この反射モデルが変わったことに加えて、
トーンマッピングというのも導入されています。
世の中音楽でも映像でも何でも高解像度になっていますが、
映像・画像における高解像度 HDR、
即ちハイ・ダイナミック・レンジに対応するものになります。
つまり、コンピュータのディスプレイはより解像度が低いので
HDR の画像や映像をそのまま表現することができません。
そこで、HDR の画像や映像の質感が失われないよう
色の変換が行われるわけですね。
この変換の方式にはいくつか種類があるようですが、
SL が採用しているのは ACES という方式で、
これは Academy Color Encoding System の略で、
その名の通り、映画やテレビで使われている方式です。
これはつまり、SL の世界が映画レベルの深みを持った
よりリアルで没入しやすい環境になっていくことを意味していると
ヒロシは理解しています。

あともう一つ。Reflection Probe というものが導入されました。
これまた日本語の訳がなくてそのまま「リフレクションプローブ」
と言っています。
これはある地点から全方位に向かって見える景色を
キャプチャーする球状のカメラのようなもので、
これを使うことで周りの景色の映り込みが実現できます。
SL ではリフレクションプローブには2種類あって、
各地域に設定されたデフォルトの、修正不可能なプローブと
もう一つは自分で作ることのできる修正可能なプローブになります。

デフォルトのリフレクションプローブは分かりやすいです。
PBR の材質のオブジェクトを作って「モード」を "Blend" にすると
そのオブジェクトに空が映り込みます。
地域全体に設定されているリフレクションプローブの効果ですね。
ただ、部屋の中に置いてあるオブジェクトなのに、
つまり天井があるのに空が映り込むのはおかしいですよね。
そこで、自分用の、部屋より大きいサイズで
リフレクションプローブを作って設置してあげると
ちゃんと天井が映り込むようになる、というわけです。

但し、このリフレクションプローブはリソースを激しく消費するので
次のような行為は禁止されていますのでご注意下さい。

・リフレクションプローブを装着してはいけない
・リフレクションプローブを家具、テーブル、椅子、楽器といった
 小さなオブジェクトにリンクしてはいけない
・リフレクションプローブを自動車や飛行機のような
 物理オブジェクトとリンクしてはいけない
・リフレクションプローブを鏡として使ってはいけない

最後の「鏡」については、PBR とは別に鏡用のプロジェクトで
対応が予定されているようです。

ざっとこんなところでしょうか。
詳しくは英文ですが、次の Wiki の記事を読んで頂くのがよいのと
あと、超ザックリですが、クリエイターの方も含めて
何をしなければならないかがサクッとわかる動画がありますので
これを紹介しておきます。
是非参考にしてみて下さい。

・PBR Wiki

・Second Life University - How to Create PBR Materials
 

No response to “【技術情報】 今更ですが、PBR って何?〜その1”

Leave a Reply