2018/05/16(水) [n年前の日記]
#2 [blender] LuxCoreRenderについて試してたけどなかなか厳しい
AMD A6-3500 + Linux Mint 18.3 (Ubuntu 16.04 ベース) + blender 2.79b + LuxCoreRender 2.0 を動かせないか試してたけどなかなか厳しい。
OpenCL版とやらが動くかなと思って導入してみたものの、libopencl.so が無いとか言われて、ならばその手のアレコレをインストールしたら動くのかと、sudo apt install mesa-opencl-icd を試したら、依存関係が壊れてるというメッセージが表示されて。
_package management - Installing mesa-opencl-icd in Ubuntu 16.04 - Ask Ubuntu
_Bug #1743018 “Unable to install mesa-opencl-icd because of unmet...” : Bugs : mesa package : Ubuntu
_Testing/EnableProposed - Ubuntu Wiki
xenial-proposed なる版のソレでは修正されているという話も見かけたけれど、Linux Mint 18.3 を使ってるせいか、導入できず。Linux Mint 18.3 って、Ubuntu 16.04ベースじゃなかったの? Ubuntu 16.04 じゃないとダメなのかな…。
そもそも、LuxCoreRender の issue を眺めると、どうも気になる話が。
_Unable to activate addon - Issue #114 - LuxCoreRender/BlendLuxCore
「システムの言語設定が英語以外の環境については知らねえよ。俺達そんな環境持ってねえもん」
「SSSE3 命令を使ってるから対応してないCPUでは動かねえよ」
とか言ってないかコレ。となると、AMD CPU上で動かそうとしてるから落ちるのは当たり前、なのだろうか。
AMD A6-3500 は…。LlanoベースのCPUなのか…。
_AMD Accelerated Processing Unit - Wikipedia
_CPUの拡張命令対応表 - merom686の日記
SSSE3 とやらに対応してるかどうかは分からないな…。cat /proc/cpuinfo をしても sse2 までしか対応してないように見える。3dnow や 3dnowext の文字列は見えるけど。CPU自体は、SSE3 や SSE4a に対応してるみたいだけど、Linux側から使えるかどうかは分からない。
BlendLuxCore v2.1alpha0 (BlendLuxCore-v2.1alpha0-linux64.zip) をダウンロードして使ってみたけど、やっぱり blenderを巻き込んで落ちる。
_Releases - LuxCoreRender/BlendLuxCore
せめてネットワークレンダリングのウインドウだけでも開かないかと試してみても、「PySideが動作に必要だけどインストールする?」と尋ねてきて、「sudo pip3 install PySide」と出てくるけれど、PySide って Pythn 3.4 までしか対応してないから、Python 3.5.2 がインストールされてる Ubuntu 16.04系では pip3 でインストールできないんだよな…。そのために python3-pyside というパッケージが用意されているんだけど、LuxCoreRender の野郎、そっちは無視かよ、っていう。
OpenCL版とやらが動くかなと思って導入してみたものの、libopencl.so が無いとか言われて、ならばその手のアレコレをインストールしたら動くのかと、sudo apt install mesa-opencl-icd を試したら、依存関係が壊れてるというメッセージが表示されて。
$ sudo apt install mesa-opencl-icd パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 インストールすることができないパッケージがありました。おそらく、あり得 ない状況を要求したか、(不安定版ディストリビューションを使用しているの であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移 動されていないことが考えられます。 以下の情報がこの問題を解決するために役立つかもしれません: 以下のパッケージには満たせない依存関係があります: mesa-opencl-icd : 依存: libclc-r600 (>= 0.2.0+git20170330-3) しかし、インストールされようとしていません 依存: libclc-amdgcn (>= 0.2.0+git20170330-3) しかし、インストールされようとしていません E: 問題を解決することができません。壊れた変更禁止パッケージがあります。
_package management - Installing mesa-opencl-icd in Ubuntu 16.04 - Ask Ubuntu
_Bug #1743018 “Unable to install mesa-opencl-icd because of unmet...” : Bugs : mesa package : Ubuntu
_Testing/EnableProposed - Ubuntu Wiki
xenial-proposed なる版のソレでは修正されているという話も見かけたけれど、Linux Mint 18.3 を使ってるせいか、導入できず。Linux Mint 18.3 って、Ubuntu 16.04ベースじゃなかったの? Ubuntu 16.04 じゃないとダメなのかな…。
そもそも、LuxCoreRender の issue を眺めると、どうも気になる話が。
_Unable to activate addon - Issue #114 - LuxCoreRender/BlendLuxCore
「システムの言語設定が英語以外の環境については知らねえよ。俺達そんな環境持ってねえもん」
「SSSE3 命令を使ってるから対応してないCPUでは動かねえよ」
とか言ってないかコレ。となると、AMD CPU上で動かそうとしてるから落ちるのは当たり前、なのだろうか。
AMD A6-3500 は…。LlanoベースのCPUなのか…。
_AMD Accelerated Processing Unit - Wikipedia
_CPUの拡張命令対応表 - merom686の日記
SSSE3 とやらに対応してるかどうかは分からないな…。cat /proc/cpuinfo をしても sse2 までしか対応してないように見える。3dnow や 3dnowext の文字列は見えるけど。CPU自体は、SSE3 や SSE4a に対応してるみたいだけど、Linux側から使えるかどうかは分からない。
BlendLuxCore v2.1alpha0 (BlendLuxCore-v2.1alpha0-linux64.zip) をダウンロードして使ってみたけど、やっぱり blenderを巻き込んで落ちる。
_Releases - LuxCoreRender/BlendLuxCore
せめてネットワークレンダリングのウインドウだけでも開かないかと試してみても、「PySideが動作に必要だけどインストールする?」と尋ねてきて、「sudo pip3 install PySide」と出てくるけれど、PySide って Pythn 3.4 までしか対応してないから、Python 3.5.2 がインストールされてる Ubuntu 16.04系では pip3 でインストールできないんだよな…。そのために python3-pyside というパッケージが用意されているんだけど、LuxCoreRender の野郎、そっちは無視かよ、っていう。
◎ LuxCoreがビルドできない。 :
LuxCore をビルドし直したら動いたという話もあるらしいので、自分も試してみたり。以下のページで、Ubuntu 16.04上でダイナミックリンク版をビルドする方法が紹介されているのだけど…。
_Compiling LuxCore - LuxCoreRender Wiki
しかし、cmake を走らせてみるとエラーが出る。
TBB が無いとか、C-BLOSC が無いとか言われたので、ググってそれらしいパッケージを探して、sudo apt install libtbb-dev libblosc-dev をしてみた。これなら cmake が通ったので、make を実行。
ちなみに、公式wiki には、make -j 8 と書いてあったけど、これはジョブを8つまで同時に動かすという指定。CPUコアがそんなにあるわけでもないので、今回は指定しなかった。以下のページによると、make -j コア数 x 2 がイイ感じの指定、らしい。
_「-j」オプションと「ccache」でコンパイル時間を400%高速化する方法 | OXY NOTES
さておき、最後の最後でエラーが出た。
_Compiling LuxCore - LuxCoreRender Wiki
# 必要なパッケージのインストール sudo apt-get update sudo apt-get install git cmake g++ flex bison libbz2-dev libopenimageio-dev libtiff5-dev libpng12-dev libgtk-3-dev libopenexr-dev libgl1-mesa-dev python3-dev python3-pip libboost-all-dev # 以下も試しに追加 sudo apt install libtbb2 libtbb-dev libblosc-dev libblosc1 # embree なるものが必要らしい。 wget https://github.com/embree/embree/releases/download/v2.17.1/embree-2.17.1.x86_64.linux.tar.gz tar zxvf embree-2.17.1.x86_64.linux.tar.gz export LD_LIBRARY_PATH=`pwd`/embree-2.17.1.x86_64.linux/lib:$LD_LIBRARY_PATH # Python の pillow も必要らしい。 sudo pip3 install pillow sudo rm /usr/lib/x86_64-linux-gnu/libboost_python.so sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_python-py35.so /usr/lib/x86_64-linux-gnu/libboost_python.so # LuxCore のソースを github から取得 git clone https://github.com/LuxCoreRender/LuxCore.git cd LuxCore # ビルドするための準備 export CMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu:/usr/include/x86_64-linux-gnu cmake -D EMBREE_SEARCH_PATH=`pwd`/../embree-2.17.1.x86_64.linux -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so -DPYTHON_INCLUDE_DIR=/usr/include/python3.5m . あるいは、もしかすると OpenCLを無効にするなら以下。 cmake -D LUXRAYS_DISABLE_OPENCL=1 -D EMBREE_SEARCH_PATH=`pwd`/../embree-2.17.1.x86_64.linux -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so -DPYTHON_INCLUDE_DIR=/usr/include/python3.5m . # ビルド make
しかし、cmake を走らせてみるとエラーが出る。
-- Found FLEX: /usr/bin/flex (found version "2.6.0") ERROR--> Could not locate required OpenCL files, disabling OpenCL support - Please check CMake Error at CMakeLists.txt:123 (MESSAGE): --> Could not locate required Intel TBB files - Please check
ERROR--> Could not locate required OpenCL files, disabling OpenCL support - Please check CMake Error at CMakeLists.txt:127 (MESSAGE): --> Could not locate required C-BLOSC files - Please check
TBB が無いとか、C-BLOSC が無いとか言われたので、ググってそれらしいパッケージを探して、sudo apt install libtbb-dev libblosc-dev をしてみた。これなら cmake が通ったので、make を実行。
ちなみに、公式wiki には、make -j 8 と書いてあったけど、これはジョブを8つまで同時に動かすという指定。CPUコアがそんなにあるわけでもないので、今回は指定しなかった。以下のページによると、make -j コア数 x 2 がイイ感じの指定、らしい。
_「-j」オプションと「ccache」でコンパイル時間を400%高速化する方法 | OXY NOTES
さておき、最後の最後でエラーが出た。
[ 92%] Linking CXX executable ../../bin/luxcoredemo /home/xxxxx/luxrender/build/embree-2.17.1.x86_64.linux/lib/libembree.so: `tbb::interface7::internal::task_arena_base::internal_max_concurrency(tbb::interface7::task_arena const*)' に対する定義されていない参照です collect2: error: ld returned 1 exit status samples/luxcoredemo/CMakeFiles/luxcoredemo.dir/build.make:137: ターゲット 'bin/luxcoredemo' のレシピで失敗しました make[2]: *** [bin/luxcoredemo] エラー 1 CMakeFiles/Makefile2:544: ターゲット 'samples/luxcoredemo/CMakeFiles/luxcoredemo.dir/all' のレシピで失敗しました make[1]: *** [samples/luxcoredemo/CMakeFiles/luxcoredemo.dir/all] エラー 2 Makefile:83: ターゲット 'all' のレシピで失敗しました make: *** [all] エラー 2ダメじゃん。ビルドできないじゃん。
◎ embreeからビルドしてみる。 :
libembree.so がエラーを出してるあたりが気になる。もしかして、embree とやらについては、ダウンロードしたバイナリをそのまま使うのではなく、ビルドして、そのビルドした版を利用すれば状況が変わるかもしれない。試してみたり。環境は、AMD A6-3500 + Linux Mint 18.3 (Ubuntu 16.04ベース)。
_Embree
_[SOLVED] CMake can't find GLUT Xi or Xmu
_Releases - embree/embree
必要なパッケージをインストール。
embree-2.17.1.zipをDLして解凍してから…。
エラーっぽいメッセージが出るので、設定項目をテキトーに変更して試した。例えば、Intel製コンパイラを使うかどうかは、該当項目の上で Enter を叩いて OFF にしたりとか。
一応 Makefile ができたっぽいので、makeしてみる。
ビルドできたっぽい。システムにインストールしてみる。
LuxCore のフォルダに移動して、cmakeのキャッシュを削除して、cmake をし直し。
環境変数 LD_LIBRARY_PATH に、embree-2.17.1.x86_64.linux が混じってないことを確認。
LuxCore をビルド。
お? 今度はビルドが通った。かもしれない。bin以下に、luxcoreui ができてるし。
以下で動作確認。
つまり、
それはともかく、blender で使えるようにしたり、pyluxcoretools.zip にまとめたりするのは、どうすれば…。
_Embree
_[SOLVED] CMake can't find GLUT Xi or Xmu
_Releases - embree/embree
必要なパッケージをインストール。
sudo apt install cmake-curses-gui libtbb-dev libglfw3-dev sudo apt install libxmu-dev libxi-dev
embree-2.17.1.zipをDLして解凍してから…。
cd embree-2.17.1 mkdir build cd build ccmake ..なんだかよく分からない画面が出てきた…。cキーを叩くと設定が変えられるらしい。gキーを叩くと Makefile を生成、するのかな。たぶん。
エラーっぽいメッセージが出るので、設定項目をテキトーに変更して試した。例えば、Intel製コンパイラを使うかどうかは、該当項目の上で Enter を叩いて OFF にしたりとか。
一応 Makefile ができたっぽいので、makeしてみる。
make
ビルドできたっぽい。システムにインストールしてみる。
sudo make install sudo ldconfig ldconfig -p | grep embree/usr/local/以下に色々インストールされる模様。
LuxCore のフォルダに移動して、cmakeのキャッシュを削除して、cmake をし直し。
cd ~/hoge/fuga/LuxCore rm CMakeCache.txt rm Makefile
環境変数 LD_LIBRARY_PATH に、embree-2.17.1.x86_64.linux が混じってないことを確認。
echo $LD_LIBRARY_PATH混じってたら…。bash を終了して、再度 bash を起動すればいいんじゃないかな…。
LuxCore をビルド。
export CMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu:/usr/include/x86_64-linux-gnu cmake -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so -DPYTHON_INCLUDE_DIR=/usr/include/python3.5m . make
お? 今度はビルドが通った。かもしれない。bin以下に、luxcoreui ができてるし。
以下で動作確認。
bin/luxcoreui scenes/simple/simple.cfgウインドウが表示されて、レンダリングがじわじわ進んだ。ビルドできたっぽい…。
つまり、
- embree のソースをダウンロード・ビルド・インストールして、
- その状態で LuxCore をビルドすれば、
それはともかく、blender で使えるようにしたり、pyluxcoretools.zip にまとめたりするのは、どうすれば…。
◎ ネットワークレンダリング用のファイル群をまとめる。 :
ネットワークレンダリング用のファイル群をまとめたい。
公式サイトからダウンロードできる、luxcorerender-v2.0-linux64.tar.bz2、あるいは、luxcorerender-v2.1alpha0-linux64.tar.bz2 の中身は以下。
このファイル群に対して、手を加えていくことにする。
*.so については、システム側にインストールしてしまったので、無くてもいいはず。例えば以下のように打てば、システム側にインストールされてることが分かる。
なので、*.so は、削除するなり、何かフォルダを作成してその中に移動してしまっていい。今回は、so_bkup というフォルダを作成して、その中に移動してしまった。
luxcoreui、pyluxcore.so、pyluxcoretools.zip については…。
以下を打って実行してみる。
一々打ち込むのは面倒臭いので、起動用のファイルを作成する。
実行権限をつける。
これで ./startlux.sh を実行すれば、件のウインドウが開くようになる。
公式サイトからダウンロードできる、luxcorerender-v2.0-linux64.tar.bz2、あるいは、luxcorerender-v2.1alpha0-linux64.tar.bz2 の中身は以下。
scenes AUTHORS.txt COPYING.txt libembree.so.2 libtbb.so.2 libtbbmalloc.so.2 luxcoreui pyluxcore.so pyluxcoretools.zip README.md
このファイル群に対して、手を加えていくことにする。
*.so については、システム側にインストールしてしまったので、無くてもいいはず。例えば以下のように打てば、システム側にインストールされてることが分かる。
$ ldconfig -p | grep embree libembree.so.2 (libc6,x86-64) => /usr/local/lib/libembree.so.2 libembree.so (libc6,x86-64) => /usr/local/lib/libembree.so $ ldconfig -p | grep tbb libtbbmalloc_proxy.so.2 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libtbbmalloc_proxy.so.2 libtbbmalloc_proxy.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libtbbmalloc_proxy.so libtbbmalloc.so.2 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libtbbmalloc.so.2 libtbbmalloc.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libtbbmalloc.so libtbb.so.2 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libtbb.so.2 libtbb.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libtbb.so
なので、*.so は、削除するなり、何かフォルダを作成してその中に移動してしまっていい。今回は、so_bkup というフォルダを作成して、その中に移動してしまった。
luxcoreui、pyluxcore.so、pyluxcoretools.zip については…。
- lxcoreui は、先ほどビルドした LuxCore/bin/ 以下に入ってる。
- pyluxcore.so と pyluxcoretools.zip は、先ほどビルドした LuxCore/lib/ 以下に入ってる。
以下を打って実行してみる。
python3 ./pyluxcoretools.zipウインドウが開いて、NetNode or NetConsole を選択できるボタンが表示された。これでネットワークレンダリングがもしかするとできるかな…。できたらいいな…。
一々打ち込むのは面倒臭いので、起動用のファイルを作成する。
vi startlux.sh中身は以下。
#!/bin/sh python3 ./pyluxcoretools.zip
実行権限をつける。
chmod +x ./startlux.sh
これで ./startlux.sh を実行すれば、件のウインドウが開くようになる。
◎ blender から呼び出したい。 :
Ubuntu 16.04 + blender 2.79b に BlendLuxCore をインストールすると、以下の場所にファイル群が展開される。
bin/ フォルダの中に、pyluxcore.so や pyluxocretools.zip があるな…。これを置き換えてみるか…。
blender 上でレンダラーを LuxCore に切り替えて、Render をしてみても blender が落ちたりしない状態になった。少しは改善されたらしい。
しかし、std::bad_cast と表示されてエラーになってしまう。なんだこりゃ…。
~/.config/blender/2.79/scripts/addons/BlendLuxCore/この中のどれかのファイルを変更すれば…blender から呼び出せるようになるのではないか…。
bin/ フォルダの中に、pyluxcore.so や pyluxocretools.zip があるな…。これを置き換えてみるか…。
blender 上でレンダラーを LuxCore に切り替えて、Render をしてみても blender が落ちたりしない状態になった。少しは改善されたらしい。
しかし、std::bad_cast と表示されてエラーになってしまう。なんだこりゃ…。
[ ツッコむ ]
以上です。