Spaces:
Runtime error
Runtime error
| import bpy | |
| from .materials import plane_mat # noqa | |
| 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: # gpu id | |
| 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 | |
| # bpy.context.scene.cycles.denoiser = 'OPTIX' | |
| 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 | |
| # Setup scene | |
| 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 | |
| # Remove default cube | |
| 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 | |
| # rotate camera | |
| 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 | |