| 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 |
|
|