From df0033eede81cbb64e77339be1e7dda1ee71c5eb Mon Sep 17 00:00:00 2001 From: Eric Larson Date: Mon, 1 Mar 2021 12:57:44 -0500 Subject: [PATCH] ENH: Uniform lighting --- mne/viz/_brain/_brain.py | 3 --- mne/viz/backends/_pyvista.py | 35 ++++++++++++----------------------- 2 files changed, 12 insertions(+), 26 deletions(-) diff --git a/mne/viz/_brain/_brain.py b/mne/viz/_brain/_brain.py index 93554206f1b..1f04f34e936 100644 --- a/mne/viz/_brain/_brain.py +++ b/mne/viz/_brain/_brain.py @@ -525,9 +525,6 @@ def __init__(self, subject_id, hemi, surf, title=None, if surf == 'flat': self._renderer.set_interaction("rubber_band_2d") - if hemi == 'rh' and hasattr(self._renderer, "_orient_lights"): - self._renderer._orient_lights() - def _setup_canonical_rotation(self): from ...coreg import fit_matched_points, _trans_from_params self._rigid = np.eye(4) diff --git a/mne/viz/backends/_pyvista.py b/mne/viz/backends/_pyvista.py index 346a10eaecd..35c7d36d084 100644 --- a/mne/viz/backends/_pyvista.py +++ b/mne/viz/backends/_pyvista.py @@ -262,35 +262,24 @@ def subplot(self, x, y): def scene(self): return self.figure - def _orient_lights(self): - lights = list(self.plotter.renderer.GetLights()) - lights.pop(0) # unused headlight - lights[0].SetPosition(_to_pos(45.0, -45.0)) - lights[1].SetPosition(_to_pos(-30.0, 60.0)) - lights[2].SetPosition(_to_pos(-30.0, -60.0)) - def update_lighting(self): # Inspired from Mayavi's version of Raymond Maple 3-lights illumination for renderer in self.plotter.renderers: lights = list(renderer.GetLights()) headlight = lights.pop(0) headlight.SetSwitch(False) - for i in range(len(lights)): - if i < 3: - lights[i].SetSwitch(True) - lights[i].SetIntensity(1.0) - lights[i].SetColor(1.0, 1.0, 1.0) + # below and centered, left and above, right and above + az_el_in = ((0, -45, 0.6), (-30, 60, 0.6), (30, 60, 0.6)) + for li, light in enumerate(lights): + if li < len(az_el_in): + light.SetSwitch(True) + light.SetPosition(_to_pos(*az_el_in[li][:2])) + light.SetIntensity(az_el_in[li][2]) else: - lights[i].SetSwitch(False) - lights[i].SetPosition(_to_pos(0.0, 0.0)) - lights[i].SetIntensity(1.0) - lights[i].SetColor(1.0, 1.0, 1.0) - - lights[0].SetPosition(_to_pos(45.0, 45.0)) - lights[1].SetPosition(_to_pos(-30.0, -60.0)) - lights[1].SetIntensity(0.6) - lights[2].SetPosition(_to_pos(-30.0, 60.0)) - lights[2].SetIntensity(0.5) + light.SetSwitch(False) + light.SetPosition(_to_pos(0.0, 0.0)) + light.SetIntensity(0.0) + light.SetColor(1.0, 1.0, 1.0) def set_interaction(self, interaction): if not hasattr(self.plotter, "iren") or self.plotter.iren is None: @@ -897,7 +886,7 @@ def _rad2deg(rad): return rad * 180. / np.pi -def _to_pos(elevation, azimuth): +def _to_pos(azimuth, elevation): theta = azimuth * np.pi / 180.0 phi = (90.0 - elevation) * np.pi / 180.0 x = np.sin(theta) * np.sin(phi)