modo501 – イラディアンスキャッシュのスクリプトの一部

#python

import os

file = lx.eval('query sceneservice scene.file ? current')
file, ext = os.path.splitext(file)
cache = os.path.join(file+'.lxi')
zfile = os.path.isfile(cache)
if zfile == 1:
	os.remove(cache)

ソースの表示が重いようなので、躊躇しておりましたが久しぶりのスクリプトです。
イラディアンスキャッシュを指定の解像度の数倍で作成し、それを保存して、読み込み、解像度を戻してレンダリングするスクリプトです。

 

この後にメイン部分が入りますが、それはXSRの物をほぼそのまま拝借させていただいたので、省きます。

 

何をしているかというと、
5行目でmodoに対して開いているシーンの絶対パスを含めたファイル名を聞いて、それを「file」という変数に入れています。
6行目で、その変数に入ったパスからファイル名までと拡張子を分離し、それぞれ「file」と「ext」に入れます。
7行目で拡張子の取られた「file」に「.lxi」modoのイラディアンスキャッシュの拡張子をつなげ「zfile」に入れます。
8、9行目で「zfile」が存在するのであれば、それを削除するようにします。

 

そしてそのあとは「try」につなげて「for」のループ文で命令を回すと完成です。
多分コマンドなので、別にして書けば問題ないかと思うので、一応書いておきます。
「query sceneservice polyRender.N ?」でシーンの「Render」の数を調べます。
それを元にfor文を始め、「query sceneservice polyRender.ID ?」でIDを取得し、
「select.item」で「Render」を選択し、「render.res 0 ?*3.0」、「render.res 1 ?*3.0」で解像度をここでは3倍に設定したりします。
この要領でその他のコマンドをつなげてゆけば完成します。

 

全部自分で書いたわけではないので、公開がはばかられるのが残念ですが完成するととても便利です。
JavaScriptのように取得したパスをStringとして扱い、トリミングするのかと思いきやPythonではパスとして扱ったほうがこの場合は都合がいいようです。
「render.res 0 ?*3.0」とうのに驚かされました。指定の解像度を問い合わせ、それに3をかけてしまおうというものです。「3.0」を「2.0」にすれば2倍のものが出来ます。

 

ちなみにXSRではfor文で「xrange」というものが使われておりますが、これは行く行く無くなるコマンドのようです。

コメントする

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トラックバックする

トラックバック用URL:

アニメーションが親切に解説されております

レンダリング、ライティングの基本が分かります

図版が見やすい美術解剖書です