Spaces:
Sleeping
Sleeping
| # /// script | |
| # dependencies = [ | |
| # "bpy==4.2.0", | |
| # "marimo", | |
| # "numpy==2.1.2", | |
| # ] | |
| # /// | |
| import marimo | |
| __generated_with = "0.9.9" | |
| app = marimo.App(width="medium") | |
| def __(): | |
| import numpy | |
| import bpy | |
| import time | |
| import random | |
| import marimo as mo | |
| import sys | |
| import tempfile | |
| print(sys.version) | |
| return bpy, mo, numpy, random, sys, tempfile, time | |
| def __(mo): | |
| w = mo.ui.file(kind="area") | |
| w | |
| return (w,) | |
| def __(tempfile, w): | |
| file_content = w.contents() | |
| # Create a temporary file to save the content | |
| if file_content: | |
| with tempfile.NamedTemporaryFile(suffix=".blend", delete=False) as temp_file: | |
| temp_file.write(file_content) | |
| temp_file_path = temp_file.name | |
| return file_content, temp_file, temp_file_path | |
| def __(mo): | |
| dropdown = mo.ui.dropdown( | |
| options={ | |
| "workbench": "BLENDER_WORKBENCH", | |
| "eevee": "BLENDER_EEVEE_NEXT", | |
| "cycles": "CYCLES"}, | |
| value="workbench", | |
| label="choose renderer", | |
| ) | |
| dropdown | |
| return (dropdown,) | |
| def __(bpy, dropdown, file_content, mo, temp_file_path, time): | |
| start_time = time.time() | |
| # Ensure Cycles is selected as the render engine for all view layers | |
| for layer in bpy.context.scene.view_layers: | |
| layer.cycles.use_denoising = False | |
| # Set render samples to 10 for all view layers and the scene | |
| bpy.context.scene.cycles.samples = 10 | |
| # Ensure to sync all settings | |
| bpy.context.view_layer.update() | |
| # Load the temporary .blend file into Blender | |
| if file_content: | |
| bpy.ops.wm.open_mainfile(filepath=temp_file_path) | |
| # Set render engine and resolution | |
| bpy.context.scene.render.engine = dropdown.value | |
| bpy.context.scene.render.resolution_x = 500 | |
| bpy.context.scene.render.resolution_y = 400 | |
| bpy.context.scene.cycles.samples = 5 | |
| # Render and save the image without any rotation | |
| bpy.ops.render.render() | |
| bpy.data.images["Render Result"].save_render(filepath="test.png") | |
| end_time = time.time() | |
| print(f"Script execution time: {end_time - start_time:.4f} seconds") | |
| mo.image(src="test.png") | |
| return end_time, layer, start_time | |
| def __(): | |
| return | |
| if __name__ == "__main__": | |
| app.run() | |