OpenVDBのビルドメモ

OpenVDBはボリュームデータのためのフォーマットです.開発元からvdbを扱うツール,ライブラリも公開されているので,今回はそれらをビルドする方法を簡単にまとめておきます.
環境は以下の通りです.

準備

以下のリンクからソース(openvdb-4.0.0.tar.gz)を入手します.
Release v4.0.0 · dreamworksanimation/openvdb · GitHub

OpenVDBには多くの依存ライブラリがありますが,Houdiniがインストールされていると,面倒な依存ライブラリのインストールが必要ありません.OpenVDB側としても,Houdiniをインストールして環境を整えるのが推奨のようです.HoudiniにはApprentice版と呼ばれる無料体験版があり,ほぼすべての機能を試すことができます.これにはHDK(Houdini Development Kit)が付属しており,ここにOpenVDBの殆どの依存ライブラリが含まれています.ユーザー登録をすませたら簡単にインストールすることができます.僕はHoudini15.5をインストールしました.

Makefileの編集

ダウンロードしたソースファイルを解凍したら,openvdb-4.0.0/openvdb/Makefileを編集してビルドを行います.Makefileにも詳しいビルド方法が書いてあるので目を通すと良いでしょう.ちなみにgitリポジトリの方ではCMake対応もされたようですが,僕はうまく使えませんでした.

まず,インストールディレクトリを設定します.デフォルトでは/tmp/OpenVDBです.

#line 84
DESTDIR := /usr/local/OpenVDB

Houdiniに含まれていないライブラリにcppunit, log4cplusがあります.恐らくテスト系のライブラリですが,今回は必要なさそうなのでMakefileに従って無効化します.もしも必要であれば,該当ライブラリをインストール後に,INCL_DIRとLIB_DIRを設定してやります.

#line 129
CPPUNIT_INCL_DIR := #rel/map/generic-2013.22/sys_include
#line 136
LOG4CPLUS_INCL_DIR := #/rel/folio/log4cplus/log4cplus-1.0.3-latest/sys_include

また,openvdb_viewerが必要な場合はGLFWが必要となります.今回は必要ないのでこれも無効化します.

#line 143
GLFW_INCL_DIR := #/rel/third_party/glfw/glfw-3.0.1/include
python module

python moduleを使うにはBoost.pythonが必要です.また,numpyが必要な機能を使う場合にはnumpyもインストールする必要があります.libboost1.55-devとnumpyをaptでインストールし,ヘッダファイルとライブラリへのパスを設定してやります.Houdiniに含まれるPythonは2.6みたいですが,libboostやnumpyは2.7のものでも大丈夫なようです.
以下は僕の環境における設定です.

#line 162
BOOST_PYTHON_LIB_DIR := /usr/lib/x86_64-linux-gnu/
BOOST_PYTHON_LIB := -lboost_python-py27
# The directory containing arrayobject.h
# (leave blank if NumPy is unavailable)
NUMPY_INCL_DIR := /usr/lib/python2.7/dist-packages/numpy/core/include/numpy

もしもpythonモジュールが必要なければ,以下の部分をコメントアウトします.

PYTHON_VERSION := #2.6
その他

epydocやdoxygenがなければこれも無効化しておきます.

#line 169
EPYDOC := #/rel/map/generic_default-2014.24.237/bin/epydoc
#line 180
DOXYGEN := #doxygen

ビルド

Houdiniがインストールされているフォルダへ移動し,houdini_setupをsourceで読み込むと,HDK関連のパスが設定されます.その後,OpenVDBのフォルダへ移動し,makeを走らせます.

cd path/to/houdini
source houdini_setup
cd path/to/openvdb
make -j4
sudo make install

うまくビルドされれば,vdb_printとvdb_renderというバイナリとライブラリができているはずです.
以下のリンクからサンプルの.vdbファイルを入手できます.
OpenVDB - Download
以下の画像はbunny_cloud.vdbをvdb_renderでレンダリングしたものです.
f:id:soma_arc:20170117155917j:plain
ライブラリの使い方に関しては以下のページで簡単なサンプルを見ることができます.

Houdiniをインストールしない方法

もちろん,HoudiniをインストールせずにOpenVDBをビルドすることもできます.libboost(1.55あたりで大丈夫だと思います), OpenEXR, TBB, pythonpythonモジュールが必要であれば)を用意し,ヘッダファイルとライブラリへのパスを設定します.あとはCONCURRENT_MALLOC_LIBをtbbを使うように設定すればビルドできるはずです.

#CONCURRENT_MALLOC_LIB := -ljemalloc
CONCURRENT_MALLOC_LIB := -ltbbmalloc_proxy -ltbbmalloc

一応全部aptで揃うみたいなので,面倒なのはパスの設定ですね.

以上となります.