{ "cells": [ { "cell_type": "markdown", "id": "1fe682c1-afa0-47be-8979-930e969a37c3", "metadata": {}, "source": [ "# Light interception" ] }, { "cell_type": "code", "execution_count": null, "id": "d7cef124-20d9-4c3e-abff-8c2c305c76e8", "metadata": {}, "outputs": [], "source": [ "%matplotlib notebook\n", "from openalea.rose.experiment import *\n", "from oawidgets.plantgl import PlantGL\n", "from openalea.plantgl.all import *\n", "from openalea.rose.data import manips, experiments\n", "from ipywidgets import interactive, Dropdown, Checkbox, Tab, interact_manual\n", "\n", "from openalea.spice.simulator import *\n", "from openalea.spice import Scene as spScene\n", "from openalea.spice.common.convert import pgl_to_spice, spice_add_pgl" ] }, { "cell_type": "markdown", "id": "532eac11-0b65-40ab-87e5-938cff5eafbd", "metadata": {}, "source": [ "### Experiment 2" ] }, { "cell_type": "code", "execution_count": 5, "id": "66728e06-ba44-40cd-b331-303d14b7d547", "metadata": {}, "outputs": [], "source": [ "def select_disposition(configuration):\n", " pgl_scene = sensor_exp(1) \n", " env = environment()+ experiment2(configuration)\n", "\n", " simulator = Simulator()\n", " simulator.configuration.NB_PHOTONS = int(1e7)\n", " simulator.configuration.SCALE_FACTOR = 10\n", " simulator.configuration.MAXIMUM_DEPTH = 50\n", " simulator.configuration.T_MIN = 0.01\n", " simulator.configuration.BACKFACE_CULLING = False\n", " simulator.configuration.KEEP_ALL = False\n", "\n", " # setup environmentphmap\n", " sp_scene = pgl_to_spice(pgl_scene, sensors=True, setup=False)\n", " sp_scene = spice_add_pgl(sp_scene, env, sensors=False, setup=True)\n", " shapes = []\n", " for sh in pgl_scene:\n", " if isinstance(sh.geometry, pgl.Text):\n", " continue\n", " shapes.append(sh)\n", " simulator.addFaceSensors(shapes)\n", " \n", " simulator.scene_pgl = pgl_scene + env\n", " simulator.scene = sp_scene\n", "\n", " # S2 series of lamps\n", " simulator.addPointLight(Vec3(730, 1670, 2100), 400)\n", " simulator.addPointLight(Vec3(730, 176, 2100), 400)\n", " simulator.addPointLight(Vec3(1670, 176, 2100), 400)\n", " simulator.addPointLight(Vec3(1670, 1660, 2100), 400)\n", " \n", " # run\n", " res = simulator.run()\n", " sc = simulator.visualizePhotons(mode=\"oawidgets\")\n", " rays = simulator.visualizeRays(color=0x33d17a, opacity=0.105)\n", " cmap = simulator.visualizeResults(mode='oawidgets')\n", "\n", " tab = Tab()\n", " tab.children = [sc, rays, cmap]\n", " tab.titles = [\"Photons\", \"Rays\", \"Colormap\"]\n", " display(tab)\n", " \n", " return simulator\n", "\n", "disposition=Dropdown(options=[\"0\",\"1\",\"2\",\"3\",\"4\"], value=\"1\")" ] }, { "cell_type": "code", "execution_count": null, "id": "c0f66a82-c0e7-42af-a0b5-f9b7ae0bce59", "metadata": { "scrolled": true }, "outputs": [], "source": [ "#w = interactive(select_disposition, {\"manual\": True}, configuration=disposition)\n", "#w" ] }, { "cell_type": "code", "execution_count": null, "id": "0815480a-8016-401c-b8b7-175bef06a274", "metadata": {}, "outputs": [], "source": [ "# sim = w.result\n", "# sim.results.display_face_sensor()" ] }, { "cell_type": "markdown", "id": "e6ad5333-fb92-4ef0-9cc2-9612264dc19f", "metadata": {}, "source": [ "### Experiment 3" ] }, { "cell_type": "code", "execution_count": null, "id": "d9fd7ff3-1ce0-4e83-afdf-b0a1fa769d61", "metadata": {}, "outputs": [], "source": [ "def select_experiment(manip_name=\"High_Light_Crop_1\", stage=\"FBV\", fill=True):\n", " pgl_scene = manip_named(manip_name, stage, fill)\n", " env = environment()\n", "\n", " simulator = Simulator()\n", " simulator.configuration.NB_PHOTONS = int(1e6)\n", " simulator.configuration.SCALE_FACTOR = 10\n", " simulator.configuration.MAXIMUM_DEPTH = 50\n", " simulator.configuration.T_MIN = 0.01\n", " simulator.configuration.BACKFACE_CULLING = False\n", " simulator.configuration.KEEP_ALL = False\n", "\n", " # setup environmentphmap\n", " sp_scene = pgl_to_spice(pgl_scene, sensors=True, setup=False)\n", " sp_scene = spice_add_pgl(sp_scene, env, sensors=False, setup=True)\n", " shapes = []\n", " for sh in pgl_scene:\n", " if isinstance(sh.geometry, pgl.Text):\n", " continue\n", " shapes.append(sh)\n", " simulator.addFaceSensors(shapes)\n", " \n", " simulator.scene_pgl = pgl_scene + env\n", " simulator.scene = sp_scene\n", "\n", " # S2 series of lamps\n", " simulator.addPointLight(Vec3(730, 1670, 2100), 400)\n", " simulator.addPointLight(Vec3(730, 176, 2100), 400)\n", " simulator.addPointLight(Vec3(1670, 176, 2100), 400)\n", " simulator.addPointLight(Vec3(1670, 1660, 2100), 400)\n", " \n", " # run\n", " res = simulator.run()\n", " sc = simulator.visualizePhotons(mode=\"oawidgets\")\n", " rays = simulator.visualizeRays(mode=\"oawidgets\", color=0x33d17a, opacity=0.105)\n", " cmap = simulator.visualizeResults(mode='oawidgets')\n", "\n", " tab = Tab()\n", " tab.children = [sc, rays, cmap]\n", " tab.titles = [\"Photons\", \"Rays\", \"Colormap\"]\n", " display(tab)\n", " return simulator\n", "\n", "opts = list(map(str, list(range(len(get_all_manips())))))\n", "manips_opts = sorted(list(map(str, list(manips()))))\n", "stage_opts = [\"FBV\",\"PCV\",\"OF\"]" ] }, { "cell_type": "code", "execution_count": null, "id": "9eb6d798-e9da-49de-9031-16d6d6036fdd", "metadata": {}, "outputs": [], "source": [ "manip_name=Dropdown(options=manips_opts, value=\"High_Light_Crop_1\")\n", "stage=Dropdown(options=stage_opts, value=\"FBV\")\n", "\n", "def update_stages(*args):\n", " options = experiments(manip_name.value)\n", " options = [o.name for o in options] \n", " stage.options = sorted(options)\n", "\n", "manip_name.observe(update_stages, \"value\")\n", "fill=Checkbox(value=False)" ] }, { "cell_type": "code", "execution_count": null, "id": "1b7b2dc2-b4d3-4118-9dae-4acc7dec2f2d", "metadata": {}, "outputs": [], "source": [ "w2 = interactive(select_experiment, {\"manual\": True}, manip_name=manip_name, stage=stage, fill=fill)\n", "w2" ] } ], "metadata": { "kernelspec": { "display_name": "rose", "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.14" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }