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上でレンダリングするのと変わらない…。
[ ツッコむ ]
以上です。