会社員になってからすっかり画像認識の人になってしまったけど、最近のCGレンダリング事情にキャッチアップしておきたい。
リアルタイムレンダリング系の書籍を買っておきながらしばらく積んでいた↓


画像認識もCGも、リアルタイム化を目指す際の考え方は共通点が多いと最近感じる。
極力ユースケースを絞って重い処理はなるべく事前計算へ追いやり、キャッシュをフル活用してリッチな処理を近似する。実行時の自由度と処理負荷のバランスを調整していく。。
応答のリアルタイム性を追求するとどんなジャンルでも考え方は似通ってくるのかな。
レンダラやGPUアーキテクチャの話もあるけど、基本はやっぱりBRDF(反射)なので、とりあえずミクロなスケールでShaderの話からキャッチアップして行こう。
今月のCG WORLDはPBR (Physically Based Rendering)特集だったね。
![CGWORLD (シージーワールド) 2020年 09月号 [雑誌]](https://m.media-amazon.com/images/I/514B48Yqg+L.jpg)
BRDFの近年までの歴史を概観するのにTeppei Kuritaさんが公開している資料がとても分かりやすい↓
Cook-Torrance
この分野は長らく遠ざかっていたので、オイラの実装知識はCook-Torranceぐらいまでで止まっている↓
学生の頃、C++の勉強も兼ねてCook-TorranceをMayaのShaderプラグインとして実装したことがある↓
https://github.com/NegativeMind/Maya-Plugins
当時、Mayaの標準レンダラに搭載されていたShaderはBlinnやPhongぐらいだった。(mentalrayにはCook-Torranceも搭載されていた)
幾何減衰項G、フレネル項F、マイクロファセット分布項Dで構成されたパラメーターが、オイラにとっては模型の塗装みたいで直感的だった。プログラミングを習得する題材としてちょうどよかったな。
PBR Shader
現在多くのDCCツールでデファクトスタンダードとなっている通称PBR Shaderと呼ばれる反射モデルは、2012年にDisneyが発表したDisney Principled BRDFがベース。
物理モデルBRDFでは、物体の質感を以下の要素で定義する↓
- Albedo (反射比率)
- Metalness (金属か誘導体か)
- Roughness (表面の粗さ)
- IOR (屈折率)
Disney Principled BRDFは物理モデルをベースに、アーティストが直感的に質感を調整できるようパラメーターが設計されている。それまでDCCツールで主流だったLambertやPhongといった推論モデルに対して、物理モデルを裏付けとしたShaderだからPBR(Physically Based Rendering) Shaderと呼ばれるわけですね。
追記:ご指摘いただいたので補足。Lambertを推論モデルに括るのは雑でした。
ここで言いたかったのはLambert反射の定義ではなく、当時のDCCツール(というかMaya)に搭載されていたLambertマテリアルの話。
DCCツール、というか多くのCGプログラムでLambertは実装が省略されていて、エネルギー保存が成立していなかった。定義に従ってLambert Shaderを書き直してみたことがある↓

2015年、Disney Principled BRDFをさらに発展させて、BRDF(反射)だけでなくBTDF(屈折・透過)も合わせたBSDFモデルが発表され、現在に至る。

BlenderデフォルトマテリアルのPrincipled BSDFもDisney Principled BRDFがベース↓
各パラメータの解説はこちらの記事が詳しい↓
http://bluebirdofoz.hatenablog.com/entry/2019/10/05/091604
ここ数年はSIGGRAPHでも毎年Physically Based Shading in Theory and Practiceのコースが設けられている。
今年のコースのスライド↓
https://blog.selfshadow.com/publications/s2020-shading-course/
結局、スライドだけでなくセッション動画も公開されましたね↓
関連記事
ラクガキの立体化 1年半ぶりの続き
ZBrushでゴジラ2001を作ってみる 頭の概形作り
書籍『The Art of Mystical Beasts』...
CGのためのディープラーニング
Composition Rendering:Blenderに...
ゴジラ(2014)のディティール制作の舞台裏
ラクガキの立体化 反省
オープンソースの物理ベースレンダラ『Mitsuba』をMay...
アニゴジ関連情報
ZBrushの練習 手のモデリング
ジュラシック・パークの続編『ジュラシック・ワールド』
3Dスキャンしたテクスチャから照明を除去するUnityツール...
MB-Lab:Blenderの人体モデリングアドオン
PythonでMayaのShapeノードプラグインを作る
書籍『メイキング・オブ・ピクサー 創造力をつくった人々』を読...
ZBrushでアヴァン・ガメラを作ってみる 甲羅のバランス調...
ZBrushでアヴァン・ガメラを作ってみる 全体のバランス調...
ZBrushでカスタムUIを設定する
ZBrushで作った3Dモデルを立体視で確認できるVRアプリ...
タマムシっぽい質感
ZBrushでゴジラ2001を作ってみる 身体のバランスを探...
ZBrushでアヴァン・ガメラを作ってみる 爪とトゲを追加
TensorFlowでCGを微分できる『TensorFlow...
映画『シン・ウルトラマン』 メイキング記事まとめ
Unity ARKitプラグインサンプルのチュートリアルを読...
Raytracing Wiki
『スター・ウォーズ 最後のジェダイ』のVFXブレイクダウン ...
Phongの表現力パネェ 材質別のPhong Shader用...
映画『ジュラシック・ワールド/炎の王国』のVFXブレイクダウ...
Open Shading Language (OSL)
ZScript
BlenderのGeometry Nodeで遊ぶ
ZBrushでアヴァン・ガメラを作ってみる 下半身のバランス...
LuxCoreRender:オープンソースの物理ベースレンダ...
Mitsuba 3:オープンソースの研究向けレンダラ
NeRF (Neural Radiance Fields):...
Iridescence:プロトタイピング向け軽量3D可視化ラ...
『PIXARのひみつ展』に行ってきた
プロシージャル手法に特化した本が出てるみたい(まだ買わないけ...
ZBrushでアヴァン・ガメラを作ってみる 腕の作り込み
MetaHumanの頭部をBlenderで編集できるアドオン
SculptrisとBlenderで作ったGodzilla ...



コメント