Source code for tecplot.plot.effects

from builtins import super

from ..tecutil import sv
from .. import session


[docs]class LightSource(session.Style): """Three-dimensional light source style control. The light source is a point of light infinitely far from the drawing area. .. code-block:: python :emphasize-lines: 13-16 from os import path import tecplot as tp from tecplot.constant import PlotType, Color examples_dir = tp.session.tecplot_examples_directory() infile = path.join(examples_dir, 'SimpleData', 'F18.plt') dataset = tp.data.load_tecplot(infile) frame = tp.active_frame() plot = frame.plot(PlotType.Cartesian3D) plot.activate() plot.light_source.direction = (0., -0.7, 0.9) plot.light_source.intensity = 70 plot.light_source.specular_intensity = 80 plot.light_source.specular_shininess = 50 tp.export.save_png('light_source.png') .. figure:: /_static/images/light_source.png :width: 300px :figwidth: 300px """ def __init__(self, plot): self.plot = plot super().__init__(sv.GLOBALTHREED, sv.LIGHTSOURCE, uniqueid=self.plot.frame.uid) @property def background_light(self): """`float`: Percentage intensity of the omni-directional fill light. Example usage:: >>> plot.light_source.background_light = 70.0 """ return self._get_style(float, sv.BACKGROUNDLIGHT) @background_light.setter def background_light(self, value): self._set_style(float(value), sv.BACKGROUNDLIGHT) @property def intensity(self): """`float`: Percentage intensity of the light source. Example usage:: >>> plot.light_source.intensity = 50.0 """ return self._get_style(float, sv.INTENSITY) @intensity.setter def intensity(self, value): self._set_style(float(value), sv.INTENSITY) @property def specular_intensity(self): """`float`: Percentage intensity of specular highlights. Set this to zero to turn off specular effects:: >>> plot.light_source.specular_intensity = 0 """ if self._get_style(bool, sv.INCLUDESPECULAR): return self._get_style(float, sv.SPECULARINTENSITY) else: return 0 @specular_intensity.setter def specular_intensity(self, value): if not value: self._set_style(False, sv.INCLUDESPECULAR) else: self._set_style(True, sv.INCLUDESPECULAR) self._set_style(float(value), sv.SPECULARINTENSITY) @property def specular_shininess(self): """`float`: Percentage of shininess for specular highlights. Example usage:: >>> plot.light_source.specular_shininess = 80.0 """ return self._get_style(float, sv.SPECULARSHININESS) @specular_shininess.setter def specular_shininess(self, value): self._set_style(float(value), sv.SPECULARSHININESS) @property def surface_color_contrast(self): """`float`: Percentage of contrast for surface colors. Example usage:: >>> plot.light_source.surface_color_contrast = 80.0 """ return self._get_style(float, sv.SURFACECOLORCONTRAST) @surface_color_contrast.setter def surface_color_contrast(self, value): self._set_style(float(value), sv.SURFACECOLORCONTRAST) @property def direction(self): """`tuple`: :math:`(x, y, z)` direction of the light rays. The direction is in the view coordinate system where :math:`z` goes into the page and the origin of :math:`(x, y)` is in the lower left corner. The default is :math:`(-0.2, -0.2, 0.959)`:: >>> plot.light_source.direction = (0, -0.7, 0.9) """ return session.XYZ(self, sv.XYZDIRECTION) @direction.setter def direction(self, values): session.XYZ(self, sv.XYZDIRECTION)[:] = values @property def force_gouraud_for_contour_flood(self): """`bool`: Force gouraud effects for shaded continuous flooding. Example usage:: >>> plot.light_source.force_gouraud_for_contour_flood = True """ return self._get_style(bool, sv.FORCEGOURAUDFOR3DCONTFLOOD) @force_gouraud_for_contour_flood.setter def force_gouraud_for_contour_flood(self, value): self._set_style(bool(value), sv.FORCEGOURAUDFOR3DCONTFLOOD) @property def force_paneled_for_cell_flood(self): """`bool`: Force paneled effects for shaded cell flooding. Example usage:: >>> plot.light_source.force_paneled_for_cell_flood = True """ return self._get_style(bool, sv.FORCEPANELEDFOR3DCELLFLOOD) @force_paneled_for_cell_flood.setter def force_paneled_for_cell_flood(self, value): self._set_style(bool(value), sv.FORCEPANELEDFOR3DCELLFLOOD)