オープンソースの汎用レンダラ『Mitsuba 2』

5年前にオープンソースの物理ベースレンダラ「Mitsuba」でちょっと遊んでみたことがあった↓



Siggraph Asia 2019でMitsuba 2が発表されたらしい↓

Mitsuba 2: A Retargetable Forward and Inverse Renderer



現代のレンダリングシステムは、増大し続ける様々な要求に直面しています:
写実性を追求するための物理ベーステクニックでは、スペクトル構成や偏光など光の複雑な特性をますます考慮しなければなりません。
レンダリング時間を短縮するためのベクトル化レンダラでは、CPU、GPU命令レベルで一貫した並列処理が必要です。
Differentiable Rendering(微分可能なレンダリング)アルゴリズムでは、目的関数を最適化するためにシミュレーションの微分値を伝播させる必要があります。(例:参照画像からシーンを再構築するなど)

これらの多様なユースケースに対応するのは困難であり、多くの専用システムが別々に開発されてきました。困難な理由は、これらの複雑な機能を既存のレンダラーに後付けしようとするとエラーが発生したり、基本データ構造、コンポーネント間のインターフェイス、その実装(つまり全て)に侵入的変換を伴うからです。

そこで、前述した様々な用途に対応可能な汎用的なレンダラ Mituba 2を提案します。
Mitsuba 2は最新のC ++で実装されており、テンプレートメタプログラミングを活用し、型の置き換えやコンポーネント(BSDF、ボリューム、エミッター、レンダリングアルゴリズムなど)の制御フローを計測します。そしてコンパイル時に、算術、データ構造、関数ディスパッチを自動的に変換し、汎用アルゴリズムを手作業による再設計無しでそれぞれに効率的な実装に変換します。
変換可能なのは、色の表現の変更、ライトパスのバンドルで動作する「ワイド」レンダラーの生成、GPUで実行される計算カーネルを作成するジャストインタイムコンパイル、自動微分のフォワード/リバースモードです。これらの変換は連鎖させることができ、 単一の汎用実装からアルゴリズムを派生させてさらに充実させることができます。


スポンサーリンク

Mitsuba 2のバイナリやコード自体はまだ公開されていないみたい。


スポンサーリンク


Mitsuba 2のプロジェクトページが公開された直後に皆さん反応されていてすごいですね↓
https://qiita.com/syoyo/items/1afb885092d1768c66f8
http://masafumi.cocolog-nifty.com/masafumis_diary/2019/09/post-1677e3.html

だいぶレンダラのパラダイムも変わってきたな。CGもあらゆるプロセスがDifferentiable(微分可能)になっていく感じがする。
Siggraph Asia 2019ではDifferentiable Renderingというセッションが設けられているみたい。

個人的に、2019年はCG関連のディープラーニング(というか微分可能)の動向が熱かった。
TensorFlowでCGを微分できる『TensorFlow Graphics』
Google I/Oでの発表に合わせて、TensorFlowのネットワークでCG Rendererを扱うためのライブラリ TensorFlow Graphicsが公開された。最近の3DCG系のディープラーニングでよく聞く「微分可能なRend...

CGのためのディープラーニング
もう半年前のことですが、昨年12月に東京国際フォーラムで開催されたSiggraph Asia 2018 Tokyoで聴講したCourse CreativeAI:Deep Learning for Graphicsの復習を(今頃)しておこうか...

3Dディープラーニング用のPyTorchライブラリ『Kaolin』
NVIDIAから3D系のディープラーニング研究のためのPyTorchライブラリが公開された。まだベータ版だから、これからどんどん充実していくんでしょうね。読み方はカオリンで良いのかな?(なんかかわいい)KaolinKaol...


スポンサーリンク

関連記事

OpenCV3.3.0でsfmモジュールのビルドに成功!
Pythonのソースコードに特化した検索エンジン『Nullege』
トランスフォーマーロストエイジのメイキング
ZBrush 2018での作業環境を整える
Google App EngineでWordPress
Mean Stack開発の最初の一歩
BSDF: (Bidirectional scattering distribution funct...
Verilog HDL
Houdiniのライセンスの種類
adskShaderSDK
オープンソースの取引プラットフォーム
ZBrushで仮面ライダー3号を造る 仮面編 PolyGroupを分割する
ZBrushで仮面ライダー3号を造る 仮面編 PolyGroup作成に再挑戦
SIGGRAPH Asia
GoB:ZBrushとBlenderを連携させるアドオン
オープンソースの顔の動作解析ツールキット『OpenFace』
マジョーラ
素敵なパーティクル
ZBrushでリメッシュとディティールの転送
MythTV:Linuxでテレビの視聴・録画ができるオープンソースプロジェクト
Boost オープンソースライブラリ
ZBrushで基本となるブラシ
OpenCVの三角測量関数『cv::triangulatepoints』
SculptrisとBlenderで作ったGodzilla 2014 (Fan Made)
3Dボリュームデータ処理ライブラリ『OpenVDB』
OpenCV 3.3.0 contribのsfmモジュールのサンプルを動かしてみる
Mayaのレンダリング アトリビュート
Phongの表現力パネェ 材質別のPhong Shader用パラメータ一覧
ZBrush4新機能ハイライト 3DCG CAMP 2010
Twitter APIのPythonラッパー『python-twitter』
画像からカメラの3次元位置・姿勢を推定するライブラリ『OpenGV』
オープンソースのプリント基板設計ツール『KiCad』
UnityからROSを利用できる『ROS#』
ZBrushで仮面ライダー3号を造る ベース編
OpenCVで顔のモーフィングを実装する
Maya LTのQuick Rigを試す
JavaによるCGプログラミング入門サイト (日本語)
Raspberry Pi 2のGPIOピン配置
Google Chromecast
オープンソースの物理ベースGIレンダラ『appleseed』
Konashiを買った
OpenCVベースのコンパクトなARライブラリ『ArUco』

コメント