// // time: Tue Apr 29 12:06:48 1997 // // version: 3.1.1 (format), 3.1.4 (DX) // // // MODULE main // CATEGORY Macros // // comment: You can use this example to experiment with using the ClipPlane module. The data is the electron density of a water molecule. First choose Open All Control Panels in the Windows menu. Choose Execute on Change in the Execute menu. Then use the vector interactor to control the ClipPlane point. You can also experiment with changing the orientation of the clipping plane. In the Image Window, in the Options menu, choose "View Control". Then in the "Mode" menu, choose "Cursors". The Clip_Normal probe will be made active, and will be shown as a small square in the image window. You can then drag the probe point (using the left mouse button) to change the orientation of the ClipPlane normal. Note that you may drag the probe point only along one of the three axes shown by the bounding box. You can find help on probes (or on any tool or menu option) by using the middle mouse button on the Clip_Normal tool in the visual program editor. // comment: // comment: A glyph is also drawn, showing the clipplane normal. // comment: // comment: Because this visual program uses the Image tool, you can use the direct interactor options in the View menu. // comment: // comment: This example uses a "dots" rendering approximation if you rotate the object while in execute-on-change mode. You can find this option under "Rendering Options" in the "Options" menu of the Image window. // workspace: width = 531, height = 613 // layout: snap = 0, width = 50, height = 50, align = UL // macro main( ) -> ( ) { // // node Import[1]: x = 78, y = 16, inputs = 6, label = Import // input[1]: defaulting = 0, visible = 1, type = 32, value = "watermolecule" // main_Import_1_out_1 = Import( main_Import_1_in_1, main_Import_1_in_2, main_Import_1_in_3, main_Import_1_in_4, main_Import_1_in_5, main_Import_1_in_6 ) [instance: 1, cache: 1]; // // node Scalar[1]: x = 114, y = 191, inputs = 11, label = Scalar // input[1]: defaulting = 0, visible = 0, type = 32, value = "Scalar_1" // input[3]: defaulting = 0, visible = 0, type = 5, value = 0.22 // input[4]: defaulting = 1, visible = 0, type = 3, value = 0 // input[5]: defaulting = 1, visible = 0, type = 5, value = 0.1 // input[6]: defaulting = 1, visible = 0, type = 5, value = 1.0 // input[7]: defaulting = 1, visible = 0, type = 5, value = 1.00000 // input[8]: defaulting = 1, visible = 0, type = 32, value = "2" // input[9]: defaulting = 1, visible = 0, type = 1, value = 2 // output[1]: visible = 1, type = 5, value = 0.22 // // // node Isosurface[1]: x = 30, y = 275, inputs = 6, label = Isosurface // main_Isosurface_1_out_1 = Isosurface( main_Import_1_out_1, main_Scalar_1_out_1, main_Isosurface_1_in_3, main_Isosurface_1_in_4, main_Isosurface_1_in_5, main_Isosurface_1_in_6 ) [instance: 1, cache: 1]; // // node Vector[1]: x = 190, y = 303, inputs = 11, label = Vector // input[1]: defaulting = 0, visible = 0, type = 32, value = "Vector_1" // input[3]: defaulting = 0, visible = 0, type = 8, value = [0.8, -0.2, -1] // input[4]: defaulting = 1, visible = 0, type = 3, value = 0 // input[5]: defaulting = 1, visible = 0, type = 8, value = [ 0.8 -0.2 -1.0 ] // input[6]: defaulting = 1, visible = 0, type = 8, value = [ 1.2 0.2 -0.8 ] // input[7]: defaulting = 1, visible = 0, type = 8, value = [ 1 1 1] // input[8]: defaulting = 1, visible = 0, type = 32, value = "[ 1 1 1 ]" // input[9]: defaulting = 1, visible = 0, type = 8, value = [ 1.0 1.0 1.0 ] // output[1]: visible = 1, type = 8, value = [0.8, -0.2, -1] // // // node ShowBox[1]: x = 278, y = 176, inputs = 1, label = ShowBox // main_ShowBox_1_out_1, main_ShowBox_1_out_2 = ShowBox( main_Import_1_out_1 ) [instance: 1, cache: 1]; // // node Probe[1]: x = 363, y = 270, inputs = 0, label = Clip_Normal // output[1]: visible = 1, type = 8, value = [0.802414,0.449391,-0.327771] // // // node Compute[1]: x = 296, y = 357, inputs = 3, label = Compute--Compute the vector from the clipplane point to the probe to use for the normal // input[1]: defaulting = 0, visible = 0, type = 32, value = "$1-$0" // expression: value = b-a // name[2]: value = a // name[3]: value = b // main_Compute_1_out_1 = Compute( main_Compute_1_in_1, main_ShowBox_1_out_2, main_Probe_1_out_1 ) [instance: 1, cache: 1]; // // node ClipPlane[1]: x = 165, y = 461, inputs = 3, label = ClipPlane // main_ClipPlane_1_out_1 = ClipPlane( main_Isosurface_1_out_1, main_Vector_1_out_1, main_Compute_1_out_1 ) [instance: 1, cache: 1]; // // node Construct[1]: x = 406, y = 433, inputs = 4, label = Construct // main_Construct_1_out_1 = Construct( main_ShowBox_1_out_2, main_Construct_1_in_2, main_Construct_1_in_3, main_Compute_1_out_1 ) [instance: 1, cache: 1]; // // node Glyph[1]: x = 411, y = 511, inputs = 7, label = Glyph // input[4]: defaulting = 0, visible = 1, type = 5, value = 1.0 // main_Glyph_1_out_1 = Glyph( main_Construct_1_out_1, main_Glyph_1_in_2, main_Glyph_1_in_3, main_Glyph_1_in_4, main_Glyph_1_in_5, main_Glyph_1_in_6, main_Glyph_1_in_7 ) [instance: 1, cache: 1]; // // node Collect[1]: x = 269, y = 535, inputs = 2, label = Collect // main_Collect_1_out_1 = Collect( main_ClipPlane_1_out_1, main_Glyph_1_out_1 ) [instance: 1, cache: 1]; // // node Image[3]: x = 172, y = 551, inputs = 48, label = Image // input[1]: defaulting = 0, visible = 0, type = 67108863, value = "Image_3" // input[4]: defaulting = 0, visible = 0, type = 1, value = 1 // input[5]: defaulting = 0, visible = 0, type = 8, value = [1.07968 2.98023e-08 -1] // input[6]: defaulting = 0, visible = 0, type = 8, value = [1.07968 2.98023e-08 5.62575] // input[7]: defaulting = 0, visible = 0, type = 5, value = 3.55074 // input[8]: defaulting = 0, visible = 0, type = 1, value = 640 // input[9]: defaulting = 0, visible = 0, type = 5, value = 0.75 // input[10]: defaulting = 0, visible = 0, type = 8, value = [0 1 0] // input[11]: defaulting = 1, visible = 0, type = 5, value = 30.0001 // input[12]: defaulting = 0, visible = 0, type = 1, value = 0 // input[14]: defaulting = 0, visible = 0, type = 1, value = 1 // input[15]: defaulting = 1, visible = 0, type = 32, value = "none" // input[16]: defaulting = 1, visible = 0, type = 32, value = "none" // input[17]: defaulting = 1, visible = 0, type = 1, value = 1 // input[18]: defaulting = 1, visible = 0, type = 1, value = 1 // input[19]: defaulting = 0, visible = 0, type = 1, value = 0 // input[29]: defaulting = 1, visible = 0, type = 3, value = 0 // input[41]: defaulting = 0, visible = 0, type = 32, value = "cursors" // depth: value = 24 // window: position = (0.3945,0.1562), size = 0.5109x0.5117 // internal caching: 1 // main_Image_3_out_1, main_Image_3_out_2, main_Image_3_out_3 = Image( main_Image_3_in_1, main_Collect_1_out_1, main_Image_3_in_3, main_Image_3_in_4, main_Image_3_in_5, main_Image_3_in_6, main_Image_3_in_7, main_Image_3_in_8, main_Image_3_in_9, main_Image_3_in_10, main_Image_3_in_11, main_Image_3_in_12, main_Image_3_in_13, main_Image_3_in_14, main_Image_3_in_15, main_Image_3_in_16, main_Image_3_in_17, main_Image_3_in_18, main_Image_3_in_19, main_Image_3_in_20, main_Image_3_in_21, main_Image_3_in_22, main_Image_3_in_23, main_Image_3_in_24, main_Image_3_in_25, main_Image_3_in_26, main_Image_3_in_27, main_Image_3_in_28, main_Image_3_in_29, main_Image_3_in_30, main_Image_3_in_31, main_Image_3_in_32, main_Image_3_in_33, main_Image_3_in_34, main_Image_3_in_35, main_Image_3_in_36, main_Image_3_in_37, main_Image_3_in_38, main_Image_3_in_39, main_Image_3_in_40, main_Image_3_in_41, main_Image_3_in_42, main_Image_3_in_43, main_Image_3_in_44, main_Image_3_in_45, main_Image_3_in_46, main_Image_3_in_47, main_Image_3_in_48 ) [instance: 3, cache: 1]; // network: end of macro body CacheScene("Image_3", main_Image_3_out_1, main_Image_3_out_2); } main_Import_1_in_1 = "watermolecule"; main_Import_1_in_2 = NULL; main_Import_1_in_3 = NULL; main_Import_1_in_4 = NULL; main_Import_1_in_5 = NULL; main_Import_1_in_6 = NULL; main_Import_1_out_1 = NULL; main_Scalar_1_in_1 = "Scalar_1"; main_Scalar_1_in_2 = NULL; main_Scalar_1_in_3 = 0.22; main_Scalar_1_in_4 = NULL; main_Scalar_1_in_5 = NULL; main_Scalar_1_in_6 = NULL; main_Scalar_1_in_7 = NULL; main_Scalar_1_in_8 = NULL; main_Scalar_1_in_9 = NULL; main_Scalar_1_in_10 = NULL; main_Scalar_1_in_11 = NULL; main_Scalar_1_out_1 = 0.22; main_Isosurface_1_in_3 = NULL; main_Isosurface_1_in_4 = NULL; main_Isosurface_1_in_5 = NULL; main_Isosurface_1_in_6 = NULL; main_Isosurface_1_out_1 = NULL; main_Vector_1_in_1 = "Vector_1"; main_Vector_1_in_2 = NULL; main_Vector_1_in_3 = [0.8, -0.2, -1]; main_Vector_1_in_4 = NULL; main_Vector_1_in_5 = NULL; main_Vector_1_in_6 = NULL; main_Vector_1_in_7 = NULL; main_Vector_1_in_8 = NULL; main_Vector_1_in_9 = NULL; main_Vector_1_in_10 = NULL; main_Vector_1_in_11 = NULL; main_Vector_1_out_1 = [0.8, -0.2, -1]; main_ShowBox_1_out_2 = NULL; main_Probe_1_out_1 = [0.802414,0.449391,-0.327771]; main_Compute_1_in_1 = "$1-$0"; main_Compute_1_out_1 = NULL; main_ClipPlane_1_out_1 = NULL; main_Construct_1_in_2 = NULL; main_Construct_1_in_3 = NULL; main_Construct_1_out_1 = NULL; main_Glyph_1_in_2 = NULL; main_Glyph_1_in_3 = NULL; main_Glyph_1_in_4 = 1.0; main_Glyph_1_in_5 = NULL; main_Glyph_1_in_6 = NULL; main_Glyph_1_in_7 = NULL; main_Glyph_1_out_1 = NULL; main_Collect_1_out_1 = NULL; macro Image( id, object, where, useVector, to, from, width, resolution, aspect, up, viewAngle, perspective, options, buttonState = 1, buttonUpApprox = "none", buttonDownApprox = "none", buttonUpDensity = 1, buttonDownDensity = 1, renderMode = 0, defaultCamera, reset, backgroundColor, throttle, RECenable = 0, RECfile, RECformat, RECresolution, RECaspect, AAenable = 0, AAlabels, AAticks, AAcorners, AAframe, AAadjust, AAcursor, AAgrid, AAcolors, AAannotation, AAlabelscale, AAfont, interactionMode, title, AAxTickLocs, AAyTickLocs, AAzTickLocs, AAxTickLabels, AAyTickLabels, AAzTickLabels) -> ( object, camera, where) { ImageMessage( id, backgroundColor, throttle, RECenable, RECfile, RECformat, RECresolution, RECaspect, AAenable, AAlabels, AAticks, AAcorners, AAframe, AAadjust, AAcursor, AAgrid, AAcolors, AAannotation, AAlabelscale, AAfont, AAxTickLocs, AAyTickLocs, AAzTickLocs, AAxTickLabels, AAyTickLabels, AAzTickLabels, interactionMode, title, renderMode, buttonUpApprox, buttonDownApprox, buttonUpDensity, buttonDownDensity) [instance: 1, cache: 1]; autoCamera = AutoCamera( object, "front", object, resolution, aspect, [0,1,0], perspective, viewAngle, backgroundColor) [instance: 1, cache: 1]; realCamera = Camera( to, from, width, resolution, aspect, up, perspective, viewAngle, backgroundColor) [instance: 1, cache: 1]; coloredDefaultCamera = UpdateCamera(defaultCamera, background=backgroundColor) [instance: 1, cache: 1]; nullDefaultCamera = Inquire(defaultCamera, "is null + 1") [instance: 1, cache: 1]; resetCamera = Switch( nullDefaultCamera, coloredDefaultCamera, autoCamera) [instance: 1, cache: 1]; resetNull = Inquire( reset, "is null + 1") [instance: 2, cache: 1]; reset = Switch( resetNull, reset, 0) [instance: 2, cache: 1]; whichCamera = Compute( "($0 != 0 || $1 == 0) ? 1 : 2", reset, useVector) [instance: 1, cache: 1]; camera = Switch( whichCamera, resetCamera, realCamera) [instance: 3, cache: 1]; AAobject = AutoAxes( object, camera, AAlabels, AAticks, AAcorners, AAframe, AAadjust, AAcursor, AAgrid, AAcolors, AAannotation, AAlabelscale, AAfont, AAxTickLocs, AAyTickLocs, AAzTickLocs, AAxTickLabels, AAyTickLabels, AAzTickLabels) [instance: 1, cache: 1]; switchAAenable = Compute("$0+1", AAenable) [instance: 2, cache: 1]; object = Switch( switchAAenable, object, AAobject) [instance:4, cache: 1]; SWapproximation_options = Switch( buttonState, buttonUpApprox, buttonDownApprox) [instance: 5, cache: 1]; SWdensity_options = Switch( buttonState, buttonUpDensity, buttonDownDensity) [instance: 6, cache: 1]; HWapproximation_options = Format( "%s,%s", buttonDownApprox, buttonUpApprox) [instance: 1, cache: 1]; HWdensity_options = Format( "%d,%d", buttonDownDensity, buttonUpDensity) [instance: 2, cache: 1]; switchRenderMode = Compute( "$0+1", renderMode) [instance: 3, cache: 1]; approximation_options = Switch( switchRenderMode, SWapproximation_options, HWapproximation_options) [instance: 7, cache: 1]; density_options = Switch( switchRenderMode, SWdensity_options, HWdensity_options) [instance: 8, cache: 1]; renderModeString = Switch( switchRenderMode, "software", "hardware")[instance: 9, cache: 1]; object_tag = Inquire( object, "object tag")[instance: 3, cache: 1]; annoted_object = Options( object, "send boxes", 0, "cache", 1, "object tag", object_tag, "ddcamera", whichCamera, "rendering approximation", approximation_options, "render every", density_options, "button state", buttonState, "rendering mode", renderModeString) [instance: 1, cache: 1]; RECresNull = Inquire( RECresolution, "is null + 1") [instance: 4, cache: 1]; ImageResolution = Inquire( camera, "camera resolution") [instance: 5, cache: 1]; RECresolution = Switch( RECresNull, RECresolution, ImageResolution) [instance: 10, cache: 1]; RECaspectNull = Inquire( RECaspect, "is null + 1") [instance: 6, cache: 1]; ImageAspect = Inquire( camera, "camera aspect") [instance: 7, cache: 1]; RECaspect = Switch( RECaspectNull, RECaspect, ImageAspect) [instance: 11, cache: 1]; switchRECenable = Compute( "$0 == 0 ? 1 : (($2 == $3) && ($4 == $5)) ? ($1 == 1 ? 2 : 3) : 4", RECenable, switchRenderMode, RECresolution, ImageResolution, RECaspect, ImageAspect) [instance: 4, cache: 1]; NoRECobject, RECNoRerenderObject, RECNoRerHW, RECRerenderObject = Route(switchRECenable, annoted_object); Display( NoRECobject, camera, where, throttle) [instance: 1, cache: 1]; image = Render( RECNoRerenderObject, camera) [instance: 1, cache: 1]; Display( image, NULL, where, throttle) [instance: 2, cache: 1]; WriteImage( image, RECfile, RECformat) [instance: 1, cache: 1]; rec_where = Display( RECNoRerHW, camera, where, throttle) [instance: 1, cache: 0]; rec_image = ReadImageWindow( rec_where) [instance: 1, cache: 1]; WriteImage( rec_image, RECfile, RECformat) [instance: 1, cache: 1]; RECupdateCamera = UpdateCamera( camera, resolution=RECresolution, aspect=RECaspect) [instance: 2, cache: 1]; Display( RECRerenderObject, camera, where, throttle) [instance: 1, cache: 1]; RECRerenderObject = ScaleScreen( RECRerenderObject, NULL, RECresolution, camera) [instance: 1, cache: 1]; image = Render( RECRerenderObject, RECupdateCamera) [instance: 2, cache: 1]; WriteImage( image, RECfile, RECformat) [instance: 2, cache: 1]; } main_Image_3_in_1 = "Image_3"; main_Image_3_in_3 = "X24,,"; main_Image_3_in_4 = 1; main_Image_3_in_5 = [1.07968 2.98023e-08 -1]; main_Image_3_in_6 = [1.07968 2.98023e-08 5.62575]; main_Image_3_in_7 = 3.55074; main_Image_3_in_8 = 640; main_Image_3_in_9 = 0.75; main_Image_3_in_10 = [0 1 0]; main_Image_3_in_11 = NULL; main_Image_3_in_12 = 0; main_Image_3_in_13 = NULL; main_Image_3_in_14 = 1; main_Image_3_in_15 = NULL; main_Image_3_in_16 = NULL; main_Image_3_in_17 = NULL; main_Image_3_in_18 = NULL; main_Image_3_in_19 = 0; main_Image_3_in_20 = NULL; main_Image_3_in_21 = NULL; main_Image_3_in_22 = NULL; main_Image_3_in_23 = NULL; main_Image_3_in_25 = NULL; main_Image_3_in_26 = NULL; main_Image_3_in_27 = NULL; main_Image_3_in_28 = NULL; main_Image_3_in_29 = NULL; main_Image_3_in_30 = NULL; main_Image_3_in_31 = NULL; main_Image_3_in_32 = NULL; main_Image_3_in_33 = NULL; main_Image_3_in_34 = NULL; main_Image_3_in_35 = NULL; main_Image_3_in_36 = NULL; main_Image_3_in_37 = NULL; main_Image_3_in_38 = NULL; main_Image_3_in_39 = NULL; main_Image_3_in_40 = NULL; main_Image_3_in_41 = "cursors"; main_Image_3_in_42 = NULL; main_Image_3_in_43 = NULL; main_Image_3_in_44 = NULL; main_Image_3_in_45 = NULL; main_Image_3_in_46 = NULL; main_Image_3_in_47 = NULL; main_Image_3_in_48 = NULL; Executive("product version 3 1 4"); $sync main();