好きなことを発信していく。コメントBlenderをPythonで操作するシリーズ第3回です。bpyモジュールを使ってみよう今回は、カメラオブジェクトを操作してシーンのレンダリングをします。2.80に対応させました。レンダリングそれではまず、レンダリングをしてみましょう。Result'という名前で生成されます。次に、生成したイメージオブジェクトを、save_render()を使ってファイルに保存します。この時、引数には保存するファイル名まで含めたパスを与える必要があります。パスは絶対パスでも相対パスでも大丈夫です。画像の形式は指定したファイル名の拡張子から自動的に判別されます。ここまでをまとめると、以下のコードでレンダリングから画像の生成までできそうですね。Result'].save_render('img/render.png')実行した結果、私の環境では以下の画像が生成されました。次はカメラを移動させてみましょう。言っても非常に簡単です。カメラオブジェクトが持つlocationプロパティの値を変更してあげれば位置を変えることができます。(しかし、2.80からはプロパティの値を直接使うことができなくなり、SetterやGetterを通じて行う必要が出てくるようです。リリースされたら確認の後、記事を修正します。8print(camera.location)3行目でカメラオブジェクトを取得し、5行目でカメラを最初の位置から9倍遠い位置に移動させています。先程見せたchange_location.pyにcamera_render.pyを結合してレンダリングしてみると、形が変な立方体がレンダリングされたと思います。その原因は、カメラオブジェクトに設定されているclip_endプロパティの値にあります。設定値を表しています。遠クリッピング面の2つがあり、近クリッピング面は、その設定値よりも近い部分はレンダリングしないことを表し、遠クリッピング面は、その設定値よりも遠い部分はレンダリングしないことを表しています。良い説明が知りたい方は、以下のサイトが参考になると思います。クリッピングプレーンつまり形が変になってしまっていたのは、立方体の一部がカメラの遠クリッピング面よりも外側になっていたからです。本当に外側になっていたのか、以下のコードで確認してみると良いと思います。{camera.clip_start}')locationプロパティ等を設定するためのオブジェクトと、カメラ固有の設定を行うためのオブジェクトが異なっていることに注意して下さい。(7行目)近クリッピング面を設定するためのプロパティclip_startもおまけで付けておきました。本記事はここまでにしたいと思います。カメラの回転の説明をしていないので、Pythonで自由にカメラを操作するにはもう少し勉強する必要がありそうですね。次回は、移したい方向を移すためのカメラの回転方法を説明し、その後に注視点の位置ベクトルから回転角を計算して設定する方法を説明します。おまけでレンダリングの解像度の設定についても説明します。RafkaC#とゲームが好き。プログラムの高速化も好き。Themesトップへ戻る。