def build_transfer_function(self):
        """
        Builds the transfer function according to the current state of the
        TransferFunctionHelper.

        Parameters
        ----------
        None

        Returns
        -------

        A ColorTransferFunction object.

        """
        if self.bounds is None:
            mylog.info(
                'Calculating data bounds. This may take a while.' +
                '  Set the TransferFunctionHelper.bounds to avoid this.')
            self.set_bounds()

        if self.log:
            mi, ma = np.log10(self.bounds[0]), np.log10(self.bounds[1])
        else:
            mi, ma = self.bounds

        self.tf = ColorTransferFunction((mi, ma),
                                        grey_opacity=self.grey_opacity,
                                        nbins=512)
        return self.tf
Beispiel #2
0
def make_yt_transfer(
        bounds=(0.0, 1.0), colormap="algae", bins=1000, scale=1.0,
        scale_func=None):
    """Defines a transfer function offset given a transfer function.
	"""
    mi, ma = bounds
    transfer = ColorTransferFunction((mi, ma), bins)
    if scale_func == None:
        transfer.map_to_colormap(mi, ma, colormap=colormap, scale=1.0)
    else:
        transfer.map_to_colormap(mi,
                                 ma,
                                 colormap=colormap,
                                 scale_func=scale_func)

    return transfer
def main():
    global window, ts, width, height
    (width, height) = (1024, 1024)

    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH)
    glutInitWindowSize(width, height)
    glutInitWindowPosition(0, 0)
    window = glutCreateWindow("Stereo Volume Rendering")

    glutDisplayFunc(display)
    glutIdleFunc(idle)
    glutReshapeFunc(resize)
    glutMouseFunc(mouseButton)
    glutMotionFunc(mouseMotion)
    glutKeyboardFunc(keyPressed)
    init_gl(width, height)

    # create texture for blitting to screen
    create_texture(width, height)

    import pycuda.gl.autoinit
    import pycuda.gl
    cuda_gl = pycuda.gl

    create_PBO(width, height)
    # ----- Load and Set Volume Data -----

    density_grid = np.load("/home/bogert/dd150_log_densities.npy")

    mi, ma = 21.5, 24.5
    bins = 5000
    tf = ColorTransferFunction((mi, ma), bins)
    tf.map_to_colormap(mi, ma, colormap="algae", scale_func=scale_func)

    ts = TheiaScene(volume=density_grid,
                    raycaster=FrontToBackRaycaster(size=(width, height),
                                                   tf=tf))

    ts.get_raycaster().set_sample_size(0.01)
    ts.get_raycaster().set_max_samples(5000)
    ts.update()

    glutMainLoop()
#load the uniform grid from a numpy array file
bolshoi = "/home/bogert/log_densities_1024.npy"
density_grid = np.load(bolshoi)

#Set the TheiaScene to use the density_grid and
#setup the raycaster for a resulting 1080p image
ts = TheiaScene(volume=density_grid,
                raycaster=FrontToBackRaycaster(size=(1920, 1080)))

#the min and max values in the data to color
mi, ma = 0.0, 3.6

#setup colortransferfunction
bins = 5000
tf = ColorTransferFunction((mi, ma), bins)
tf.map_to_colormap(0.5, ma, colormap="spring", scale_func=scale_func)

#pass the transfer function to the ray caster
ts.source.raycaster.set_transfer(tf)

#Initial configuration for start of video
#set initial opacity and brightness values
#then zoom into the center of the data 30%
ts.source.raycaster.set_opacity(0.03)
ts.source.raycaster.set_brightness(2.3)
ts.camera.zoom(30.0)

#path to ffmpeg executable
FFMPEG_BIN = "/usr/local/bin/ffmpeg"