Jet Framework のコンパイル2019年1月4日 | |
はじめにJet Framework のコンパイルについて。 環境Ubuntu 16.04 LTS Jet Framework のコンパイルダウンロード。 $ git clone https://github.com/doyubkim/fluid-engine-dev.git --recursive $ cd fluid-engine-dev Python API のインストール。 $ pip install -U . $ python src/examples/python_examples/smoke_example01.py C++ API のコンパイル。 $ mkdir build && cd build && cmake .. && make サンプルの実行。ffmpeg をインストールしておく。 $ sudo apt-get install ffmpeg 実行。 $ cd bin $ ./manual_tests --gtest_filter="ApicSolver2Tests.DamBreaking" $ python ../../scripts/render_manual_tests_output.py $ totem manual_tests_output/ApicSolver2/DamBreaking/data.\#point2.mp4 ![]() Mitsuba のコンパイルJet Framework のデモ は Mitsuba でレンダリングされている。 パッケージをダウンロードして展開。 $ wget https://www.mitsuba-renderer.org/repos/mitsuba/archive/tip.zip $ unzip tip.zip 必要なパッケージをインストール。 $ sudo apt-get install scons qt4-dev-tools libboost-all-dev libglewmx-dev libpcrecpp0 というのが必要だが、Ubuntu 16.04 LTS では存在しないので、古いパッケージを こちら からダウンロードしてインストールする。 $ sudo apt-get install ./libpcrecpp0_8.31-2ubuntu2.3_amd64.deb コンパイル。 $ cd mitsuba-af602c6fd98a/ $ cp build/config-linux-gcc.py config.py $ scons -j 6 cons: Reading SConscript files ... Using configuation file "/home/cfd/work2/fluid/mitsuba-af602c6fd98a/config.py" Checking for Qt 4.x... yes Checking for g++ ...yes Checking for C header file png.h... no libpng is missing (install libpng12-dev for PNG I/O support) Checking for C header file jpeglib.h... yes Checking for C++ header file ImfRgba.h... no OpenEXR is missing (install libopenexr-dev for OpenEXR I/O support) Checking for C++ header file xercesc/dom/DOMLSParser.hpp... no Xerces-C++ 3.x must be installed (install libxerces-c-dev)! いくつか警告やエラーが出るので、パッケージを追加インストール。 $ sudo apt-get install libpng12-dev libopenexr-dev libxerces-c-dev libeigen3-dev libfftw3-dev あらためてコンパイル。 $ scons -j 6 ... In file included from src/bsdfs/irawan.cpp:33:0: src/bsdfs/irawan.h:38:67: fatal error: boost/spirit/home/phoenix/bind/bind_member_variable.hpp: そのようなファイルやディレクトリはありません compilation terminated. scons: *** [build/release/bsdfs/irawan.os] Error 1 コードを修正。 src/bsdfs/irawan.h 33 //#if BOOST_VERSION >= 106000 34 #if BOOST_VERSION >= 105800 再度コンパイル。 src/integrators/misc/motion.cpp:471:7: required from here /usr/include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h:88:102: error: no match for ‘operator*=’ (operand types are ‘DScalar1<float, Eigen::Matrix<float, 1, 7> >’ and ‘const DScalar1<float, Eigen::Matrix<float, 1, 7> >’) _DEVICE_FUNC EIGEN_STRONG_INLINE void assignCoeff(DstScalar& a, const SrcScalar& b) const { a *= b; } ^ In file included from src/integrators/misc/motion.cpp:21:0: include/mitsuba/core/autodiff.h:252:19: note: candidate: DScalar1<_Scalar, _Gradient>& DScalar1<_Scalar, _Gradient>::operator*=(const Scalar&) [with _Scalar = float; _Gradient = Eigen::Matrix<float, 1, 7>; DScalar1<_Scalar, _Gradient>::Scalar = float] inline DScalar1& operator*=(const Scalar &v) { ^ include/mitsuba/core/autodiff.h:252:19: note: no known conversion for argument 1 from ‘const DScalar1<float, Eigen::Matrix<float, 1, 7> >’ to ‘const Scalar& {aka const float&}’ コードを追加 (以下の 258-262 行)。 include/mitsuba/core/autodiff.h 252 inline DScalar1& operator*=(const Scalar &v) { 253 value *= v; 254 grad *= v; 255 return *this; 256 } 257 258 inline DScalar1& operator*=(const DScalar1 &v) { 259 grad = v.grad * value + grad * v.value; 260 value *= v.value; 261 return *this; 262 } コンパイルされたものは dist の中にあるので、適当なところにインストール。 $ cp -r dist ~/opt/mitsuba-0.5.0 パスを通す。 ~/.bashrc export PATH=~/opt/mitsuba-0.5.0:$PATH export LD_LIBRARY_PATH=~/opt/mitsuba-0.5.0:$LD_LIBRARY_PATH 参考 デモの実行$ git clone https://github.com/doyubkim/fluid-engine-dev-demo.git --recursive $ cd fluid-engine-dev-demo $ mitsuba dam_breaking.xml ![]() | |
PENGUINITIS |