For the structured_grid_set, the outline will appear as lines corresponding to the topological edges of the structured grid. For all other geometry classes (i.e., unstructured_grid_set, etc.) the outline is lines corresponding to the geometry bounding box.
structured_grid_set: data_set_object Display an outline for the structured grid provided by the visage_data_set object data_set_object. Note that data_set_object is a pointer to the object, hence this message is only used internally.
unstructured_point_set: data_set_object Display an outline for the unstructured point set provided by the visage_data_set object data_set_object. Note that data_set_object is a pointer to the object, hence this message is only used internally.
structured_point_set: data_set_object Display an outline for the structured point set provided by the visage_data_set object data_set_object. Note that data_set_object is a pointer to the object, hence this message is only used internally.
tagus: data_set_object Display an outline for the tagus geometry provided by the visage_data_set object data_set_object. Note that data_set_object is a pointer to the
object, hence this message is only used internally.
renderer_names? Get the name of the renderers used to draw the display. Used internally.
visage_outline new: outline;
The difficulty comes in because a data set must be supplied. In the following complete example, an outline is created to contain some other displays.
/* * Create VISAGE data group hierarchy consisting of a single data * group, a single data set, and an outline, geometry, and iso-surfaec * display. */ visage_data_group new: data_group data_sets=data_set_1 ;
visage_data_set new: data_set_1 displays=(border,g1,iso) geometry= grid scalar_data= pressure vector_data= velocity ;
visage_outline new: border color=(1,0,0) ; visage_geometry new: g1 extent=(1,1,1,3,1,4) ; visage_iso_surface new: iso value=2.0 ;
/* * Create data for data set. Can also use various readers to read * the data. */ /* * Create structured grid geometry. Points are xyz ordered: i * varies fastest, then j, then k. */ structured_grid_set new: grid dimensions= (2,3,4); grid data=(0., 0., 0., 1., 0., 0., 0., 1., 0., 1., 1., 0., 0., 2., 0., 1., 2., 0.) data+(0., 0., 1., 1., 0., 1., 0., 1., 1., 1., 1., 1., 0., 2., 1., 1., 2., 1.)
data+(0., 0., 2., 1., 0., 2., 0., 1., 2., 1., 1., 2., 0., 2., 2., 1., 2., 2.) data+(0., 0., 3., 1., 0., 3., 0., 1., 3., 1., 1., 3., 0., 2., 3., 1., 2., 3.) ; /* * Vector data. Must correspond exactly to grid points. */ visage_vector new: velocity; velocity data= (0., 0., 0., 1., 0., 0., 0., 2., 0., 0., 0., 3.) data+ (1., 0., 0., 1., 0., 0., 0., 2., 0., 0., 0., 3.) data+ (2., 0., 0., 1., 0., 0., 0., 2., 0., 0., 0., 3.) data+ (2., 0., 0., 1., 0., 0., 0., 2., 0., 0., 0., 3.) data+ (2., 0., 0., 1., 0., 0., 0., 2., 0., 0., 0., 3.) data+ (3., 0., 0., 1., 0., 0., 0., 2., 0., 0., 0., 3.) ; /* * Scalar data */ visage_scalar new: pressure; pressure data=(0., 0., 0., 1., 0., 0., 0., 2., 0., 0., 0., 3.) data+ (1., 1., 1., 2., 1., 1., 3., 2., 1., 1., 1., 3.) ;
/* * Set up image */ actor new: rock modeller=data_group ;
collection new: data members=([visage_data instances?]) compute_properties! ; vector new: bbox dimension=6; bbox = ([grid bbox?]); camera new: acamera position= (1,1,1) focal_point= ([grid center?]) x_range=([bbox @1 ?],[bbox @2 ?]) y_range=([bbox @3 ?],[bbox @4 ?]) z_range=([bbox @5 ?],[bbox @6 ?]) default! zoom: 1.4 on! ; light new: alight position= ([acamera position?]) on! ; /* * Create renderer */
logic new: _test; environment new: _env variable="LYMB_RENDERER"; _test = [_env defined?] false: "#Environment variable LYMB_RENDERER must be set." false: "parser exit!;" ; string new: current_renderer = [_env value?];
object# current_renderer new: main_renderer actors=([actor instances?]) lights=alight cameras=acamera ; /* * Draw the picture */ main_renderer render!;