.wp-block-jetpack-rating-star span.screen-reader-text { border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; word-wrap: normal; }

サイトアイコン NegativeMindException

Physically Based Rendering

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

リアルタイムレンダリング 第4版 (Real Time Rendering Fourth Edition 日本語版)

画像認識もCGも、リアルタイム化を目指す際の考え方は共通点が多いと最近感じる。
極力ユースケースを絞って重い処理はなるべく事前計算へ追いやり、キャッシュをフル活用してリッチな処理を近似する。実行時の自由度と処理負荷のバランスを調整していく。。
応答のリアルタイム性を追求するとどんなジャンルでも考え方は似通ってくるのかな。

レンダラやGPUアーキテクチャの話もあるけど、基本はやっぱりBRDF(反射)なので、とりあえずミクロなスケールでShaderの話からキャッチアップして行こう。

今月のCG WORLDはPBR (Physically Based Rendering)特集だったね。





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では、物体の質感を以下の要素で定義する↓

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モデルが発表され、現在に至る。
BSDF: (Bidirectional scattering distribution function)
BSDF: Bidirectional Scattering Distribution Function (双方向散乱分布関数) = BRDF: Bidirectional Reflectance Distribution Function...


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/

結局、スライドだけでなくセッション動画も公開されましたね↓



スポンサーリンク

関連記事

ZBrushでアヴァン・ガメラを作ってみる 壊れたデータの救出

「ベンジャミン·バトン数奇な人生」でどうやってCGの顔を作ったのか

フォトンの放射から格納までを可視化した動画

Kaolin:3Dディープラーニング用のPyTorchライブラリ

ZBrushでアヴァン・ガメラを作ってみる 頭頂部と首周りを作り込む

布のモデリング

MRenderUtil::raytrace

Iridescence:プロトタイピング向け軽量3D可視化ライブラリ

Unreal Engineの薄い本

中学3年生が制作した短編映像作品『2045』

Unite 2014の動画

HD画質の無駄遣い その2

色んな三面図があるサイト

OpenMesh:オープンソースの3Dメッシュデータライブラリ

MeshLab:3Dオブジェクトの確認・変換に便利なフリーウェア

Maya 2015から標準搭載されたMILA

UnityでShaderの入力パラメータとして行列を渡す

ZBrushでアヴァン・ガメラを作ってみる 下アゴと頭部を作り込む

adskShaderSDK

ZBrushでアヴァン・ガメラを作ってみる 下アゴの付け根を修正

Digital Emily Project:人間の顔をそっくりそのままCGで復元する

参考になりそうなサイト

3DCG Meetup #4に行ってきた

Mixamo:人型3Dキャラクターアニメーション制作サービス

ZBrushで作った3Dモデルを立体視で確認できるVRアプリを作る

実写と実写の合成時の色の馴染ませテクニック

ZBrushのTranspose Masterでポーズを付ける

『スター・ウォーズ 最後のジェダイ』のVFXブレイクダウン まとめ

ニンテンドー3DSのGPU PICA200

サンプルコードにも間違いはある?

Vancouver Film Schoolのデモリール

ZBrushでアヴァン・ガメラを作ってみる 歯を配置

ZBrush キャラクター&クリーチャー

ZBrushでアヴァン・ガメラを作ってみる 脚のポーズ調整

ZBrushでアヴァン・ガメラを作ってみる 頭頂部の作り込み・舌の追加

Open Shading Language (OSL)

CGWORLD CHANNEL 第21回ニコ生配信は『シン・ゴジラ』メイキングスペシャル!

Phongの表現力パネェ 材質別のPhong Shader用パラメータ一覧

BlenderProc:Blenderで機械学習用の画像データを生成するPythonツール

Adobe Photoshop CS4 Extendedの3Dモデル編集機能

HD画質の無駄遣い

UnityのGlobal Illumination

モバイルバージョンを終了