shade13のスクリプトで、レンダリングする。
3DCGのモデルを、レンダリングして、画像化する。
3DCGのモデルを、レンダリング方程式というのを解いて、画像にする。らしい。
しかし、ユーザーが、式を知らなくても、ボタン一つでやってくれる。
レンダリングという言葉自体は、DTM(デスクトップミュージックの略)でも使われている。
譜面から、音楽を作るときとか、レンダリングとかいう事もある。
日本語で書くと、「書き出し」だろうか。
GUIでは、
- レンダリング>レンダリング開始
- レンダリング>レンダリング設定>(出現したイメージウィンドウの)レンダリング
と押していけば、レンダリングできる。
レンダリングは、rendering.render()
xshade.scene().rendering.render()
を使って、レンダリングする。
これだけだと、イメージウィンドウに結果が表示されるだけで、画像の保存等は行ってくれない。
rendering.render()は、選択したオブジェクトのみしか、レンダリングしない。
rendering.render()は、選択したオブジェクトのみしか、レンダリングしていない。
通常、スクリプトウィンドウから操作するときだって、GUIと併用して操作するとは、思いますが、どうしてもCUIのみでやりたい人は、次のselect_parent(-1)を使うべき。
全て選択するには、select_parent(-1)
xshade.scene().select_parent(-1)
#xshade.scene().select_all
を使えば、ルートパートを選択してくれる。もちろん、レンダリング対象になっていないものは、レンダリングされない。
レンダリング結果の、イメージを保存する、rendering.image.save(ファイルパス)
xshade.scene().rendering.image.save(filePath)
画像の種類は、ファイルパス末尾の拡張子から自動的に判別される。
- ファイル名だけではだめ。
- ファイルパスである必要がある。
絶対参照で、”C:\”から、つらつら書いていくべきでしょう。
ファイルパスを間違えると、記録されない。
自分の認識では、
- shadeは、ホームディレクトリ以下 か、外付けドライブにしか保存できない。
- shadeは、Cドライブ直下とか、カレントディレクトリ(os.getcwd()で取得したパス)には、画像を保存できない。
間違ったパスに保存しても、メッセージ欄に、エラーが表示されない。(これが厄介。)
だから、ホームディレクトリに、”hoge.png”を保存したいときは、
import os
homePath = os.environ["HOMEPATH"]#ウィンドウズ版ではこうだった。mac版は知らない。
ext = ".png" #".jpg"とかでも可。
separator = "\\"
name = "hoge"
filePath = homePath + separator + name + ext
とするといいかもしれない。
homepathだけだと、フォルダ区切りのバックスラッシュ(もしくは円マーク)がないので、だめ。保存してくれない。
ウィンドウズ環境では、バックスラッシュは、¥マークになりますよ。二連続でバックスラッシュ(もしくは¥)なのは、エスケープ文字だから。
外付けHDDとか、USBメモリに保存したいときは、そのままできる。
仮に、F:に、USBフラッシュメモリ等が挿さっているとして、
extrnalDisc = "F:\\"
ext = ".png" #".jpg"とかでも可。
name = "hoge"
filePath = extrnalDisc + name + ext
で、使えると思う。
4つまとめて完成。
このスクリプトは、
- ルートパートを選択し、
- ホームディレクトリ直下の、ファイル名”hoge”(拡張子.png)のファイルパスを仮に用意し、
- 選択した部分をレンダリングし、
- イメージウィンドウに表示された、レンダリング結果を、2.で準備したファイルパスに保存する。
スクリプトです。
2.は、外付けに保存したいときは、書き換えてほしい。
#1
xshade.scene().select_parent(-1)
#2
import os
homePath = os.environ["HOMEPATH"]#ウィンドウズ版ではこうだった。mac版は知らない。
ext = ".png" #".jpg"とかでも可。
name = "hoge"filePath = homePath + "\\" + name + ext
#3
xshade.scene().rendering.render()
#4
xshade.scene().rendering.image.save(filePath)
連番画像は文字列操作で。
shadeで、連番画像で保存するには、
#1
xshade.scene().select_parent(-1)
#2
import os
homePath = os.environ["HOMEPATH"]#ウィンドウズ版ではこうだった。mac版は知らない。
ext = ".png" #".jpg"とかでも可。
for i in range(10):
name = "hoge" + "-%02.f"%i
filePath = homePath + "\\" + name + ext
#ここら辺に、オブジェクトなどを変化させるコマンドを入力する。#
#3
xshade.scene().rendering.render()
#4
xshade.scene().rendering.image.save(filePath)
とかすればいいんじゃないかと思う。
20170224 アクセス解析画面で、見てくれた人がいたようなので、
- マークダウンがが適用されていない部分を修正。
- 文章で、間違えている個所を修正(ホームディレクトリ→ホームディレクトリ以下)