Mitsuba2をビルドする (Windows編)

2020/03/04にMitsuba2がリリースされました。
Mitsuba rendererからの大きな変更点は以下のとおりです。

今回は、Mitsuba2をビルドし、実際にシーンファイルをレンダリングします。
次に書く記事では、微分可能レンダリングを紹介する予定です。(多分)

公式のドキュメント

環境構築

Visual Studioのインストール

リンクからVisual Studio 2019をインストールします。
https://visualstudio.microsoft.com/ja/downloads/


C++によるデスクトップ開発」の項目にチェックを入れる。
f:id:Dogy:20200402164939p:plain

gitのインストール

リンクからGitをインストールします。
https://visualstudio.microsoft.com/ja/downloads/

Pythonのインストール

リンクからGitをインストールします。(minicondaを使っても良さそう、むしろそっちを使うべきかも)
https://www.python.org/downloads/release/python-375/

64bit版をインストールする必要があるので、Windows x86-64 executable installerをダウンロードします。
f:id:Dogy:20200402165434p:plain

Pythonのバージョンは公式で動作確認がされている3.75を使うのが良いと思います。
3.8.2を用いて、Pythonバインディングをするときにエラーが出ました。
具体的には、mitsubaモジュールのパスを通して、pythonにimport mitsubaしても、core_ext・render_extを読み込めない、DLLがロードできないとエラーが出ます。

この時、Add Python 37 to Pathのチェックマークを押し忘れないようお気をつけください。
押し忘れたら以下の記事を参考に環境変数Pythonのパスを追加してください。
https://www.javadrive.jp/python/install/index3.html

Cmakeのインストール

リンクからcmake-3.17.0-win64-x64.msiをダウンロードし、インストールします。
https://cmake.org/download/

ソースコードのクローン

公式のドキュメントを参考にソースコードをクローンします。
コマンドプロンプトを起動し、作業したいディレクトリに移動します。
以下のコマンドを入力します。

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

参考:
コマンドプロンプトを起動する | コマンドプロンプトの使い方
cdコマンドの使い方を簡単にご紹介【Windowsコマンド集】

ビルド

クローンしたmitsubaのルートディレクトリに移動します。
以下のコマンドを入力します。

mkdir build
cd build
cmake .. -G "Visual Studio 16 2019" -A x64
※ build作らずルートでやる場合はこっち cmake -G "Visual Studio 16 2019" -A x64

Generating doneと出れば成功です。

次にディレクトリ内にできた、mitsuba.slnを起動し、MitsubaをVisual Studio 2019で開きます。
Visual Studio 2019上でビルドします。(数分かかる)

========== ビルド: 166 正常終了、0 失敗、0 更新不要、3 スキップ ==========

という感じで出力されればビルド完了です。

コーネルボックスの描画テスト

今回は、コーネルボックスレンダリングします。
ビルドまで終わっていれば、mitsuba>dist>mitsuba.exeが生まれています。
レンダリングする時は、以下のコマンドを入力することでレンダリングできます。

mitsuba\dist\mitsuba.exe scenefile.xml

シーンファイルの準備

コーネルボックスのシーンファイル(.xml)とオブジェクトのファイル(.obj)を準備します。
以下の共有フォルダからcbox.zipをダウンロードします。
drive.google.com

cbox.zipを解凍します。

mitsubaの直下にsceneフォルダを作ります。
sceneフォルダに解凍したcboxフォルダを置きます。

レンダリング

以下のコマンドを入力するとレンダリングが始まります。

dist\mitsuba.exe scene\cbox\cbox.xml

レンダリングが終われば、cboxフォルダ内にcbox.exrが生まれているはずです。
f:id:Dogy:20200402175203p:plain

シーンファイルの作り方

お作法

シーンファイルの作り方は、公式ドキュメントを見ると良いと思います。(今回は触れません)
Plugin reference

旧バージョンのシーンファイルを使いまわす

Mitsuba1で使っていたシーンファイルを使いまわしたいという方は、
以前のバージョンのシーンファイルを実行時にコマンドライン引数に設定すると、自動でMitsuba2のシーンファイルに書き換えてくれるようです。

古いバージョンのシーンファイル

<scene version="0.6.0">

公式ドキュメントより

All of these changes can be automated, and Mitsuba performs them internally when it detects a scene with a version number lower than 2.0.0. Invoke the mitsuba binary with the -u parameter if you would like it to write the updated scene description back to disk.

旧バージョンのシーンファイルを書き換える

ご自身で、Mitsuba1のシーンファイルを書き換えたい方は、公式ドキュメントを参考にすると良いと思います。
Differences to Mitsuba 0.6
具体的には、

    <float name="focusDistance" value="1000"/>
    <transform name="toWorld">
        <translate x="0" y="0" z="-100"/>

というコードを

    <float name="focus_distance" value="1000"/>
    <transform name="to_world">
        <translate value="0, 0, -100"/>

という風に書く必要があります。

Windowsでmitsubaをコンパイルする

動機

法線分布関数(NDF)にGGXなどのモデルではなく計測してきたデータを入れたかったので、windowsにmitsubaのコンパイル環境を作りました。

 

Visual Studio 2017版

Visual Studio 2017(v15)のインストール

https://docs.microsoft.com/ja-jp/visualstudio/releasenotes/vs2017-relnotes

※後の工程で、Sconsに、Visual Studio 2017(v15)を入れてるのに、Visual Studio 2015(v14)が入っているよと言われてしまうバグ?がある。これが出たらVisual Studio 2010でやるといいと思います。(Visual Studio 2013はインストールでエラーがたくさん出ました)

Python2.7のインストール(パス通す)

https://www.python.org/downloads/windows/

Scons2.5.1のインストール

(v3.1.2でも良さそう )
pip install scons

また、

pip2 install scons

もしくは、

https://sourceforge.net/projects/scons/files/scons/2.5.1/

からscons-2.5.1-setup.exeをダウンロードして起動

Qtのインストール(パス通す)

https://www.qt.io/jp/download_short

Mitsubaのダウンロード

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

dependenciesのダウンロード

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

ファイル操作

mitsuba/build/config-win64-msvc2017.pyをrootにコピー

config.pyに改名

 

ダウンロードしてきたdependenciesをmitsubaのrootに置く

 

コマンドプロンプトを開く

> cd mitsuba

> scons

うまくいけば

> scons: done building targets.

と出る

そしてmitsuba/dist/mitsuba.exeが生まれている

 

試しにコーネルボックスレンダリング

コーネルボックスのシーンファイルxmlをダウンロードする

http://www.mitsuba-renderer.org/download.html

cbox.xml

<scene version="0.5.0">

<scene version="0.6.0">

に変更する

> mitsuba.exe cbox.xml

でexrファイルができる

f:id:Dogy:20191211161901p:plain

[追記]

久しぶりにmitsuba.exeでレンダリングしようとすると以下のエラーが出た。

This application failed to start because it could not to find or load the Qt platform plugin “windows” in””. Reinstalling the application may fix this problem.

 

こちらの記事を参考に解決をしました。

https://answers.microsoft.com/ja-jp/windows/forum/windows_10-files-winpc/%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3%E7%AB%8B/18047d64-e3db-4c68-8e2a-ad1a7ff9c2aa

手順としては、

windows(c)→ ユーザー→ ユーザー名→ AppDate→ Local→ Microsoft→ Onedrive→ Update
Updateを開いてOneDriveSetUp.exeをダブルクリックする
とのことでした。

手順を経た後、コマンドプロンプトを再起動し、

> mitsuba.exe cbox.xml

を実行すると無事レンダリングできました。

 

Visual Studio 2010版

Visual Studio 2010(v10)のインストール

https://visualstudio.microsoft.com/ja/vs/older-downloads/

Python2.7のインストール(パス通す)

https://www.python.org/downloads/windows/

Sconsのインストール

pip2 install scons

Qtのインストール(パス通す)

https://www.qt.io/jp/download_short

Mitsubaのダウンロード

https://www.mitsuba-renderer.org/download.html

dependenciesのダウンロード

https://www.mitsuba-renderer.org/repos/

ファイル操作

mitsuba/build/config-win64-msvc2010.pyをrootにコピー

config.pyに改名

 

ダウンロードしてきたdependencies_windowsをdependenciesにRenameしてmitsubaのrootに置く

 

コマンドプロンプトを開く

> cd mitsuba

> scons

うまくいけば

> scons: done building targets.

と出る

そしてmitsuba/dist/mitsuba.exeが生まれている

試しにコーネルボックスレンダリング

コーネルボックスのシーンファイルxmlをダウンロードする

http://www.mitsuba-renderer.org/download.html

cbox.xmlのシーンバージョンが

<scene version="0.5.0">

であることを確認

 

> mitsuba.exe cbox.xml

でexrファイルができる

f:id:Dogy:20191211161901p:plain