mieki256's diary



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 を試したら、依存関係が壊れてるというメッセージが表示されて。
$ 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

# 必要なパッケージのインストール
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

必要なパッケージをインストール。
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 をビルドすれば、
AMD CPU + Ubuntu 16.04 上でも一応動作する luxcoreui が作れる、ということになるのかもしれないなと。面倒臭いな…。

それはともかく、blender で使えるようにしたり、pyluxcoretools.zip にまとめたりするのは、どうすれば…。

ネットワークレンダリング用のファイル群をまとめる。 :

ネットワークレンダリング用のファイル群をまとめたい。

公式サイトからダウンロードできる、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 をインストールすると、以下の場所にファイル群が展開される。
 ~/.config/blender/2.79/scripts/addons/BlendLuxCore/
この中のどれかのファイルを変更すれば…blender から呼び出せるようになるのではないか…。

bin/ フォルダの中に、pyluxcore.so や pyluxocretools.zip があるな…。これを置き換えてみるか…。

blender 上でレンダラーを LuxCore に切り替えて、Render をしてみても blender が落ちたりしない状態になった。少しは改善されたらしい。

しかし、std::bad_cast と表示されてエラーになってしまう。なんだこりゃ…。

以上です。

過去ログ表示

Prev - 2018/05 - Next
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project