; docformat = 'rst' ;+ ; Simple example of displaying a volume in object graphics. ; ; :Params: ; vol : in, required, type=3D numeric array ; volume to display ; ; :Keywords: ; _extra : in, optional, type=keywords ; keywords to IDLgrVolume::init or IDLgrWindow::init ;- pro mg_ogvolume_example, vol, _extra=e compile_opt strictarr viewgroup = obj_new('IDLgrViewGroup') view = obj_new('IDLgrView', color=[0, 0, 0]) viewgroup->add, view model = obj_new('IDLgrModel') view->add, model volume = obj_new('IDLgrVolume', bytscl(vol), $ interpolate=1, $ _extra=e) volume->getProperty, xrange=xr, yrange=yr, zrange=zr xc = mg_linear_function(xr, [-0.5, 0.5]) yc = mg_linear_function(yr, [-0.5, 0.5]) zc = mg_linear_function(zr, [-0.5, 0.5]) volume->setProperty, xcoord_conv=xc, ycoord_conv=yc, zcoord_conv=zc palette = obj_new('IDLgrPalette') viewgroup->add, palette palette->loadCT, 5 palette->getProperty, red_values=r, green_values=g, blue_values=b volume->setProperty, rgb_table0=[[r], [g], [b]] model->rotate, [1, 0, 0], -90 model->rotate, [0, 1, 0], -15 model->rotate, [1, 0, 0], 25 xaxis = obj_new('IDLgrAxis', direction=0, range=xr, color=[255, 255, 255]) model->add, xaxis yaxis = obj_new('IDLgrAxis', direction=1, range=yr, color=[255, 255, 255]) model->add, yaxis zaxis = obj_new('IDLgrAxis', direction=2, range=zr, color=[255, 255, 255]) model->add, zaxis model->add, volume xaxis->setProperty, xcoord_conv=xc, ycoord_conv=yc, zcoord_conv=zc yaxis->setProperty, xcoord_conv=xc, ycoord_conv=yc, zcoord_conv=zc zaxis->setProperty, xcoord_conv=xc, ycoord_conv=yc, zcoord_conv=zc window = obj_new('IDLgrWindow', dimensions=[500, 500], $ graphics_tree=viewgroup, _extra=e) window->draw end