FreeCADでレイトレーシング。

今のところちゃんと動いていないため、とりあえず状況の整理を。

OS: Windows10 Pro
FreeCAD 0.17.13541 (2018.8.16)

FreeCADから利用できると書かれているOSSのレイトレーシングソフトは、POV-rayとLuxRenderとなっていますが、LuxRenderは2017年末に再起動し、2018年4月にLuxCoreRender V2.0beta2として最初の公式リリースを出しています。

レイトレーシングは正直これまでアプリのデモ程度でしか触ったことがないため、よくわからないわけですが…。

ちょっと調べてみたところ、POV-rayはGPUを使用せずにCPUのみでゴリゴリやるため、たいへん時間がかかるようです。

LuxCoreRenderはOpenCLを使ってGPUを利用し、さらにCPUも使い倒しているようです。
ためしにLuxCoreRenderのダウンロードページから壁紙をダウンロードし、描画させながらタスクマネージャーのパフォーマンスグラフを見ると、内蔵GPUを5割ほど使用している様子がわかります。



また、GTX960mを組み込んだCore i7のノートPCでは、GTXも内蔵GPUも両方使い、さらにCPUも使って計算しているようです。

実際のところ、本気の映像クリエイターでもない限りは可能な限り計算時間は短いほうがいいでしょうから、LuxCoreRenderを使用することにしようと思います。
ちなみに現在使用しているCPUは第4世代Core i7プロセッサーの4790K(オーバークロックなし)です。2014年のCPUなのですが、これ以降では劇的に性能が上がっているとかいうことはないので、まあこれでいいやという感じになっています。そうは言っても近いうちに8700Kにしたいなぁなどとは思っているんですが。

ともあれ、LuxCoreRenderのダウンロードページを見ると "BlendLuxCore v2.0" というのが目に入ります。これはLuxCoreRenderをBlenderのアドオンにするためのビルドのようです。その下には "Standalone release v2.0" と、 "LuxCore API SDK release v2.0" というのがあります。3種類もあってどれを使えばいいのか、FreeCADのところにも書いてません。

わからないときはソースを読めという格言の通り、関係ありそうなソースを探してみます。
幸い、FreeCADのgitリポジトリにそれらしきものがありました。

https://github.com/FreeCAD/FreeCAD-render/blob/master/renderers/Luxrender.py

def render(project,external=True):

    if not project.PageResult:
        return
    p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Render")
    if external:
        rpath = p.GetString("LuxRenderPath","")
        args = ""
    else:
        rpath = p.GetString("LuxConsolePath","")
        args = p.GetString("LuxParameters","")

render()関数の引数で external にTrue (デフォルト)がセットされると LuxRenderを呼び出し、Falseなら LuxConsoleが呼び出される、ということらしいです。

余談ですがこのgitリポジトリにはAppleseed.pyなんてのもあって、これはAppleseedというレンダラを使うためのファイルのようですね。たぶんFreeCAD 0.18? いずれにしろこちらはメニューには出てこないようです。

閑話休題、上記の3つのダウンロードのうち、FreeCADから呼び出して使うのは "luxcoreui.exe" のようです。なので "Standalone" を使うことにします。


とりあえず部品作成はFreeCADで、シーン合成などはBlenderを使って、レイトレーシングをLuxCoreRenderで進めてみようかなと考えていますが、とりあえず使えるかどうかの確認です。


FreeCADでワイングラスを作ってみました。

これをレンダリングしてみますと…。


なんか違う感がハンパない…。

0 件のコメント:

コメントを投稿

Windowsでシンボリックリンクを試してみる。

きっかけは、1つのファイルを別の名前で起動したら違う動きになるようなスクリプトを書く、でした。  busybox なんかでは、同じ実行形式ファイルの名前を、lsにすればlsと同じ、cpとすればcpと同じ動作をするようにしてますが、Pythonスクリプトでそれと同じように argv...