20170102

shadeスクリプト shade13で、レンダリング手法を、スクリプトから指定する方法

pythonを使って、レンダリング手法を設定する。

shadeには、GUIでボタンなどを、マウス(ペンタブなど)で押して、操作する方法以外にも、CUI的に、pythonインタプリタ経由で操作する方法がある。
この方法で、レンダリング手法等を、変更してみる。

ちなみに、通常は、下の画像の様に、クリックするだけで変更できる。毎回同じ設定をちまちまやっていると、忘れてしまう事もあるので、全自動にしたい。

201701012.png

レンダラーの指定は、uuidの指定とか書いてあるけど、文字列。

レンダラーの指定は、文字列でuuidを指定して行う。uuid typeを自分で用意する必要は無い。

#レイトレ
xshade.scene().rendering.method_uuid="00000002-0000-0000-0000-000000000000"
#パストレ
xshade.scene().rendering.method_uuid="00000001-0000-0000-0000-000000000000"
#トゥーンレンダラ
xshade.scene().rendering.method_uuid="18473b78-6e0b-4beb-b514-3cc9bc31d80f"

こんな感じで書いたら、エラーが返ってこなかった。

pythonには、uuid取得のための、標準モジュールが付いているけど、使わない。
uuidって勉強するとっかかりにはなる。

rendering.image.saveで保存できない場合。

レンダリングしたはずの画像がない!

カレントディレクトリは、

import os
print os.getcwd()

で、C:\Program Files\e frontier\Shade 13 (64-bit)\binと出るんだが、ない。
Cドライブ全部検索したけど、出てこなかった。
相対参照じゃだめなの?と思ったが、多分、パーミッションの問題だと思います。
アドミニストレータ―(スーパーユーザー)じゃないから、使わせない系。

保存は、ホームディレクトリ以下へ。

import os
path = os.environ["HOMEPATH"]

で、カレントディレクトリ出る。

外部は?(外付けUSBとか)

…余裕でできた。カレントディレクトリの設定が面倒だったら、”F:\”とか、書いておけばいいかもしれない。

その他のパスに関する注意

shadeというか、pythonというか、パスを文字列表現する時全般に言えるけど、円マーク(バックスラッシュ)は、エスケープ文字だから、”C:\”としたかったら、

name = "C:\\"


ロー文字列にするとか工夫しないとダメ。
ちなみに、ロー文字列も、

r"C:\"

みたいに、\のすぐ後ろで終わる書き方は、できない。

xshade.scene().rendering.style_nameは、レンダリング手法の名前ではない。

‘’’
print xshade.scene().rendering.style_name
‘’’
で得られる文字列は、画像でいうと、この部分。

20170101.png

やりたかったのは、こっち

print xshade.scene().rendering.method_name

実際、使ってみた

ざっと、一通りのレンダラー(レンダリング手法)を試して、ホームディレクトリ直下に、「レンダラの名前.png」で保存するやつ。
『背景』や、『大域照明』を設定しなければ、パストレ、レイトレの画質は、一緒。

import os
path = os.environ["HOMEPATH"]
#path="F:"#外部に保存したい場合は、Fを、自分のUSBのドライブ文字に変えて、先頭の#をとって。

#レイトレ(ドラフト)
xshade.scene().rendering.method_uuid="00000000-0000-0000-0000-000000000000"
name = path + "\\" + xshade.scene().rendering.method_name + ".png"
xshade.scene().rendering.render()
xshade.scene().rendering.image.save(name)

#レイトレ
xshade.scene().rendering.method_uuid="00000002-0000-0000-0000-000000000000"
name = path + "\\" + xshade.scene().rendering.method_name + ".png"
xshade.scene().rendering.render()
xshade.scene().rendering.image.save(name)

#パストレ
xshade.scene().rendering.method_uuid="00000001-0000-0000-0000-000000000000"
name = path + "\\" + xshade.scene().rendering.method_name + ".png"
xshade.scene().rendering.render()
xshade.scene().rendering.image.save(name)

#トゥーンレンダラ
xshade.scene().rendering.method_uuid="18473b78-6e0b-4beb-b514-3cc9bc31d80f"
name = path + "\\" + xshade.scene().rendering.method_name + ".png"
xshade.scene().rendering.render()
xshade.scene().rendering.image.save(name)

"""
#CALLISTO 何か動かない。エラー。
xshade.scene().rendering.method_uuid="20301201-53b8-11d9-bcff-000a95baceb2"
name = path + "\\" + xshade.scene().rendering.method_name + ".png"
xshade.scene().rendering.render()
xshade.scene().rendering.image.save(name)
"""

#ワイヤフレーム
xshade.scene().rendering.method_uuid="31300000-53b8-11d9-bcff-000a95baceb2"
name = path + "\\" + xshade.scene().rendering.method_name + ".png"
xshade.scene().rendering.render()
xshade.scene().rendering.image.save(name)

一覧表

レイトレーシング(ドラフト)10.0.32 0 0 0
10.500000002-0000-0000-0000-000000000000 
レイトレーシング10.0.30 0 0 0
10.500000000-0000-0000-0000-000000000000 
パストレーシング10.0.31 0 0 0
10.500000001-0000-0000-0000-000000000000 
トゥーンレンダラ10.0.318473b78 6e0b4beb b5143cc9 bc31d80f
10.518473b78-6e0b-4beb-b514-3cc9bc31d80f
CALLISTO10.0.320301201 53b811d9 bcff000a 95baceb2
10.520301201-53b8-11d9-bcff-000a95baceb2
ワイヤフレーム10.0.331300000 53b811d9 bcff000a 95baceb2
10.531300000-53b8-11d9-bcff-000a95baceb2

 

他の3Dソフトは馬鹿みたいに高い。

開発にお金がかかったのでしょうか。倒産したとたんフリーになったBlenderみたいな例もあるので、イーフロが無くなったから、shadeもフリーになるのかなぁとか、ちらと思ったけど、そうはならなかった。

自分が、pythonを勉強し始めた理由が、shadeだし、shade信者と言ったら大袈裟ですが、まぁ、「その一歩手前」といったところでしょうか。

maya, 3dsmaxは、ハイスペックPCが、3台位買えちゃうお値段。
ソフトで60万とか100万とかってどういうことだよ。
とはいえshadeもグレードによっては、それなりのお値段ですが。
自分の中では、shade=奥浩也先生。といった印象。

shadeとほぼ同じ価格帯の、Lightwaveは、グローバルスタンダードな、エントリーモデル。
(ただし、座標系が左手系。)
ガンダムサンダーボルトの太田垣康男先生も使っているので、ちょっと欲しい。

posted by yuchan at 07:00 | Comment(0) | Shade
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: