mieki256's diary



2021/08/26(木) [n年前の日記]

#1 [povray] MorayからPOV-Rayを条件付きで呼び出せることがわかった

_昨日の作業 で、Windows10 + POV-Ray専用モデリングツール Bishop3D から、POV-Ray 3.7 を呼び出して利用できる状態になったのだけど。

似たような作業をすれば、別の POV-Ray専用モデリングツール Moray からも POV-Ray 3.7 を呼び出せるようにできるのではないか…? と思えてきたので試してみた。

環境は Windows10 x64 21H1 + Moray V3.5。

結論を先に書くと、Windows10上でも、POV-Ray 3.6.2 32bit版なら、Moray V3.5 から呼び出してレンダリングすることができる。ただし、多少面倒な操作を強制される。ちなみに、POV-Ray 3.5、3.6、3.7 はダメ。利用できるのは、POV-Ray 3.6.2 に限られる。

Moray の入手ページは以下。

_The Moray Homepage - Welcome

試行錯誤をメモ。 :

Bishop3D から POV-Ray を呼び出せるようにした際、POV-Ray 3.7 本体のインストールフォルダ内に、シンボリックリンクを使って、 iniフォルダとincludeフォルダを入れたのだけど。

そのことで Moray の動作に変化が出てきた。Moray 起動時に、「POV-Ray 関係の .ini に Moray用の設定をするかい?」みたいなダイアログが表示された。どうやら、Moray も ini/pvengine.ini を見つけることができたようだなと…。

pvengine.ini を覗いたら、以下の行が追加されていた。
[GUIExtensions]
UseExtensions=1
ExtDLL16=C:\Prog\Bishop3D\Bishop3DPovComm.dll
ExtDll15=C:\Prog\Moray For Windows\MorayCtrl.DLL
「ExtDll15=C:\Prog\Moray For Windows\MorayCtrl.DLL」が追加された行。どうやら Moray も、Bishop3D と似た感じで、特定のDLLを利用して POV-Ray と通信しながら処理をするようだなと…。

更に、手動で POV-Ray 3.7 (pvengine.exe) を起動してみたところ、Messages の冒頭で、Bishop3DPovComm.dll に加えて、MorayCtrl.DLL も読み込めていることを確認できた。

しかし、Moray 上で、Render → Raytrace を選択してレンダリングを試みたところ、POV-Ray側では以下のエラーメッセージが表示されて、レンダリング処理まで行かなかった。
Preset INI file is 'D:\HOME\POV-RAY\V3.7\INI\QUICKRES.INI', section is '[1024x768, AA 0.3]'.
Preset source file is 'D:\MorayProj\POVSCN\test03.INI'.

"D:\MorayProj\POVSCN\test03.INI" line 5: INI option 'Buffer_Output' is no longer used and will result in an error in future versions of POV-Ray.
"D:\MorayProj\POVSCN\test03.INI" line 6: INI option 'Buffer_Size' is no longer used and will result in an error in future versions of POV-Ray.
"D:\MorayProj\POVSCN\test03.INI" line 24: INI option 'Histogram_Name' is no longer used and will result in an error in future versions of POV-Ray.
"D:\MorayProj\POVSCN\test03.INI" line 25: INI option 'Histogram_Grid_Size' is no longer used and will result in an error in future versions of POV-Ray.
"D:\MorayProj\POVSCN\test03.INI" line 26: INI option 'Histogram_Type' is no longer used and will result in an error in future versions of POV-Ray.
"D:\MorayProj\POVSCN\test03.INI" line 63: Unknown key 'Radiosity' in INI file.
"D:\MorayProj\POVSCN\test03.INI" line 63: Cannot continue to process INI file
'D:\MorayProj\POVSCN\test03.INI' due to a parse error in line 63.

This is not a valid INI file. Check the file for syntax errors, correct them, and try again!

Valid options in INI files are explained in detail in the reference part of the documentation.

Failed to start render: Failed to parse INI file

Moray は POV-Ray 3.5時代のツールなので、Moray が出力する .iniファイルの記述が、POV-Ray 3.7 が利用する .ini の仕様と合っておらず、.ini の解析処理が止まってしまう模様。

エラーメッセージの内容を確認すると…。以下の指定は .ini 内で使用できなくなった、と言っているっぽい。
Buffer_Output
Buffer_Size
Histogram_Name
Histogram_Grid_Size
Histogram_Type

更に、「'Radiosity'なんてキーは知らないからこれ以上解析できない」とも言っている。

エラーメッセージでググったら以下のやり取りが見つかった。POV-Ray公式のニュースグループ(?)らしい。

_POV-Ray: Newsgroups: povray.general: Ignore .ini Errorrs in 3.7
_POV-Ray: Newsgroups: povray.general: Ignore .ini Errorrs in 3.7

.iniファイル内における「Radiosity」という指定は、POV-Ray 3.5 の時点で廃止されて、その指定内容は .pov 側で記述するように仕様が変更された模様。

ただ、POV-Ray 3.5 の時点では、廃止はされたものの、機能として削除されたわけではなかったので .ini の解析処理が通ったようだなと…。

しかし、POV-Ray 3.7 の時点で完全に削除扱いになったので、.ini内に「Radiosity」というキーワードがあると、解析処理がそこで止まるようになった、ということらしい。

ちなみに、Buffer_Output や Buufer_Size 等が何なのかについては、以下の非公式翻訳ページが参考になりそう。

_POV-Ray 3.0 の日本語版マニュアル暫定第5.2版について(.txt)

さておき。前述のニュースグループのやり取りの中で、「POV-Ray 3.8 で修正するかも」みたいな話が出ていたので、POV-Ray 3.8 beta 2 を導入して試してみた。POV-Ray 3.8 beta 2 は、github から入手できる。

_Releases - POV-Ray/povray

しかし、残念ながら、POV-Ray 3.8 beta 2 においても、Radiosity が書かれてる行で解析処理が止まってしまった。そのあたり、結局修正されてないらしい。

POV-Ray 3.6.2なら動く。 :

ニュースグループを検索しまくっていたら、「Windows7 + Moray + POV-Ray 3.6.2 なら動いたぞ」という報告を見かけた。POV-Ray 3.6 では動かなかったけど、3.6.2 なら動いたらしい。

Windows7上で、その組み合わせで動いたのであれば、Windows10上でも、その組み合わせで動きそうな気がする…。

試しに POV-Ray 3.6.2 をDL・インストールして動作確認してみた。POV-Ray 3.6 は以下のページから入手できる。

_POV-Ray: Download Legacy version 3.6

32bit版の povwin362-32bit.msi をDL・実行してインストール。POV-Ray 3.7 とは異なるフォルダにインストールすることで共存できる。今回は、C:\Prog\POV-Ray\v3.6\ にインストールしてみた。

3.6.2版の pvengine.exe を一旦起動してから終了。そして、pvengine.exe を再起動すると pvengine.ini の内容が充実(?)する。

その状態で、ExtDLLxx= 等の行を追記していく。POV-Rayのウインドウ上で、Tools → Edit PVENGINE.INI を選択すると、pvengine.ini がメモ帳が開かれる。以下のような感じになるように追記。
[GUIExtensions]
UseExtensions=1
ExtDll15=C:\Prog\Moray For Windows\MorayCtrl.DLL
ExtDLL16=C:\Prog\Bishop3D\Bishop3DPovComm.dll

更に、Moray の Render Options (Alt+F9) で、POV-Ray 3.6 版の pvengine.exe、もしくは pvengine-sse2.exe を指定。

この状態なら、Moray から POV-Ray を呼び出してレンダリングすることができた。以下が証拠画像…にはならないか…。まあ、自分の手元の環境では動いてくれたということで。

moray_and_povray_ss01.jpg

問題に遭遇。 :

Moray から POV-Ray を呼び出せることはできたものの、いくつかの問題に遭遇した。

問題その1。POV-Ray が起動してない状態で、Moray から POV-Ray を呼び出す分には動作してくれるのだけど、POV-Ray が起動している状態で Moray から POV-Ray を呼び出そうとすると POV-Ray が固まって無反応になってしまう。ウインドウの閉じるボタンすら反応しない。

タスクマネージャ等で POV-Ray を強制終了すると、その後は Moray が、無反応→少し反応→無反応、を繰り返す。おそらく、POV-Ray との通信を試みる → 失敗する → 通信を試みる、を繰り返してる気がする…。

なので、Moray から POV-Ray を呼び出してレンダリングができたら、POV-Ray はエディタ画面も含めて一旦終了して、次回のレンダリングに備える必要がある。これが地味に面倒臭い。

問題その2。Moray から POV-Ray を呼び出した際、POV-Ray は最小化された状態で起動するので、タスクバー上の POV-Ray のアイコンをクリックしてアクティブ化しないとレンダリングウインドウを拝めない。これもまた地味に面倒臭い。

問題その3。POV-Ray 3.6 のレンダリング速度は…めっちゃ遅かった…。まるで亀のような歩みで、じわじわとレンダリングがされていく。POV-Ray 3.7 でマルチコアに対応したらしいけど、そのおかげで、POV-Ray 3.7 なら一瞬でレンダリングが終わっていたのだろう…。

とは言え、一応、Windows10上でも、Moray V3.5 から POV-Ray を呼び出してレンダリングすることはできる、と分かった。そして、利用できる POV-Ray は 3.6.2 に限られることも分かった。
  • POV-Ray 3.5 は Windows10上では動かない。レンダリングしようとすると固まる。
  • POV-Ray 3.7以降を Moray から呼び出そうとすると .ini の解析ができなくて POV-Ray でレンダリングできない。

余談。Morayはオープンソース化が難しい模様。 :

余談だけど。関連情報を探していたら気になる話を見かけた。

_POV-Ray: Newsgroups: povray.off-topic: whither POV-Ray ??

Moray のソースコードは作者から与えられたのではなく、POV-Ray関係の開発者さんがお金を出して個人で購入したもの、だったそうで。更に、そのまま公開できる種類のソースコードでもないらしい。ツールバー一つとっても権利関係の問題で書き直さないとダメとか、クリーンルームで開発しないとオープンソースにできないかもしれない、とか言ってるように読めた。

そういう状況のソフトだったのね…。なかなか厳しい…。放置状態に見えてしまったけど、そこには理由があったのだな…。

余談。POV-Ray 3.6.2 のiniの場所。 :

POV-Ray 3.6.x は、iniフォルダやincludeフォルダが、POV-Ray本体のインストールフォルダ内にあるものと思い込んでいたけど。インストールしてみたら、たしかにiniフォルダやincludeフォルダはあったものの、中身はほとんど空。readme.txt が1つ置いてあるだけで。

実際のファイル群は、ドキュメントフォルダ\POV-Ray\v3.6\ 以下に存在していた。POV-Ray 3.7 と似たフォルダ構成だった。

ちなみに、readme.txt には、以下の文が書いてあった。
The INI files can now be found in your Documents directory under 'POV-Ray'.
やはり、ドキュメントフォルダ内のファイル群が実体らしい。

ラッパーを作ろうとしたけど失敗。 :

Moray の生成する .ini が、POV-Ray 3.7 の仕様と合っていないから動かないのであれば、Moray が .ini を生成した直後に何かしらで .ini を書き換えてしまって、その後 POV-Ray 3.7 を呼べば動いたりするのだろうかと疑問が湧いた。

例えば、pvengine.exe のラッパーのようなものを作成して、Moray はそのラッパーを呼び、ラッパーは Moray が生成した .ini を書き換えてから pvengine.exe を呼ぶ、みたいな。

試しに、ラッパー相当になるはずのbatファイルを書いてみた。引数、%1 - %9 を echo で表示してから pvengine.exe に引数を渡して呼ぶだけのbatファイル。そのbatファイルを、Moray の設定で、pvengine.exe の代わりに指定する。

残念ながら、その状態だと、POV-Ray (pvengine.exe) が固まってしまった。更に、Moray が pvengine.exe を起動する際、引数は何も渡されていないことも分かった。

Moray は POV-Ray に、どうやって .ini や .pov を渡しているんだろう…。やはり、DLLを介して通信して渡してるのかな…。しかし、だとしたら、POV-Ray が起動してる状態でレンダリングを指示すると POV-Ray が固まるあたりが分からん…。

何にせよ、コマンドラインで引数を渡してレンダリングせよと伝えてるわけではないっぽい。そういう簡単な(?)呼び出し方だったら、動作しない場合も改善策を出せそうなんだけど。

以上、1 日分です。

過去ログ表示

Prev - 2021/08 - 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