{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import bpy\n", "import tempfile\n", "\n", "def enable_GPUS():\n", " bpy.data.scenes[0].render.engine = \"CYCLES\" #\"CYCLES\"\n", " # Set the device_type\n", " bpy.context.preferences.addons[\"cycles\"].preferences.compute_device_type = \"METAL\" \n", "\n", " # Set the device and feature set\n", " bpy.context.scene.cycles.device = \"CUDA\" #GPU\n", "\n", " for scene in bpy.data.scenes:\n", " scene.cycles.device = \"GPU\"\n", "\n", " bpy.context.preferences.addons[\"cycles\"].preferences.get_devices()\n", " print(bpy.context.preferences.addons[\"cycles\"].preferences.compute_device_type)\n", " for d in bpy.context.preferences.addons[\"cycles\"].preferences.devices:\n", " d[\"use\"] = True # Using all devices, include GPU and CPU\n", " print(d[\"name\"])\n", "\n", "def render_image():\n", " with tempfile.NamedTemporaryFile(suffix=\".JPEG\", delete=False) as f:\n", " bpy.context.scene.render.resolution_y = 200\n", " bpy.context.scene.render.resolution_x = 400\n", " bpy.context.scene.render.image_settings.file_format = \"JPEG\"\n", " bpy.context.scene.render.filepath = f.name\n", " # enable_GPUS()\n", " bpy.ops.render.render(animation=False, write_still=True)\n", " bpy.data.images[\"Render Result\"].save_render(\n", " filepath=bpy.context.scene.render.filepath\n", " )\n", " bpy.app.handlers.render_stats.clear()\n", " return f.name\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import solara\n", "from IPython.display import Image, display\n", "\n", "light_position = solara.reactive(3)\n", "do_render = solara.reactive(False)\n", "\n", "@solara.component\n", "def Page():\n", "\n", " def render():\n", " if do_render.value:\n", " return render_image()\n", " \n", " result = solara.use_thread(render, [do_render.value])\n", " if not do_render.value:\n", " solara.Button(\"Start Rendering\", on_click=lambda: do_render.set(True))\n", " else:\n", " if result.state == solara.ResultState.RUNNING:\n", " solara.Info(\"Rendering in progress...\")\n", " solara.ProgressLinear()\n", " elif result.state == solara.ResultState.ERROR:\n", " solara.Error(\"Rendering failed!: %s\" % result.error)\n", " elif result.state == solara.ResultState.FINISHED:\n", " with solara.Column():\n", " solara.Success(\"Rendering complete. \")\n", " print(result.value)\n", " # workaround for https://github.com/widgetti/solara/pull/267\n", " if result.value:\n", " solara.Image(result.value)\n", "\n", "Page()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import sys\n", "import os\n", "\n", "sys.stdout = open(os.devnull, 'w')\n", "sys.stderr = open(os.devnull, 'w')\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.13" } }, "nbformat": 4, "nbformat_minor": 2 }