Light interception#
[1]:
%matplotlib notebook
from openalea.rose.experiment import *
from oawidgets.plantgl import PlantGL
from openalea.plantgl.all import *
from openalea.rose.data import manips, experiments
from ipywidgets import interactive, Dropdown, Checkbox, Tab, interact_manual
from openalea.spice.simulator import *
from openalea.spice import Scene as spScene
from openalea.spice.common.convert import pgl_to_spice, spice_add_pgl
/home/docs/checkouts/readthedocs.org/user_builds/openalea-rose/conda/latest/lib/python3.12/site-packages/openalea.core-2.4.2-py3.9.egg/openalea/core/pkgmanager.py:49: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
from pkg_resources import iter_entry_points
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
Cell In[1], line 8
5 from openalea.rose.data import manips, experiments
6 from ipywidgets import interactive, Dropdown, Checkbox, Tab, interact_manual
----> 8 from openalea.spice.simulator import *
9 from openalea.spice import Scene as spScene
10 from openalea.spice.common.convert import pgl_to_spice, spice_add_pgl
ModuleNotFoundError: No module named 'openalea.spice'
Experiment 2#
[2]:
def select_disposition(configuration):
pgl_scene = sensor_exp(1)
env = environment()+ experiment2(configuration)
simulator = Simulator()
simulator.configuration.NB_PHOTONS = int(1e7)
simulator.configuration.SCALE_FACTOR = 10
simulator.configuration.MAXIMUM_DEPTH = 50
simulator.configuration.T_MIN = 0.01
simulator.configuration.BACKFACE_CULLING = False
simulator.configuration.KEEP_ALL = False
# setup environmentphmap
sp_scene = pgl_to_spice(pgl_scene, sensors=True, setup=False)
sp_scene = spice_add_pgl(sp_scene, env, sensors=False, setup=True)
shapes = []
for sh in pgl_scene:
if isinstance(sh.geometry, pgl.Text):
continue
shapes.append(sh)
simulator.addFaceSensors(shapes)
simulator.scene_pgl = pgl_scene + env
simulator.scene = sp_scene
# S2 series of lamps
simulator.addPointLight(Vec3(730, 1670, 2100), 400)
simulator.addPointLight(Vec3(730, 176, 2100), 400)
simulator.addPointLight(Vec3(1670, 176, 2100), 400)
simulator.addPointLight(Vec3(1670, 1660, 2100), 400)
# run
res = simulator.run()
sc = simulator.visualizePhotons(mode="oawidgets")
rays = simulator.visualizeRays(color=0x33d17a, opacity=0.105)
cmap = simulator.visualizeResults(mode='oawidgets')
tab = Tab()
tab.children = [sc, rays, cmap]
tab.titles = ["Photons", "Rays", "Colormap"]
display(tab)
return simulator
disposition=Dropdown(options=["0","1","2","3","4"], value="1")
[3]:
#w = interactive(select_disposition, {"manual": True}, configuration=disposition)
#w
[4]:
# sim = w.result
# sim.results.display_face_sensor()
Experiment 3#
[5]:
def select_experiment(manip_name="High_Light_Crop_1", stage="FBV", fill=True):
pgl_scene = manip_named(manip_name, stage, fill)
env = environment()
simulator = Simulator()
simulator.configuration.NB_PHOTONS = int(1e6)
simulator.configuration.SCALE_FACTOR = 10
simulator.configuration.MAXIMUM_DEPTH = 50
simulator.configuration.T_MIN = 0.01
simulator.configuration.BACKFACE_CULLING = False
simulator.configuration.KEEP_ALL = False
# setup environmentphmap
sp_scene = pgl_to_spice(pgl_scene, sensors=True, setup=False)
sp_scene = spice_add_pgl(sp_scene, env, sensors=False, setup=True)
shapes = []
for sh in pgl_scene:
if isinstance(sh.geometry, pgl.Text):
continue
shapes.append(sh)
simulator.addFaceSensors(shapes)
simulator.scene_pgl = pgl_scene + env
simulator.scene = sp_scene
# S2 series of lamps
simulator.addPointLight(Vec3(730, 1670, 2100), 400)
simulator.addPointLight(Vec3(730, 176, 2100), 400)
simulator.addPointLight(Vec3(1670, 176, 2100), 400)
simulator.addPointLight(Vec3(1670, 1660, 2100), 400)
# run
res = simulator.run()
sc = simulator.visualizePhotons(mode="oawidgets")
rays = simulator.visualizeRays(mode="oawidgets", color=0x33d17a, opacity=0.105)
cmap = simulator.visualizeResults(mode='oawidgets')
tab = Tab()
tab.children = [sc, rays, cmap]
tab.titles = ["Photons", "Rays", "Colormap"]
display(tab)
return simulator
opts = list(map(str, list(range(len(get_all_manips())))))
manips_opts = sorted(list(map(str, list(manips()))))
stage_opts = ["FBV","PCV","OF"]
[6]:
manip_name=Dropdown(options=manips_opts, value="High_Light_Crop_1")
stage=Dropdown(options=stage_opts, value="FBV")
def update_stages(*args):
options = experiments(manip_name.value)
options = [o.name for o in options]
stage.options = sorted(options)
manip_name.observe(update_stages, "value")
fill=Checkbox(value=False)
[7]:
w2 = interactive(select_experiment, {"manual": True}, manip_name=manip_name, stage=stage, fill=fill)
w2
[7]: