{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "PosixPath('/Users/jan-hendrik/projects/bpy4.2.0-solara/pages/render_output.png')" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import solara\n", "import bpy\n", "from pathlib import Path\n", "from IPython.display import Image, display\n", "\n", "# Reactive variable to track rendering status\n", "do_render = solara.reactive(False)\n", "\n", "def render_image():\n", " # Configure Blender rendering settings\n", " bpy.context.scene.render.engine = 'BLENDER_WORKBENCH'\n", " bpy.context.scene.render.resolution_x = 500\n", " bpy.context.scene.render.resolution_y = 200\n", "\n", " # Render and save the image\n", " output_path = Path.cwd() / \"render_output.png\"\n", " bpy.ops.render.render()\n", " bpy.data.images[\"Render Result\"].save_render(filepath=str(output_path))\n", " \n", " return output_path\n", "render_image()\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7e93604eed704e449113363b0e12b8c7", "version_major": 2, "version_minor": 0 }, "text/html": [ "Cannot show widget. You probably want to rerun the code cell above (Click in the code cell, and press Shift+Enter +)." ], "text/plain": [ "Cannot show ipywidgets in text" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "@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(f\"Rendering failed: {result.error}\")\n", " elif result.state == solara.ResultState.FINISHED:\n", " with solara.Column():\n", " solara.Success(\"Rendering complete.\")\n", " if result.value:\n", " # Display the rendered image using the Solara component\n", " solara.Image(result.value)\n", "\n", "# Run the Page component\n", "Page()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.10" } }, "nbformat": 4, "nbformat_minor": 4 }