2016-07-05 11 views
2

Blenderでは、非常に大きな画像出力(30000 x 18000)で巨大なシーンをレンダリングしようとしています。ブレンダー:スプリットカメラでシーンを非常に大きな出力画像にレンダリングできますか?

これは、小さなPOT画像にスライスされるゲーム背景のアセットで、カメラがズームインされているため(詳細には大きな画像出力)、詳細を保存しようとしています。

技術的にはこれをそのままレンダリングできますが、レンダリングのパフォーマンスに問題が生じることがあります。

私のカメラを4つの小さなカメラに分割する方法があるかどうかは、15000x9000の画像を1つずつレンダリングして、全体の画像の四分円をPSで合成してから再びスライスします。

4つのカメラを正確に配置する方法はありますか?ピクセル精度で全体画像の四分円をレンダリングする方法はありますか?

ありがとうございました。

答えて

2

複数のカメラを設定したり、カメラを移動する必要はありません。小さなpythonスクリプトがあなたのためにレンダリングを切り詰めることができます。これの欠点の1つは、スクリプトからレンダリングする間、ブレンダーはウィンドウを更新しないということです。

最終的なイメージをカットしたいと思うように、とにかくこれを使用して最終的な部分にカットしたいかもしれません。

各レンダーはシーンデータ全体を読み込む必要があるため、パフォーマンスの向上やラムの使用量の削減などの利点を期待しないでください。反射や影を考えてください。レンダリング時に作成された最終的なイメージファイルを持つことができ、1つのイメージだけを終了してレンダリングを開始することができ、一度に完了する必要がある場合、muiltipleを介して負荷を共有することもできます各コンピュータに異なるタイルセットをレンダリングさせることができます。

BlenderにはRender Borderという機能があり、最終的な画像の一部だけをレンダリングすることができます。 Pythonを使用すると、境界線を目的のサイズに設定して複数回レンダリングできます。また、最も重要な点は、指定された枠線に最終画像を切り抜くこともできますが、切り抜かずにアルファをサポートする画像フォーマットに保存すると、最終的な解像度画像が完成します。これは、各イメージを新しいレイヤーとして開くことができ、ピースが最終イメージの正しい位置に自動的に表示されることを意味します。

境界の最小値/最大値は、最終解像度のパーセンテージで、0.0〜1.0の値で入力します。

import bpy 
import os 

# cut final image into 10 by 10 smaller images 
cut_into = 10 
# location of folder to save images to 
output_folder = '//renders' 

rndr = bpy.context.scene.render 

rndr.use_border = True 
rndr.use_crop_to_border = False 

for row in range(cut_into): 
    for column in range(cut_into): 
     filename = "chunk_{}_{}".format(row + 1, column + 1) 
     rndr.filepath = os.path.join(output_folder, filename) 

     rndr.border_min_x = (1/cut_into) * row 
     rndr.border_max_x = (1/cut_into) * (row + 1) 
     rndr.border_min_y = (1/cut_into) * column 
     rndr.border_max_y = (1/cut_into) * (column + 1) 

     bpy.ops.render.render(write_still=True) 

あなたが前にブレンダーでのpythonを使用していない場合は、ブレンダーのtext editorにこのスクリプトを貼り付け、[スクリプトの実行]ボタンをクリックすることができます。または、テキストファイルに保存し、端末を使用してGUIなしで使用できます -

blender -b myfile.blend -P this_script.py 
関連する問題