ProjectionTransferFunction, ColorTransferFunction from .utils import new_volume_render_sampler, data_source_or_all, \ get_corners, new_projection_sampler, new_mesh_sampler, \ new_interpolated_projection_sampler from yt.utilities.lib.bounding_volume_hierarchy import BVH from yt.visualization.image_writer import apply_colormap from yt.data_objects.image_array import ImageArray from .zbuffer_array import ZBuffer from yt.utilities.lib.misc_utilities import \ zlines, zpoints from yt.utilities.on_demand_imports import NotAModule try: from yt.utilities.lib import mesh_traversal except ImportError: mesh_traversal = NotAModule("pyembree") ytcfg["yt", "ray_tracing_engine"] = "yt" try: from yt.utilities.lib import mesh_construction except ImportError: mesh_construction = NotAModule("pyembree") ytcfg["yt", "ray_tracing_engine"] = "yt" def invalidate_volume(f): @wraps(f) def wrapper(*args, **kwargs): ret = f(*args, **kwargs) obj = args[0] if isinstance(obj._transfer_function, ProjectionTransferFunction): obj.sampler_type = 'projection'
from yt.data_objects.selection_objects.data_selection_objects import ( YTSelectionContainer3D, ) from yt.data_objects.static_output import Dataset from yt.utilities.lib import bounding_volume_hierarchy from yt.utilities.lib.image_samplers import ( InterpolatedProjectionSampler, ProjectionSampler, VolumeRenderSampler, ) from yt.utilities.on_demand_imports import NotAModule try: from yt.utilities.lib.embree_mesh import mesh_traversal # type: ignore # Catch ValueError in case size of objects in Cython change except (ImportError, ValueError): mesh_traversal = NotAModule("pyembree") def data_source_or_all(data_source): if isinstance(data_source, Dataset): data_source = data_source.all_data() if not isinstance(data_source, (YTSelectionContainer3D, type(None))): raise RuntimeError( "The data_source is not a valid 3D data container.\n" "Expected an object of type YTSelectionContainer3D but received " "an object of type %s." % type(data_source)) return data_source def new_mesh_sampler(camera, render_source, engine): params = ensure_code_unit_params(camera._get_sampler_params(render_source))
ColorTransferFunction, ProjectionTransferFunction, TransferFunction, ) from .utils import ( data_source_or_all, get_corners, new_interpolated_projection_sampler, new_mesh_sampler, new_projection_sampler, new_volume_render_sampler, ) from .zbuffer_array import ZBuffer OptionalModule = Union[ModuleType, NotAModule] mesh_traversal: OptionalModule = NotAModule("pyembree") mesh_construction: OptionalModule = NotAModule("pyembree") def _setup_raytracing_engine(ytcfg: YTConfig) -> None: global mesh_traversal, mesh_construction try: from yt.utilities.lib.embree_mesh import mesh_traversal # type: ignore except (ImportError, ValueError): # Catch ValueError in case size of objects in Cython change ytcfg["yt", "ray_tracing_engine"] = "yt" try: from yt.utilities.lib.embree_mesh import mesh_construction # type: ignore except (ImportError, ValueError): # Catch ValueError in case size of objects in Cython change ytcfg["yt", "ray_tracing_engine"] = "yt"