|
import bpy |
|
from .materials import plane_mat |
|
|
|
|
|
def setup_renderer(denoising=True, oldrender=True, accelerator="gpu", device=[0]): |
|
bpy.context.scene.render.engine = "CYCLES" |
|
bpy.data.scenes[0].render.engine = "CYCLES" |
|
if accelerator.lower() == "gpu": |
|
bpy.context.preferences.addons[ |
|
"cycles" |
|
].preferences.compute_device_type = "CUDA" |
|
bpy.context.scene.cycles.device = "GPU" |
|
i = 0 |
|
bpy.context.preferences.addons["cycles"].preferences.get_devices() |
|
for d in bpy.context.preferences.addons["cycles"].preferences.devices: |
|
if i in device: |
|
d["use"] = 1 |
|
print(d["name"], "".join(str(i) for i in device)) |
|
else: |
|
d["use"] = 0 |
|
i += 1 |
|
|
|
if denoising: |
|
bpy.context.scene.cycles.use_denoising = True |
|
|
|
bpy.context.scene.render.tile_x = 256 |
|
bpy.context.scene.render.tile_y = 256 |
|
bpy.context.scene.cycles.samples = 64 |
|
|
|
|
|
if not oldrender: |
|
bpy.context.scene.view_settings.view_transform = "Standard" |
|
bpy.context.scene.render.film_transparent = True |
|
bpy.context.scene.display_settings.display_device = "sRGB" |
|
bpy.context.scene.view_settings.gamma = 1.2 |
|
bpy.context.scene.view_settings.exposure = -0.75 |
|
|
|
|
|
|
|
def setup_scene( |
|
res="high", denoising=True, oldrender=True, accelerator="gpu", device=[0] |
|
): |
|
scene = bpy.data.scenes["Scene"] |
|
assert res in ["ultra", "high", "med", "low"] |
|
if res == "high": |
|
scene.render.resolution_x = 1280 |
|
scene.render.resolution_y = 1024 |
|
elif res == "med": |
|
scene.render.resolution_x = 1280 // 2 |
|
scene.render.resolution_y = 1024 // 2 |
|
elif res == "low": |
|
scene.render.resolution_x = 1280 // 4 |
|
scene.render.resolution_y = 1024 // 4 |
|
elif res == "ultra": |
|
scene.render.resolution_x = 1280 * 2 |
|
scene.render.resolution_y = 1024 * 2 |
|
|
|
scene.render.film_transparent= True |
|
world = bpy.data.worlds["World"] |
|
world.use_nodes = True |
|
bg = world.node_tree.nodes["Background"] |
|
bg.inputs[0].default_value[:3] = (1.0, 1.0, 1.0) |
|
bg.inputs[1].default_value = 1.0 |
|
|
|
|
|
if "Cube" in bpy.data.objects: |
|
bpy.data.objects["Cube"].select_set(True) |
|
bpy.ops.object.delete() |
|
|
|
bpy.ops.object.light_add( |
|
type="SUN", align="WORLD", location=(0, 0, 0), scale=(1, 1, 1) |
|
) |
|
bpy.data.objects["Sun"].data.energy = 1.5 |
|
|
|
|
|
bpy.ops.object.empty_add( |
|
type="PLAIN_AXES", align="WORLD", location=(0, 0, 0), scale=(1, 1, 1) |
|
) |
|
bpy.ops.transform.resize( |
|
value=(10, 10, 10), |
|
orient_type="GLOBAL", |
|
orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), |
|
orient_matrix_type="GLOBAL", |
|
mirror=True, |
|
use_proportional_edit=False, |
|
proportional_edit_falloff="SMOOTH", |
|
proportional_size=1, |
|
use_proportional_connected=False, |
|
use_proportional_projected=False, |
|
) |
|
bpy.ops.object.select_all(action="DESELECT") |
|
|
|
setup_renderer( |
|
denoising=denoising, oldrender=oldrender, accelerator=accelerator, device=device |
|
) |
|
return scene |
|
|