60
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

最新物理ベースレンダラー Mitsuba2を触ってみる (1) 導入編

Last updated at Posted at 2020-03-08

Mitsuba2とは

アカデミック向けのフリーの物理ベースレンダラー。レイトレーシングはもちろん必要十分な機能があり、更にソースが公開されていることもあり、前身のMitsuba(0.6)は長い期間、主に研究用途で使われてきた。そして様々な新機能が追加されパフォーマンスが改良されたMitsuba2が、つい先日Publicとなった。

https://github.com/mitsuba-renderer/mitsuba2

他に書いた関連記事です。

Mitsuba2の主な新機能

mitsuba.png

  1. 微分可能(differentiable)なレンダリングが可能
  2. 偏光レンダリングが可能
  3. CPUレンダリング時のSIMD演算可能

面白いのが1と2です。次の記事では1の微分可能レンダリングと2の偏光レンダリングを触ります。
今回は基本のセットアップからレンダリングテストまで書きます。

インストール手順(Windows)

※2020年3月10日時点での情報です。
ここではWindowsの手順だけ述べますがMacOSやLinuxでもビルド可能です、公式の手順を参照してください。
https://mitsuba2.readthedocs.io/en/latest/src/getting_started/compiling/
(ちなみにMacOSは微分可能・GPUレンダリング未対応なのでそもそもおススメしないです。未対応の理由は端的に言うとNVIDIAとAppleが喧嘩してるから。)

それぞれPATHを通してください。

Git Clone

公式のGitHubリポジトリは以下です。
https://github.com/mitsuba-renderer/mitsuba2

git clone --recursive https://github.com/mitsuba-renderer/mitsuba2.git

外部ライブラリが無いとビルド時に怒られるので必ず--recursiveオプションをつけてください。

バリアント(レンダリング設定)の選択

(普通のレンダリングだけをやりたい人は、このステップは何もしなくてよいです。飛ばしてください)
次に、ビルドするレンダラーのレンダリング設定(=バリアント)を指定します。新機能を使う場合はこのステップが一番忘れやすいので注意です。

Mitsuba2では、開発者が求める必要最低限の機能、最小構成でビルドするために39種類ものバリアントが用意されています。例えばトレースする光線1つとっても「単色」「RGB」「スペクトル」「偏光」まで様々な要素がありますが、全て必要とは限りません。なので、ビルド時にそれらの構成を指定することで、必要十分の機能でビルドし、コンパイル時間の削減・プロジェクト規模の削減などを行います。

Mitsuba2のバリアントは、mitsuba.confで指定されます。まずデフォルトのテンプレートをルートディレクトリにコピーします。

cp resources/mitsuba.conf.template mitsuba.conf

次になんでも良いのでエディタでmitsuba.confを開き、ビルド構成の宣言を書き換えます。
デフォルトでは以下のようになっています(70行目あたり)。

"enabled": [
    # The "scalar_rgb" variant *must* be included at the moment.
    "scalar_rgb",
    "scalar_spectral"
],

新機能(微分可能、偏光レンダリング)をやりたい場合、下のように追加してください。

"enabled": [
    # The "scalar_rgb" variant *must* be included at the moment.
    "scalar_rgb",
    "scalar_spectral",
    "scalar_rgb_polarized",
    "gpu_autodiff_rgb"
],

"gpu_autodiff_rgb"はGPU環境依存が結構あるので、CMakeやビルド時にうまくいかない場合はコメントアウトして、一度他のバリアントで上手くいくか試すことをお勧めします。OptiXが見つからないよと怒られる場合はcmake時に-DMTS_OPTIX_PATH=""を指定し""の中にOptiXをインストールしたPATHを指定してください。
他にも、倍精度演算やSIMD演算等、様々なビルド構成がありますので、適時用途によって使い分けてください。
https://mitsuba2.readthedocs.io/en/latest/src/getting_started/variants/
上では4つのバリアントを指定していますが、必要ないものは適時消してください。指定するバリアントが多ければ多いほど比例してビルド時間が長くなります。自分の必要な構成だけにするのが理想です(ただし"scalar_rgb","scalar_spectral"はないとエラーが出る)。

コンパイル

CMakeでビルド構成を生成します。Pythonを自動で検出するので、Pythonがないとエラーが起きます。
そのままcmakeすると散らかるので、できればbuildディレクトリを作ってその中でやりましょう。

mkdir build
cd build
cmake .. -G "Visual Studio 16 2019" -A x64

生成された./build/mitsuba.slnをVisual Studio 2019で開きます。
ビルドモードをReleaseにして、ビルドを通常のように行います。

無事ビルドが完了すると./build/dist/mitsuba.exeと、実行ファイルが生成されます。

レンダリングテスト

mitsuba2のサンプルデータのリポジトリは以下になります。
https://github.com/mitsuba-renderer/mitsuba-data

git clone https://github.com/mitsuba-renderer/mitsuba-data.git

mitsuba_data/scenes/cboxをディレクトリごと、事前に生成した実行ファイルのディレクトリmitsuba2/build/dist/にコピーしてください。

mitsuba.exeにxml形式のシーンファイルを渡すことでレンダリングできます。
mitsuba2/build/dist/内で以下のように実行します。

./mitsuba.exe ./cbox/cbox-rgb.xml

レンダリングが終了したら、./cbox/cbox-rgb.exrというファイルが生成されています。これが最終レンダリング結果です。
exrは小数32bitx3ch形式のRGB画像です、Photoshopなどで開けます。VenetaビューアDJV等のフリーのソフトもあります。
以下のようなコーネルボックスの画像が生成されていたら成功です。
cbox_mitsuba2_2.png

実行オプション

mitsuba2のレンダリング実行時は様々なオプションが指定できます。
下記コマンドでオプションを確認できます。

./mitsuba.exe -h

特に重要なオプションは以下の2つです。

-m : 先に設定したバリアントのうちレンダリングモードになにを使うかを決める(RGB・偏光、微分可能など)
-D <key>: xmlシーンファイルに設定されている変数$keyにkeyを設定する

レンダリングモードの指定は偏光レンダリングを行う場合など新機能を使う場合には必須です。
シーンファイルへの値の代入は、例えばカメラを少しずつ動かしたい場合など、パラメータ変えて次々にレンダリングしたい場合には必須です(少なくとも外部から実行ファイルを叩く運用時には)。

まとめ

Mitsuba2のインストールから、レンダリングテストまでを行いました。
次回はPythonからMitsuba2を動かすやり方を紹介します。

その後は微分可能レンダリングや偏光レンダリングなど新機能の使い方を解説します。

以上です。

60
47
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
60
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?