はじめに
以前macOSでのMitsuba Renderer導入についてまとめました。
今回は新しくなったMistuba 2の導入についてです。
♧Mitsuba 2♧
リリースノートを見ると2020年3月3日にMitsuba 2.0.0
がリリースされたようです。
3月3日→♧月♧日
狙った日付だったのでしょうか...?👀
SIGGRAPH Asia 2019で論文としても発表されています。
Merlin Nimier-David, Delio Vicini, Tizian Zeltner, and Wenzel Jakob. 2019. Mitsuba 2: A Retargetable Forward and Inverse Renderer. In Transactions on Graphics (Proceedings of SIGGRAPH Asia) 38(6).
今回からかなり見やすいドキュメントも用意されているので、もしかしたら導入ブログは不要かもしれません💦
が、自分も記録として残しておきたいので早速やっていきましょう。
GitHubからfork
ドキュメントでは本家のmitsuba-renderer/mitsuba2
リポジトリからclone
するような手順になっていますが、私は本家に影響を及ぼしたくないのでfork🍴します。
ではforkしたリポジトリをローカルに持ってきたいと思います。
(私のようにforkする場合は[yourname]
を変更してください)
$ git clone --recursive https://github.com/[yourname]/mitsuba2.git
ただ、forkしてしまうと本家にコミットが追加されてもfork先には変更がないので、ローカルに適宜本家からpullしてfork先に反映するのが良いようです。
以下で本家の情報を取ってきましょう。
$(master) git remote add upstream https://github.com/mitsuba-renderer/mitsuba2 $(master) git fetch upstream $(master) git merge upstream/master
しかし、このままでは最新版に追従できていません。 Mitsuba 2ではgitのSubmodulesという機能を使っています。
--recursive
オブションをつけることで他のプロジェクトの連携までを管理してくれるためセットアップが楽になるとのこと
Submodulesをつかっているため通常のpullコマンドのみではダメみたいです。
ドキュメントにしたがって以下のpullall
コマンドを追加しましょう
$(master) git config --global alias.pullall '!f(){ git pull "$@" && git submodule update --init --recursive; }; f' $(master) git pullall
pullall
コマンドを実行することでfork
したリモートリポジトリのmaster
ブランチも
This branch is even with mitsuba-renderer:master.
になっているはずです。 (もしかしたらpushが必要だったかも...)
バリアント(Choosing Variants)
Mitsuba2ではビルドする前にRGB、スペクトル、偏光レンダリングなど、どのようなレンダラーとしてビルドするかを指定する必要があるそうです。
その種類はなんと36通り!! 以下のようにRGB、スペクトルなどを選んで組み合わせることができるようです。
- Computational backend
scalar
packet
gpu
gpu_autodiff
- Color representation
mono
rgb
spectral
- Polarization
polarized
- Percision
double
まずは以下のコマンドで設定ファイルをmistubaのルートディレクトリにコピーしてきましょう。
$ pwd <your mistuba root directory> $ cp resources/mitsuba.conf.template mistuba.conf
コピーしたmistuba.conf
のenableのところでバリアントが指定されています。
"enabled": [ # The "scalar_rgb" variant *must* be included at the moment. "scalar_rgb", "scalar_spectral" ],
コンパイル
macOS では以下がインストールされている必要があります。
また、Pythonについてもversion 3.6以上が必要です。 macOSのデフォルトのPythonはversion 2.7.16でした。(2020/07/28時点)
$ which python /usr/bin/python $ python --version Python 2.7.16
このままではコンパイルが通らないので、Python3をデフォルトにします。
以下の記事がとても参考になりました!!
pyenvを使ってPython3をデフォルトにします。今回はmistuba2のドキュメントに合わせてversion 3.7.3をインストールします。
$ brew install pyenv $ pyenv install 3.7.3 $ pyenv global 3.7.3 $ pyenv version 3.7.3 (set by /[Your Directory]/.pyenv/version)
$ which python /usr/bin/python
なのでパスを追加しましょう。macOS Catalinaからデフォルトのシェルはzshになったらしいので以下を.zshrc
に追加します。
(詳細はコチラ)
if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi
新しいターミナルを立ち上げて、最後にもう一度確認をしてみましょう!!
$ which python /[Your Directory]/.pyenv/shims/python $ python --version Python 3.7.3
ヤッター!!!🐍 🐍 🐍
CmakeやNinjaについては、それぞれhomebrewでインストールしました。
$ brew install cmake $ brew install ninja (--- If you haven't installed the xcode command line tool ---) $ xcode-select --install
では、ビルド用のディレクトリを作成してコンパイルしましょう。
(Python3をデフォルトにする前に以下を実行してしまった場合は一度build
ディレクトリを削除しましょう)
mkdir build cd build cmake -GNinja .. ninja
mitsuba2 を動かしてみる♧
mitsuba2のルートディレクトリにあるsetpath.sh
を実行することで、mitsuba
コマンドが使用できるようになります。
$ pwd <your mistuba root directory> $ source setpath.sh $ mitsuba scene.xml
mistubaレンダラーはシーンファイルにxml
ファイルを使用しています。
コチラのサンプルを参考に金色のドラゴンをレンダリングしてみました。 Stanford Dragon reference
http://graphics.stanford.edu/data/3Dscanrep/
まとめ
今回はmacOSにおけるMitsuba2の導入をしてみました。
かなり長くなってしまいましたね...
冒頭にもあるようにドキュメントが整っているのでそちらも是非!!
やったこと
- mistuba2をfork
- Python3をデフォルトに設定
- mitsuba2をコンパイルして動かしてみた
わかったこと
- 導入は前のバージョンよりも遥かに楽
- ドキュメントが素晴らしい
次やりたいこと
- いろんなシーンでレンダリングしてみたい
- 実際に中身をいじってみる