示例#1
0
    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'
示例#2
0
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))
示例#3
0
    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"