2020/04/15(水) [n年前の日記]
#1 [blender] LuxCoreRenderとbcfファイルとBlender2.82a
LuxCoreRender 2.3 を使ってネットワークレンダリングができないか、つまりは、Blender + BlendLuxCore からbcfファイルを書き出して LuxCoreRender (Standalone) 2.3 でレンダリングできないか試していたのだけど。なんだかちょっとアレな部分でハマってしまった…。
環境は、Windows10 x64 1909 + Blender 2.82a + BlendLuxCore 2.3 + LuxCoreRender 2.3。
_LuxCoreRender - Open Source Physically Based Renderer
結論から先に書くと…。LuxCoreRenderで処理するための bcfファイルを Blender 2.82a から書き出す際は、Blender の言語設定を英語にしなきゃダメ。
日本語設定にしてある Blender で bcfファイルを書き出すと、日本語文字列も bcfファイルに含まれてしまって、LuxCoreRender で読み込もうとした際に解析できなくてエラーを出して止まってしまうそうで。
ちなみに、Blender 2.82a + BlendLuxCore 2.3 だけでレンダリングをするなら、日本語設定にしてあっても問題無く動く。あくまで、bcfファイルを書き出して他のアプリで読み込ませてレンダリングをする、といった場面では言語設定が絡んでくる、ということらしい。
以下のやり取りを眺めて、ようやく原因が分かった…。まさかこんな罠が仕掛けられていたとは…。
_bad lexical cast on export from blender - LuxCoreRender Forums
_bad lexical cast on export from blender - Page 2 - LuxCoreRender Forums
_Error when try to render on Linux - Page 2 - LuxCoreRender Forums
環境は、Windows10 x64 1909 + Blender 2.82a + BlendLuxCore 2.3 + LuxCoreRender 2.3。
_LuxCoreRender - Open Source Physically Based Renderer
結論から先に書くと…。LuxCoreRenderで処理するための bcfファイルを Blender 2.82a から書き出す際は、Blender の言語設定を英語にしなきゃダメ。
日本語設定にしてある Blender で bcfファイルを書き出すと、日本語文字列も bcfファイルに含まれてしまって、LuxCoreRender で読み込もうとした際に解析できなくてエラーを出して止まってしまうそうで。
ちなみに、Blender 2.82a + BlendLuxCore 2.3 だけでレンダリングをするなら、日本語設定にしてあっても問題無く動く。あくまで、bcfファイルを書き出して他のアプリで読み込ませてレンダリングをする、といった場面では言語設定が絡んでくる、ということらしい。
以下のやり取りを眺めて、ようやく原因が分かった…。まさかこんな罠が仕掛けられていたとは…。
_bad lexical cast on export from blender - LuxCoreRender Forums
_bad lexical cast on export from blender - Page 2 - LuxCoreRender Forums
_Error when try to render on Linux - Page 2 - LuxCoreRender Forums
◎ 言語設定の変更方法。 :
一応、Blender 2.8x で言語設定を変更する手順をメモ。
Blender 2.8x を起動したら、編集 → プリファレンス、を選択。
設定ウインドウが開くので、インターフェイス(Interface)タブを選んで、翻訳(Translation)のチェックを外して無効化。これで英語設定になる。
もちろん、チェックを入れて、言語(Language)で「Japanese(日本語)」を選び、Tooltips や Interface にチェックを入れれば、日本語化できる。
Blender 2.8x を起動したら、編集 → プリファレンス、を選択。
設定ウインドウが開くので、インターフェイス(Interface)タブを選んで、翻訳(Translation)のチェックを外して無効化。これで英語設定になる。
もちろん、チェックを入れて、言語(Language)で「Japanese(日本語)」を選び、Tooltips や Interface にチェックを入れれば、日本語化できる。
◎ bcfファイルのエクスポート手順。 :
LuxCoreRender 2.3 でネットワークレンダリングをするためには、bcfファイルをエクスポートして、ソレを使わないといけないらしい。
再度書いておくけれど、Blender が日本語化されていると、他のアプリで読み込める bcf が書き出せない。一旦英語設定にしてから書き出すこと。
また、Camera の Tonemapper が Linear になっているとレンダリング処理が進まない、という話も見かけたので、もしかすると Reinhard 等にしておいたほうがいいのかもしれない。
_たまに更新されるblenderとかの記録: LuxCoreRenderたのしい。
さておき。Blender 2.82a + BlendLuxCore 2.3 で、bcfファイルを書き出すためには…。
指定ができたら、F12キーを叩いてレンダリングをする。が、実際にはレンダリングはされず、bcfファイルが書き出される。
例えば、hoge.blend を開いて作業していた場合、書き出し先フォルダに、hoge_LuxCore というフォルダが作成されて、その中に「00001.bcf」といったファイル名で bcf が書き出される。この数字はアニメのフレーム番号と対応してる、のではないかと思う。たぶん。
再度書いておくけれど、Blender が日本語化されていると、他のアプリで読み込める bcf が書き出せない。一旦英語設定にしてから書き出すこと。
また、Camera の Tonemapper が Linear になっているとレンダリング処理が進まない、という話も見かけたので、もしかすると Reinhard 等にしておいたほうがいいのかもしれない。
_たまに更新されるblenderとかの記録: LuxCoreRenderたのしい。
さておき。Blender 2.82a + BlendLuxCore 2.3 で、bcfファイルを書き出すためには…。
- Render Engine を LuxCore に。
- LuxCore Tools の LuxCore Filesaver にチェックを入れる。
- 書き出すファイルタイプを「Binary」にする。
- 書き出し先のフォルダを指定。
指定ができたら、F12キーを叩いてレンダリングをする。が、実際にはレンダリングはされず、bcfファイルが書き出される。
例えば、hoge.blend を開いて作業していた場合、書き出し先フォルダに、hoge_LuxCore というフォルダが作成されて、その中に「00001.bcf」といったファイル名で bcf が書き出される。この数字はアニメのフレーム番号と対応してる、のではないかと思う。たぶん。
◎ 計算を止めるための指定。 :
余談。LuxCoreRender は、レンダリングを始めるといつまでも計算を続けて画質をどんどん上げていくので、このぐらいでいいかなと思ったら手動で止めてやる必要がある。BlenderならESCキーを叩くと止めてくれる。
ただ、Blender上でレンダリングをする場合、LuxCore Halt Conditions で、計算処理の自動停止条件を指定できる模様。
例えば、前述の画像では、サンプル数が500に達したら計算を止めろ、という指定をしている。
他にも、「一定の計算時間が過ぎたら止める」「ノイズの量が一定値以下(?)になったら止める」といった指定もできる、のだと思う。たぶん。
ただ、Blender上でレンダリングをする場合、LuxCore Halt Conditions で、計算処理の自動停止条件を指定できる模様。
例えば、前述の画像では、サンプル数が500に達したら計算を止めろ、という指定をしている。
他にも、「一定の計算時間が過ぎたら止める」「ノイズの量が一定値以下(?)になったら止める」といった指定もできる、のだと思う。たぶん。
◎ bcfファイルをLuxCoreRenderで読み込む。 :
bcfファイルを、LuxCoreRender Standalone で読み込んで、レンダリングできるかどうか試す。ここでレンダリングできれば、ネットワークレンダリングにも利用できる bcfファイルになっているはず。
_Download - LuxCoreRender
LuxCoreRender Standalone 2.3 を入手。今回は、luxcorerender-v2.3-win64.zip をDLした。解凍すると、luxcoreui.exe という実行ファイルが入ってるので起動。ウインドウが開く。
サンプルファイル(.cfg)が同梱されているので、まずはそれを開いて動作確認。Rendering → Load → scenes/cornell/cornell.cfg を開く。いきなりレンダリングが始まれば、ちゃんと動作している。
Rendering → Cancel を選んで、処理をキャンセルしてから、先ほど Blender + BlendLuxCore で書き出したbdfファイルを開く。これまたいきなりレンダリングが始まれば、問題が無いと思われるbcfファイルが書き出せた、と分かる。
もし、「RenderConfig Load Error」とか「bad lexical cast: source type value could not be interpreted as target」と言われて処理が進まなかったら、読み込めない bcf を書き出してしまった可能性が高い。Blender が日本語設定のままだったりしないか確認。
_Download - LuxCoreRender
LuxCoreRender Standalone 2.3 を入手。今回は、luxcorerender-v2.3-win64.zip をDLした。解凍すると、luxcoreui.exe という実行ファイルが入ってるので起動。ウインドウが開く。
サンプルファイル(.cfg)が同梱されているので、まずはそれを開いて動作確認。Rendering → Load → scenes/cornell/cornell.cfg を開く。いきなりレンダリングが始まれば、ちゃんと動作している。
Rendering → Cancel を選んで、処理をキャンセルしてから、先ほど Blender + BlendLuxCore で書き出したbdfファイルを開く。これまたいきなりレンダリングが始まれば、問題が無いと思われるbcfファイルが書き出せた、と分かる。
もし、「RenderConfig Load Error」とか「bad lexical cast: source type value could not be interpreted as target」と言われて処理が進まなかったら、読み込めない bcf を書き出してしまった可能性が高い。Blender が日本語設定のままだったりしないか確認。
◎ ネットワークレンダリングをしてみる。 :
LuxCoreRender はネットワークレンダリングができる。例えば、部屋に転がってる数台のサブPCをLANで繋いで、レンダリング計算するための Node を立ち上げて、メインPCからLAN経由でレンダリングしたいファイルを渡してやれば、サブPC達が一丸となってレンダリングの計算をしてくれる。「このオラにほんのちょっとずつだけ計算力をわけてくれ…!!!」みたいな。
レンダリングするためのプログラムは、LuxCoreRender Standalone に同梱されてる。pyluxcoretool.exe や pyluxcoretools.zip がソレ。
Windows機なら、pyluxcoretools.exe を実行すればいい。DOS窓が開いてから、選択ウインドウが表示される。
NetNode をクリックすると、以下のような画面になる。
「Host name or IP address」に、自分自身と言うか、Node を立ち上げるPCのホスト名かIPアドレスを入力するっぽい。たぶん。「Start node」をクリックすれば、待ち受け状態になる。
NetConsole をクリックすると、以下のような画面になる。
「Add job」をクリックして bcfファイルを選択すると、認識してる Node達に対して「このファイルをレンダリングしてくれ」と指示を出す。
とりあえず、Windows機上で NetNode と NetConsole の2つを動かして、レンダリングできることは確認できた。もっとも、1台のPC上で、計算と指示出しをやっても意味が無いのだけど。Blender上でレンダリングするのと変わらない…。
レンダリングするためのプログラムは、LuxCoreRender Standalone に同梱されてる。pyluxcoretool.exe や pyluxcoretools.zip がソレ。
Windows機なら、pyluxcoretools.exe を実行すればいい。DOS窓が開いてから、選択ウインドウが表示される。
- レンダリング計算をする側になりたいなら、NetNode をクリック。
- レンダリングを指示する側になりたいなら、NetConsole をクリック。
NetNode をクリックすると、以下のような画面になる。
「Host name or IP address」に、自分自身と言うか、Node を立ち上げるPCのホスト名かIPアドレスを入力するっぽい。たぶん。「Start node」をクリックすれば、待ち受け状態になる。
NetConsole をクリックすると、以下のような画面になる。
「Add job」をクリックして bcfファイルを選択すると、認識してる Node達に対して「このファイルをレンダリングしてくれ」と指示を出す。
とりあえず、Windows機上で NetNode と NetConsole の2つを動かして、レンダリングできることは確認できた。もっとも、1台のPC上で、計算と指示出しをやっても意味が無いのだけど。Blender上でレンダリングするのと変わらない…。
[ ツッコむ ]
#2 [blender][linux] Linux上でLuxCoreRenderを動かしてみたかったけどやっぱりダメだった
LuxCoreRender は Linux版も用意されているので、動くかどうか試したり。
環境は、Ubuntu Linux 18.04 LTS + AMD A8-3850。
結論を先に書くと、AMD製CPU + Linux では動かないっぽい…。Intel製CPU + Linux なら、もしかすると動くかもしれないし動かないかもしれない。
以下は、試行錯誤のメモ。
環境は、Ubuntu Linux 18.04 LTS + AMD A8-3850。
結論を先に書くと、AMD製CPU + Linux では動かないっぽい…。Intel製CPU + Linux なら、もしかすると動くかもしれないし動かないかもしれない。
以下は、試行錯誤のメモ。
◎ Python関係の必要なパッケージをインストール。 :
python3 pyluxcoretools.zip で動くはずだけど、動かすためには Python 3.x と PySide2 が必要になるらしい。
何故か PySide2 が落ちてこない…。仕方ないので、Windows機でDL。PySide2-5.14.1-5.14.1-cp35.cp36.cp37.cp38-abi3-manylinux1_x86_64.whl をDLすればいいのかな…。
_PySide2 - PyPI
_5.14.2-5
DLできたので、Ubuntu機に転送して、以下を実行。
デスクトップ画面上で、PySide2 の簡単なサンプルを動かしてみたらウインドウが表示されたので、インストールできたっぽい。
helloworld.py
sudo apt install python3 sudo apt install python3-pip sudo apt install qttools5-dev-tools sudo -H pip3 install PySide2
何故か PySide2 が落ちてこない…。仕方ないので、Windows機でDL。PySide2-5.14.1-5.14.1-cp35.cp36.cp37.cp38-abi3-manylinux1_x86_64.whl をDLすればいいのかな…。
_PySide2 - PyPI
_5.14.2-5
DLできたので、Ubuntu機に転送して、以下を実行。
sudo -H pip3 install PySide2-5.14.1-5.14.1-cp35.cp36.cp37.cp38-abi3-manylinux1_x86_64.whlshiboken2 5.14.2 とやらもインストールされた。
デスクトップ画面上で、PySide2 の簡単なサンプルを動かしてみたらウインドウが表示されたので、インストールできたっぽい。
helloworld.py
import sys from PySide2.QtWidgets import QApplication, QLabel if __name__ == "__main__": app = QApplication(sys.argv) label = QLabel("Hello World") label.show() sys.exit(app.exec_())
python3 helloworld.py
◎ LuxCoreRenderをDLして解凍。 :
LuxCoreRender 2.3 をDLする。
_Download - LuxCoreRender
luxcorerender-*.tar.bz2 を解凍。~/bin/ を作成して、その中に展開した。
luxcoreui は実行ファイルなので、実行できるはず…。
OpenCL使用版ならどうだろう。luxcorerender-v2.3-linux64-opencl.tar.bz2 をDLして解凍。OpenCLの動作に必要となるらしい何かしらもインストール。
_Download - LuxCoreRender
wget https://github.com/LuxCoreRender/LuxCore/releases/download/luxcorerender_v2.3/luxcorerender-v2.3-linux64.tar.bz2これも落ちてこない…。仕方ないので、これまた Windows機でDLして、Ubuntu機に転送。しかし、何故にUbuntu機だけ接続が切れるのか…。
luxcorerender-*.tar.bz2 を解凍。~/bin/ を作成して、その中に展開した。
cd~/bin/ 以下に、LuxCore というディレクトリができた。中には、luxcoreui や pyluxcoretools.zip が入ってる。
mkdir bin cd bin tar jxvf luxcorerender-v2.3-linux64.tar.bz2
luxcoreui は実行ファイルなので、実行できるはず…。
./luxcoreuiコアダンプを吐いて不正終了。なんでや。
OpenCL使用版ならどうだろう。luxcorerender-v2.3-linux64-opencl.tar.bz2 をDLして解凍。OpenCLの動作に必要となるらしい何かしらもインストール。
sudo apt install mesa-opencl-icd clinfoダメだった。コレもコアダンプ。
◎ Intel製CPUに特化してる気配がする。 :
たしか、以前、LuxCoreRender 2.0 を試した時に、Intel製CPUじゃないと動かない何かが含まれていたような記憶が…。
_mieki256's diary - AMD製CPU + Ubuntu 14.04 LTS上で LuxCoreRender の Static link版をビルドできるか実験
今現在の版も、AMD製CPUでは相変わらず動かない状態、ということなのかもしれない。
本当にそうかな? 試しに、Intel Core2Duo E8400 が載っている、別のサブPC + Ubuntu Linux 18.04 LTS 上で同じ作業をしてみた。… luxcoreui がすんなり動いてしまった。同梱の scenes/cornell/cornell.cfg を開いたら、これまたあっさりレンダリングが始まった。
ネットワークレンダリングに使う、python3 pyluxcoretools.zip は、python3-pyside をインストールしてあるとエラーを出して動かない模様。sudo apt purge python3-pyside でアンインストールして、sudo -H pip3 install PySide2 で PySide2 だけインストールした状態なら動いてくれた。
何にせよ、LuxCoreRender 2.3 Linux版は Intel CPU上でのみ動くようにビルドされた状態で公開されているらしい。AMD製CPUは門前払い、てのもなんだか酷いな…。
Windows版のバイナリはIntel製CPUに特化しない設定でビルドされているらしいので、Windows上で動かす分にはAMD製CPUを使っていても問題は無いのだけど。何故にLinux版はIntel縛りなの…。
もっとも、古いCPU ―― しかもIntelより性能が低いのが当たり前だった時代のAMD製CPU ―― が載ったPCを数台動かして計算するよりも、今時のGPUで計算したほうが数倍速いし、消費電力も少なくて済むであろう予感もあるわけで。サブPC群でレンダリングすることで、古いPCを有効活用している気分だけは味わえるけど、何か実利があるのかと考えると、たぶんほとんど無いのだろう…。
_mieki256's diary - AMD製CPU + Ubuntu 14.04 LTS上で LuxCoreRender の Static link版をビルドできるか実験
今現在の版も、AMD製CPUでは相変わらず動かない状態、ということなのかもしれない。
本当にそうかな? 試しに、Intel Core2Duo E8400 が載っている、別のサブPC + Ubuntu Linux 18.04 LTS 上で同じ作業をしてみた。… luxcoreui がすんなり動いてしまった。同梱の scenes/cornell/cornell.cfg を開いたら、これまたあっさりレンダリングが始まった。
ネットワークレンダリングに使う、python3 pyluxcoretools.zip は、python3-pyside をインストールしてあるとエラーを出して動かない模様。sudo apt purge python3-pyside でアンインストールして、sudo -H pip3 install PySide2 で PySide2 だけインストールした状態なら動いてくれた。
何にせよ、LuxCoreRender 2.3 Linux版は Intel CPU上でのみ動くようにビルドされた状態で公開されているらしい。AMD製CPUは門前払い、てのもなんだか酷いな…。
Windows版のバイナリはIntel製CPUに特化しない設定でビルドされているらしいので、Windows上で動かす分にはAMD製CPUを使っていても問題は無いのだけど。何故にLinux版はIntel縛りなの…。
もっとも、古いCPU ―― しかもIntelより性能が低いのが当たり前だった時代のAMD製CPU ―― が載ったPCを数台動かして計算するよりも、今時のGPUで計算したほうが数倍速いし、消費電力も少なくて済むであろう予感もあるわけで。サブPC群でレンダリングすることで、古いPCを有効活用している気分だけは味わえるけど、何か実利があるのかと考えると、たぶんほとんど無いのだろう…。
[ ツッコむ ]
以上、1 日分です。