//
// time: Tue Jun 10 16:39:59 1997
//
// version: 3.1.1 (format), 3.1.4 (DX)
//
//
//
// macro reference (direct): KeyFrameCamera KeyFrameCameraMacro.net
include "KeyFrameCameraMacro.net"
//
// macro reference (direct): InterpolateCameraMacro InterpolateCameraMacro.net
include "InterpolateCameraMacro.net"
//
// MODULE main
//
// comment: This visual program allows the user to create a keyframe animation by creating desired views interactively and then interpolating between them.
// comment: 
// comment: To use this visual program, first go into execute-on-change mode. Then  use the standard view control mechanisms (rotate, zoom, etc.) to find a viewpoint you like for your animation.  When you have a good view, press the "KeyFramCamera append_camera" interactor. This camera will be appended to the list. Continue until you have defined all the viewpoints for your animation. You can preview the animation using the sequencer, and indicating using the control panel that your want to use the camera group "from cache". If you are happy with the animation, you can export the camera group using the interactor in the control panel (this will ensure that you will be able to recreate the animations in later dx sessions). If you want to run the animation using an exported camera group, use the "from import" choice for "camera group to use".
// page assignment: display_anim	order=3, windowed=0, showing=0
// page assignment: keyframe	order=4, windowed=0, showing=1
// page assignment: object	order=2, windowed=0, showing=0
// workspace: width = 634, height = 412
// layout: snap = 0, width = 50, height = 50, align = NN
//
macro main(
) -> (
) {
    // 
    // node Import[3]: x = 27, y = 20, inputs = 6, label = Import
    // input[1]: defaulting = 0, visible = 1, type = 32, value = "southeastern_topo.dx"
    // page group: object
    //
main_Import_3_out_1 = 
    Import(
    main_Import_3_in_1,
    main_Import_3_in_2,
    main_Import_3_in_3,
    main_Import_3_in_4,
    main_Import_3_in_5,
    main_Import_3_in_6
    ) [instance: 3, cache: 1];
    // 
    // node AutoColor[2]: x = 20, y = 101, inputs = 10, label = AutoColor
    // page group: object
    //
main_AutoColor_2_out_1,
main_AutoColor_2_out_2 = 
    AutoColor(
    main_Import_3_out_1,
    main_AutoColor_2_in_2,
    main_AutoColor_2_in_3,
    main_AutoColor_2_in_4,
    main_AutoColor_2_in_5,
    main_AutoColor_2_in_6,
    main_AutoColor_2_in_7,
    main_AutoColor_2_in_8,
    main_AutoColor_2_in_9,
    main_AutoColor_2_in_10
    ) [instance: 2, cache: 1];
    // 
    // node Selector[2]: x = 223, y = 17, inputs = 7, label = Selector
    // input[1]: defaulting = 0, visible = 0, type = 32, value = "Selector_2"
    // input[2]: defaulting = 0, visible = 0, type = 32, value = "from cache" 
    // input[3]: defaulting = 0, visible = 0, type = 29, value = 1 
    // input[4]: defaulting = 1, visible = 1, type = 16777248, value = { "from cache" "imported" }
    // input[5]: defaulting = 1, visible = 0, type = 16777245, value = { 1 2 }
    // output[1]: visible = 1, type = 29, value = 1 
    // output[2]: visible = 1, type = 32, value = "from cache" 
    // page group: display_anim
    //
    // 
    // node RubberSheet[1]: x = 21, y = 188, inputs = 4, label = RubberSheet
    // page group: object
    //
main_RubberSheet_1_out_1 = 
    RubberSheet(
    main_AutoColor_2_out_1,
    main_RubberSheet_1_in_2,
    main_RubberSheet_1_in_3,
    main_RubberSheet_1_in_4
    ) [instance: 1, cache: 1];
    // 
    // node Transmitter[18]: x = 39, y = 275, inputs = 1, label = object_to_view
    // page group: object
    //
object_to_view = main_RubberSheet_1_out_1;
    // 
    // node Receiver[27]: x = 1, y = 44, inputs = 1, label = object_to_view
    // page group: keyframe
    //
main_Receiver_27_out_1[cache: 0] = object_to_view;
    // 
    // node Image[3]: x = 34, y = 139, 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 = [281.662 28.8251 -1.16071]
    // input[6]: defaulting = 0, visible = 0, type = 8, value = [275 29.1667 66.8391]
    // input[7]: defaulting = 1, visible = 0, type = 5, value = 6.63664
    // 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 = 0, visible = 0, type = 5, value = 5.56086
    // input[12]: defaulting = 0, visible = 0, type = 1, value = 1
    // 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 = "none"
    // page group: keyframe
    // depth: value = 8
    // window: position = (0.1109,0.4551), 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_Receiver_27_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];
    // 
    // node Reset[4]: x = 143, y = 29, inputs = 6, label = Reset
    // input[1]: defaulting = 0, visible = 0, type = 32, value = "main_Reset_4_out_1"
    // input[2]: defaulting = 0, visible = 0, type = 29, value = 0
    // input[3]: defaulting = 0, visible = 0, type = 3, value = 0
    // input[4]: defaulting = 1, visible = 0, type = 29, value = 1
    // input[5]: defaulting = 1, visible = 0, type = 29, value = 0
    // output[1]: visible = 1, type = 29, value = 0
    // page group: keyframe
    // toggle : 0
    //
    // 
    // node Reset[5]: x = 200, y = 31, inputs = 6, label = Reset
    // input[1]: defaulting = 0, visible = 0, type = 32, value = "main_Reset_5_out_1"
    // input[2]: defaulting = 0, visible = 0, type = 29, value = 0
    // input[3]: defaulting = 0, visible = 0, type = 3, value = 0
    // input[4]: defaulting = 1, visible = 0, type = 29, value = 1
    // input[5]: defaulting = 1, visible = 0, type = 29, value = 0
    // output[1]: visible = 1, type = 29, value = 0
    // page group: keyframe
    // toggle : 0
    //
    // 
    // node Reset[6]: x = 271, y = 23, inputs = 6, label = Reset
    // input[1]: defaulting = 0, visible = 0, type = 32, value = "main_Reset_6_out_1"
    // input[2]: defaulting = 0, visible = 0, type = 29, value = 0
    // input[3]: defaulting = 0, visible = 0, type = 3, value = 0
    // input[4]: defaulting = 1, visible = 0, type = 29, value = 1
    // input[5]: defaulting = 1, visible = 0, type = 29, value = 0
    // output[1]: visible = 1, type = 29, value = 0
    // page group: keyframe
    // toggle : 0
    //
    // 
    // node FileSelector[1]: x = 347, y = 122, inputs = 0, label = FileSelector
    // output[1]: visible = 1, type = 32, value = "exported_cameras"
    // output[2]: visible = 1, type = 32, value = "exported_cameras"
    // page group: keyframe
    //
    // 
    // node KeyFrameCamera[2]: x = 138, y = 224, inputs = 5, label = KeyFrameCamera
    // input[5]: defaulting = 1, visible = 1, type = 32, value = "listofcameras"
    // page group: keyframe
    //
main_KeyFrameCamera_2_out_1 = 
    KeyFrameCamera(
    main_Image_3_out_2,
    main_Reset_4_out_1,
    main_Reset_5_out_1,
    main_Reset_6_out_1,
    main_FileSelector_1_out_1
    ) [instance: 2, cache: 1];
    // 
    // node Transmitter[19]: x = 112, y = 342, inputs = 1, label = camera_group_from_cache
    // page group: keyframe
    //
camera_group_from_cache = main_KeyFrameCamera_2_out_1;
    // 
    // node Receiver[29]: x = 304, y = 32, inputs = 1, label = camera_group_from_cache
    // page group: display_anim
    //
main_Receiver_29_out_1[cache: 0] = camera_group_from_cache;
    // 
    // node Import[5]: x = 430, y = 227, inputs = 6, label = Import
    // page group: keyframe
    //
main_Import_5_out_1 = 
    Import(
    main_FileSelector_1_out_1,
    main_Import_5_in_2,
    main_Import_5_in_3,
    main_Import_5_in_4,
    main_Import_5_in_5,
    main_Import_5_in_6
    ) [instance: 5, cache: 1];
    // 
    // node Transmitter[20]: x = 387, y = 350, inputs = 1, label = camera_group_from_import
    // page group: keyframe
    //
camera_group_from_import = main_Import_5_out_1;
    // 
    // node Receiver[30]: x = 495, y = 38, inputs = 1, label = camera_group_from_import
    // page group: display_anim
    //
main_Receiver_30_out_1[cache: 0] = camera_group_from_import;
    // 
    // node Switch[2]: x = 354, y = 124, inputs = 3, label = Switch
    // page group: display_anim
    //
main_Switch_2_out_1 = 
    Switch(
    main_Selector_2_out_1,
    main_Receiver_29_out_1,
    main_Receiver_30_out_1
    ) [instance: 2, cache: 1];
    // 
    // node Inquire[10]: x = 183, y = 215, inputs = 3, label = Inquire
    // input[2]: defaulting = 0, visible = 1, type = 32, value = "member count"
    // page group: display_anim
    //
main_Inquire_10_out_1 = 
    Inquire(
    main_Switch_2_out_1,
    main_Inquire_10_in_2,
    main_Inquire_10_in_3
    ) [instance: 10, cache: 1];
    // 
    // node Compute[13]: x = 223, y = 284, inputs = 2, label = Compute
    // input[1]: defaulting = 0, visible = 0, type = 32, value = "$0==0 ? 1 : 2"
    // page group: display_anim
    // expression: value = a==0 ? 1 : 2
    // name[2]: value = a
    //
main_Compute_13_out_1 = 
    Compute(
    main_Compute_13_in_1,
    main_Inquire_10_out_1
    ) [instance: 13, cache: 1];
    // 
    // node Receiver[28]: x = 198, y = 469, inputs = 1, label = object_to_view
    // page group: display_anim
    //
main_Receiver_28_out_1[cache: 0] = object_to_view;
    // 
    // node Integer[1]: x = 143, y = 26, inputs = 11, label = Integer
    // input[1]: defaulting = 0, visible = 0, type = 32, value = "Integer_1"
    // input[3]: defaulting = 0, visible = 0, type = 1, value = 21 
    // input[5]: defaulting = 1, visible = 0, type = 1, value = -1000000
    // input[6]: defaulting = 1, visible = 0, type = 1, value = 1000000
    // input[7]: defaulting = 1, visible = 0, type = 5, value = 1.0
    // input[9]: defaulting = 1, visible = 0, type = 1, value = 0
    // output[1]: visible = 1, type = 1, value = 21 
    // page group: display_anim
    //
    // 
    // node Route[4]: x = 255, y = 382, inputs = 2, outputs = 2, label = Route
    // page group: display_anim
    //
main_Route_4_out_1,
main_Route_4_out_2 = 
    Route(
    main_Compute_13_out_1,
    main_Integer_1_out_1
    ) [instance: 4, cache: 1];
    // 
    // node Sequencer[1]: x = 53, y = 108, inputs = 7, label = Sequencer
    // input[1]: defaulting = 0, visible = 0, type = 32, value = "Sequencer_1"
    // input[4]: defaulting = 0, visible = 1, type = 1, value = 0
    // input[5]: defaulting = 1, visible = 1, type = 1, value = 21
    // input[6]: defaulting = 1, visible = 0, type = 1, value = 1
    // input[7]: defaulting = 0, visible = 0, type = 16777217, value = { 0 21 1 0 21 1 }
    // page group: display_anim
    // vcr[1]: min = 0, max = 21, beg = 0, end = 21, cur = 2, inc = 1, loop = off, step = off, pal = off
    // window: position = (0.3625,0.0791), size = 0.2188x0.0781
    //
    main_Sequencer_1_in_3 = @frame;
main_Sequencer_1_out_1[cache: 2] = 
    Sequencer(
    main_Sequencer_1_in_1,
    main_Sequencer_1_in_2,
    main_Sequencer_1_in_3,
    main_Sequencer_1_in_4,
    main_Integer_1_out_1,
    main_Sequencer_1_in_6,
    main_Sequencer_1_in_7
    ) [instance: 1, cache: 1];
    // 
    // node InterpolateCameraMacro[3]: x = 333, y = 441, inputs = 3, label = InterpolateCameraMacro
    // page group: display_anim
    //
main_InterpolateCameraMacro_3_out_1 = 
    InterpolateCameraMacro(
    main_Route_4_out_2,
    main_Sequencer_1_out_1,
    main_Switch_2_out_1
    ) [instance: 3, cache: 1];
    // 
    // node Display[3]: x = 313, y = 547, inputs = 8, label = Display
    // page group: display_anim
    // depth: value = 8
    // window: position = (0.3391,0.3193), size = 0.5109x0.5117
    //
main_Display_3_out_1[cache: 2] = 
    Display(
    main_Receiver_28_out_1,
    main_InterpolateCameraMacro_3_out_1,
    main_Display_3_in_3,
    main_Display_3_in_4,
    main_Display_3_in_5,
    main_Display_3_in_6,
    main_Display_3_in_7,
    main_Display_3_in_8
    ) [instance: 3, cache: 1];
    //
    // decorator Annotate	pos=(350,3) size=284x60 style(Label), value = <NULL>
    // annotation user_begin: 99
    // annotation user: To use this visual program, first go into
    // annotation user: execute-on-change mode. Then read
    // annotation user: the instructions below.
    // annotation user_end: <NULL>
    // page group: keyframe
    //
    // decorator Annotate	pos=(358,72) size=28x28 style(Marker), value = <NULL>
    // annotation user_begin: 818
    // annotation user: Bring up the control panel. In the image window, use the standard
    // annotation user: view control mechanisms (rotate, zoom, etc.) to find a viewpoint you
    // annotation user: like for your animation. When you have a good view, press the 
    // annotation user: "KeyFrameCamera append_camera" interactor. This camera will be appended
    // annotation user: to the list. Continue until you have defined all the viewpoints for your 
    // annotation user: animation. You can preview the animation using the sequencer, and indicating
    // annotation user: using the control panel that you want to use the camera group "from cache".
    // annotation user: If you are happy with the animation, you can export the camera group using
    // annotation user: the interactor in the control panel (this will ensure that you will be able to recreate 
    // annotation user: the animations in later dx sessions). If you want to run the animation using an
    // annotation user: exported camera group, use the "from import" choice for "camera group to use"
    // annotation user_end: <NULL>
    // page group: keyframe
// network: end of macro body
CacheScene("Image_3", main_Image_3_out_1, main_Image_3_out_2);
}
main_Import_3_in_1 = "southeastern_topo.dx";
main_Import_3_in_2 = NULL;
main_Import_3_in_3 = NULL;
main_Import_3_in_4 = NULL;
main_Import_3_in_5 = NULL;
main_Import_3_in_6 = NULL;
main_Import_3_out_1 = NULL;
main_AutoColor_2_in_2 = NULL;
main_AutoColor_2_in_3 = NULL;
main_AutoColor_2_in_4 = NULL;
main_AutoColor_2_in_5 = NULL;
main_AutoColor_2_in_6 = NULL;
main_AutoColor_2_in_7 = NULL;
main_AutoColor_2_in_8 = NULL;
main_AutoColor_2_in_9 = NULL;
main_AutoColor_2_in_10 = NULL;
main_AutoColor_2_out_1 = NULL;
main_Selector_2_in_1 = "Selector_2";
main_Selector_2_in_2 = "from cache" ;
main_Selector_2_in_3 = 1 ;
main_Selector_2_in_4 = NULL;
main_Selector_2_in_5 = NULL;
main_Selector_2_in_6 = NULL;
main_Selector_2_in_7 = NULL;
main_Selector_2_out_1 = 1 ;
main_RubberSheet_1_in_2 = NULL;
main_RubberSheet_1_in_3 = NULL;
main_RubberSheet_1_in_4 = NULL;
main_RubberSheet_1_out_1 = NULL;
main_Transmitter_18_out_1 = NULL;
main_Receiver_27_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 = "X8,,";
main_Image_3_in_4 = 1;
main_Image_3_in_5 = [281.662 28.8251 -1.16071];
main_Image_3_in_6 = [275 29.1667 66.8391];
main_Image_3_in_7 = NULL;
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 = 5.56086;
main_Image_3_in_12 = 1;
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 = "none";
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;
main_Image_3_out_2 = NULL;
main_Reset_4_in_1 = "main_Reset_4_out_1";
main_Reset_4_in_2 = 0;
main_Reset_4_in_3 = 0;
main_Reset_4_in_4 = NULL;
main_Reset_4_in_5 = NULL;
main_Reset_4_in_6 = NULL;
main_Reset_4_out_1 = 0;
main_Reset_5_in_1 = "main_Reset_5_out_1";
main_Reset_5_in_2 = 0;
main_Reset_5_in_3 = 0;
main_Reset_5_in_4 = NULL;
main_Reset_5_in_5 = NULL;
main_Reset_5_in_6 = NULL;
main_Reset_5_out_1 = 0;
main_Reset_6_in_1 = "main_Reset_6_out_1";
main_Reset_6_in_2 = 0;
main_Reset_6_in_3 = 0;
main_Reset_6_in_4 = NULL;
main_Reset_6_in_5 = NULL;
main_Reset_6_in_6 = NULL;
main_Reset_6_out_1 = 0;
main_FileSelector_1_out_1 = "exported_cameras";
main_KeyFrameCamera_2_out_1 = NULL;
main_Transmitter_19_out_1 = NULL;
main_Receiver_29_out_1 = NULL;
main_Import_5_in_2 = NULL;
main_Import_5_in_3 = NULL;
main_Import_5_in_4 = NULL;
main_Import_5_in_5 = NULL;
main_Import_5_in_6 = NULL;
main_Import_5_out_1 = NULL;
main_Transmitter_20_out_1 = NULL;
main_Receiver_30_out_1 = NULL;
main_Switch_2_out_1 = NULL;
main_Inquire_10_in_2 = "member count";
main_Inquire_10_in_3 = NULL;
main_Inquire_10_out_1 = NULL;
main_Compute_13_in_1 = "$0==0 ? 1 : 2";
main_Compute_13_out_1 = NULL;
main_Receiver_28_out_1 = NULL;
main_Integer_1_in_1 = "Integer_1";
main_Integer_1_in_2 = NULL;
main_Integer_1_in_3 = 21 ;
main_Integer_1_in_4 = NULL;
main_Integer_1_in_5 = NULL;
main_Integer_1_in_6 = NULL;
main_Integer_1_in_7 = NULL;
main_Integer_1_in_8 = NULL;
main_Integer_1_in_9 = NULL;
main_Integer_1_in_10 = NULL;
main_Integer_1_in_11 = NULL;
main_Integer_1_out_1 = 21 ;
main_Route_4_out_2 = NULL;
main_Sequencer_1_in_1 = "Sequencer_1";
main_Sequencer_1_in_2 = NULL;
main_Sequencer_1_in_3 = NULL;
main_Sequencer_1_in_4 = 0;
main_Sequencer_1_in_6 = NULL;
main_Sequencer_1_in_7 = { 0 21 1 0 21 1 };
main_Sequencer_1_out_1 = NULL;

@startframe = 0;
@nextframe  = @startframe;
@endframe   = 21;
@deltaframe = 1;
main_InterpolateCameraMacro_3_out_1 = NULL;
main_Display_3_in_3 = "X8,,";
main_Display_3_in_4 = NULL;
main_Display_3_in_5 = NULL;
main_Display_3_in_6 = NULL;
main_Display_3_in_7 = NULL;
main_Display_3_in_8 = NULL;
Executive("product version 3 1 4");
$sync

sequence main();
play;
