kugi's notebook

やったこと、思ったことなどつらつらと書きます

Mitsuba 2 導入(macOS Catalina)

はじめに

以前macOSでのMitsuba Renderer導入についてまとめました。

kugi-masa.hatenablog.com

今回は新しくなったMistuba 2の導入についてです。

♧Mitsuba 2♧

リリースノートを見ると2020年3月3日にMitsuba 2.0.0がリリースされたようです。

3月3日→♧月♧日

狙った日付だったのでしょうか...?👀

SIGGRAPH Asia 2019で論文としても発表されています。

rgl.epfl.ch

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).

今回からかなり見やすいドキュメントも用意されているので、もしかしたら導入ブログは不要かもしれません💦

が、自分も記録として残しておきたいので早速やっていきましょう。

mitsuba2.readthedocs.io

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オブションをつけることで他のプロジェクトの連携までを管理してくれるためセットアップが楽になるとのこと

git-scm.com

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.confenableのところでバリアントが指定されています。

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

コンパイル

macOS では以下がインストールされている必要があります。

また、Pythonについてもversion 3.6以上が必要です。 macOSのデフォルトのPythonversion 2.7.16でした。(2020/07/28時点)

$ which python
/usr/bin/python
$ python --version
Python 2.7.16

このままではコンパイルが通らないので、Python3をデフォルトにします。

以下の記事がとても参考になりました!!

opensource.com

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)

ここではまだ、macOSデフォルトのPythonです。

$ 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/

f:id:kugi_masa:20200728170022p:plain
金のドラゴン

まとめ

今回はmacOSにおけるMitsuba2の導入をしてみました。

かなり長くなってしまいましたね...

冒頭にもあるようにドキュメントが整っているのでそちらも是非!!

やったこと

  • mistuba2をfork
  • Python3をデフォルトに設定
  • mitsuba2をコンパイルして動かしてみた

わかったこと

  • 導入は前のバージョンよりも遥かに楽
  • ドキュメントが素晴らしい

次やりたいこと

  • いろんなシーンでレンダリングしてみたい
  • 実際に中身をいじってみる