// // time: Wed Apr 9 15:47:08 1997 // // version: 3.1.1 (format), 3.1.4 (DX Beta) // // // MODULE main // CATEGORY Macros // // comment: This example shows some uses of the Light and AmbientLight modules. First choose "Open All Control Panels" in the Windows menu. You will find a vector interactor for the Ambient Light color (initially set to 0, for no ambient light) and a selector interactor which allows you to choose the distant lights to be either camera-relative or fixed. // comment: // comment: Start with the camera relative lights. If you rotate the object (choosing "Rotate" in the Mode menu of the View Control window under Options in the Image window), you will see that there is always a red light coming from the left, and a green light coming from the upper right. (You can change the colors and the directions by double-clicking on the two Light configuration dialog boxes in the visual program). // comment: // comment: Now change from camera relative lights to fixed lights, using the selector interactor. You will now see that the lights are fixed in space relative to the object, so as you rotate, they may move around to the back from your viewpoint. // comment: // comment: You can also see the effect of changing the amount, and color, of the ambient light in the scene. // 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 = 553, height = 520 // layout: snap = 0, width = 50, height = 50, align = CC // macro main( ) -> ( ) { // // node Vector[1]: x = 450, y = 318, 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, 0, 0] // input[4]: defaulting = 1, visible = 0, type = 3, value = 0 // input[5]: defaulting = 1, visible = 0, type = 8, value = [ 0.0 0.0 0.0 ] // input[6]: defaulting = 1, visible = 0, type = 8, value = [ 1.0 1.0 1.0 ] // input[7]: defaulting = 1, visible = 0, type = 8, value = [ 1 1 1] // input[8]: defaulting = 1, visible = 0, type = 32, value = "[ 2 2 2 ]" // input[9]: defaulting = 1, visible = 0, type = 8, value = [ 2.0 2.0 2.0 ] // output[1]: visible = 1, type = 8, value = [0, 0, 0] // // // node AmbientLight[1]: x = 435, y = 417, inputs = 1, label = AmbientLight // main_AmbientLight_1_out_1 = AmbientLight( main_Vector_1_out_1 ) [instance: 1, cache: 1]; // // node Selector[1]: x = 343, y = 16, inputs = 7, label = Selector // input[1]: defaulting = 0, visible = 0, type = 32, value = "Selector_1" // input[2]: defaulting = 0, visible = 0, type = 32, value = "camera relative lights" // input[3]: defaulting = 0, visible = 0, type = 29, value = 1 // input[4]: defaulting = 1, visible = 1, type = 16777248, value = { "camera relative lights" "fixed lights" } // input[5]: defaulting = 1, visible = 0, type = 16777245, value = { 1 2 } // input[6]: defaulting = 1, visible = 0, type = 3, value = 0 // output[1]: visible = 1, type = 29, value = 1 // output[2]: visible = 1, type = 32, value = "camera relative lights" // // // node Caption[1]: x = 492, y = 181, inputs = 9, label = Caption // main_Caption_1_out_1 = Caption( main_Selector_1_out_2, main_Caption_1_in_2, main_Caption_1_in_3, main_Caption_1_in_4, main_Caption_1_in_5, main_Caption_1_in_6, main_Caption_1_in_7, main_Caption_1_in_8, main_Caption_1_in_9 ) [instance: 1, cache: 1]; // // node Import[1]: x = 23, y = 50, 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 Isosurface[1]: x = 88, y = 164, inputs = 6, label = Isosurface // input[2]: defaulting = 0, visible = 1, type = 16777221, value = { 0.3 } // main_Isosurface_1_out_1 = Isosurface( main_Import_1_out_1, main_Isosurface_1_in_2, 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 Color[1]: x = 81, y = 276, inputs = 5, label = Color // input[2]: defaulting = 0, visible = 1, type = 32, value = "white" // main_Color_1_out_1 = Color( main_Isosurface_1_out_1, main_Color_1_in_2, main_Color_1_in_3, main_Color_1_in_4, main_Color_1_in_5 ) [instance: 1, cache: 1]; // // node Switch[1]: x = 316, y = 97, inputs = 3, label = Switch // input[2]: defaulting = 0, visible = 1, type = 16777245, value = {1} // input[3]: defaulting = 0, visible = 1, type = 16777245, value = {0} // main_Switch_1_out_1 = Switch( main_Selector_1_out_1, main_Switch_1_in_2, main_Switch_1_in_3 ) [instance: 1, cache: 1]; // // node Light[1]: x = 269, y = 172, inputs = 3, label = Light // input[1]: defaulting = 0, visible = 1, type = 8, value = [-0.5, 0, 0.5] // input[2]: defaulting = 0, visible = 1, type = 8, value = [0.8, 0, 0] // main_Light_1_out_1 = Light( main_Light_1_in_1, main_Light_1_in_2, main_Switch_1_out_1 ) [instance: 1, cache: 1]; // // node Light[2]: x = 376, y = 173, inputs = 3, label = Light // input[1]: defaulting = 0, visible = 1, type = 8, value = [1, 1, 0] // input[2]: defaulting = 0, visible = 1, type = 8, value = [0, 0.7, 0] // main_Light_2_out_1 = Light( main_Light_2_in_1, main_Light_2_in_2, main_Switch_1_out_1 ) [instance: 2, cache: 1]; // // node Collect[1]: x = 277, y = 325, inputs = 5, label = Collect // main_Collect_1_out_1 = Collect( main_Color_1_out_1, main_Light_1_out_1, main_Light_2_out_1, main_Caption_1_out_1, main_AmbientLight_1_out_1 ) [instance: 1, cache: 1]; // // node Image[3]: x = 305, y = 458, 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.08096 0 -1] // input[6]: defaulting = 0, visible = 0, type = 8, value = [1.08096 0 5.07106] // input[7]: defaulting = 0, visible = 0, type = 5, value = 3.25348 // input[8]: defaulting = 0, visible = 0, type = 1, value = 413 // input[9]: defaulting = 0, visible = 0, type = 5, value = 0.88 // 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[19]: defaulting = 0, visible = 0, type = 3, value = 0 // input[29]: defaulting = 1, visible = 0, type = 3, value = 0 // depth: value = 24 // window: position = (0.4125,0.1299), size = 0.3336x0.4229 // 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_Vector_1_in_1 = "Vector_1"; main_Vector_1_in_2 = NULL; main_Vector_1_in_3 = [0, 0, 0]; 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, 0, 0]; main_AmbientLight_1_out_1 = NULL; main_Selector_1_in_1 = "Selector_1"; main_Selector_1_in_2 = "camera relative lights" ; main_Selector_1_in_3 = 1 ; main_Selector_1_in_4 = NULL; main_Selector_1_in_5 = NULL; main_Selector_1_in_6 = NULL; main_Selector_1_in_7 = NULL; main_Selector_1_out_1 = 1 ; main_Selector_1_out_2 = "camera relative lights" ; main_Caption_1_in_2 = NULL; main_Caption_1_in_3 = NULL; main_Caption_1_in_4 = NULL; main_Caption_1_in_5 = NULL; main_Caption_1_in_6 = NULL; main_Caption_1_in_7 = NULL; main_Caption_1_in_8 = NULL; main_Caption_1_in_9 = NULL; main_Caption_1_out_1 = NULL; 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_Isosurface_1_in_2 = { 0.3 }; 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_Color_1_in_2 = "white"; main_Color_1_in_3 = NULL; main_Color_1_in_4 = NULL; main_Color_1_in_5 = NULL; main_Color_1_out_1 = NULL; main_Switch_1_in_2 = {1}; main_Switch_1_in_3 = {0}; main_Switch_1_out_1 = NULL; main_Light_1_in_1 = [-0.5, 0, 0.5]; main_Light_1_in_2 = [0.8, 0, 0]; main_Light_1_out_1 = NULL; main_Light_2_in_1 = [1, 1, 0]; main_Light_2_in_2 = [0, 0.7, 0]; main_Light_2_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.08096 0 -1]; main_Image_3_in_6 = [1.08096 0 5.07106]; main_Image_3_in_7 = 3.25348; main_Image_3_in_8 = 413; main_Image_3_in_9 = 0.88; 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 = NULL; 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();