Changeset 2230


Ignore:
Timestamp:
Apr 26, 2011 10:12:48 PM (13 years ago)
Author:
ldelgass
Message:

Add axis flymode command, use all graphics objects (including invisible) to set
the camera distance and axes bounds, so scrolling through multiple results
doesn't change camera distance. We may want to add an option to set the
camera distance by visible objects similar to the scalar range option.

Location:
trunk/packages/vizservers/vtkvis
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/packages/vizservers/vtkvis/RpVtkRenderer.cpp

    r2222 r2230  
    374374        }
    375375        double bounds[6];
    376         collectBounds(bounds, true);
     376        collectBounds(bounds, false);
    377377        _cubeAxesActor->SetBounds(bounds);
    378378    }
     
    449449
    450450/**
     451 * \brief Set Fly mode of axes
     452 */
     453void Renderer::setAxesFlyMode(AxesFlyMode mode)
     454{
     455    if (_cubeAxesActor == NULL)
     456        initAxes();
     457    switch (mode) {
     458    case FLY_STATIC_EDGES:
     459        _cubeAxesActor->SetFlyModeToStaticEdges();
     460        break;
     461    case FLY_STATIC_TRIAD:
     462        _cubeAxesActor->SetFlyModeToStaticTriad();
     463        break;
     464    case FLY_OUTER_EDGES:
     465        _cubeAxesActor->SetFlyModeToOuterEdges();
     466        break;
     467    case FLY_FURTHEST_TRIAD:
     468        _cubeAxesActor->SetFlyModeToFurthestTriad();
     469        break;
     470    case FLY_CLOSEST_TRIAD:
     471    default:
     472        _cubeAxesActor->SetFlyModeToClosestTriad();
     473        break;
     474    }
     475    _needsRedraw = true;
     476}
     477
     478/**
    451479 * \brief Set color of axes, ticks, labels, titles
    452480 */
     
    16541682    camera->SetViewUp(0, 1, 0);
    16551683    camera->SetViewAngle(30);
    1656     _renderer->ResetCamera();
     1684    double bounds[6];
     1685    collectBounds(bounds, false);
     1686    _renderer->ResetCamera(bounds);
    16571687    camera->GetFocalPoint(_cameraFocalPoint);
    16581688    trans->Translate(+_cameraFocalPoint[0], +_cameraFocalPoint[1], +_cameraFocalPoint[2]);
     
    17421772        }
    17431773        camera->SetViewAngle(30);
    1744         _renderer->ResetCamera();
     1774        double bounds[6];
     1775        collectBounds(bounds, false);
     1776        _renderer->ResetCamera(bounds);
    17451777        _renderer->ResetCameraClippingRange();
    17461778        computeScreenWorldCoords();
     
    22352267{
    22362268    double bounds[6];
    2237     collectBounds(bounds, true);
     2269    collectBounds(bounds, false);
    22382270    _imgWorldOrigin[0] = bounds[0];
    22392271    _imgWorldOrigin[1] = bounds[2];
     
    22452277
    22462278    if (_cameraMode == IMAGE) {
    2247         _renderer->ResetCamera();
     2279        _renderer->ResetCamera(bounds);
    22482280        setCameraZoomRegion(_imgWorldOrigin[0], _imgWorldOrigin[1],
    22492281                            _imgWorldDims[0], _imgWorldDims[1]);
     
    22522284        _renderer->GetActiveCamera()->ParallelProjectionOn();
    22532285        resetAxes();
    2254         _renderer->ResetCamera();
     2286        _renderer->ResetCamera(bounds);
    22552287        computeScreenWorldCoords();
    22562288    } else if (_cameraMode == PERSPECTIVE) {
    22572289        _renderer->GetActiveCamera()->ParallelProjectionOff();
    22582290        resetAxes();
    2259         _renderer->ResetCamera();
     2291        _renderer->ResetCamera(bounds);
    22602292        computeScreenWorldCoords();
    22612293    }
  • trunk/packages/vizservers/vtkvis/RpVtkRenderer.h

    r2222 r2230  
    5050    };
    5151
     52    enum AxesFlyMode {
     53        FLY_OUTER_EDGES = 0,
     54        FLY_CLOSEST_TRIAD,
     55        FLY_FURTHEST_TRIAD,
     56        FLY_STATIC_EDGES,
     57        FLY_STATIC_TRIAD
     58    };
     59
    5260    enum CameraMode {
    5361        PERSPECTIVE,
     
    133141
    134142    // Axes
     143
     144    void setAxesFlyMode(AxesFlyMode mode);
    135145
    136146    void setAxesGridVisibility(bool state);
  • trunk/packages/vizservers/vtkvis/RpVtkRendererCmd.cpp

    r2222 r2230  
    7070    }
    7171    g_renderer->setAxesColor(color);
     72    return TCL_OK;
     73}
     74
     75static int
     76AxisFlyModeOp(ClientData clientData, Tcl_Interp *interp, int objc,
     77              Tcl_Obj *const *objv)
     78{
     79    const char *string = Tcl_GetString(objv[2]);
     80    char c = string[0];
     81    Renderer::AxesFlyMode mode;
     82    if ((c == 's') && (strcmp(string, "static_edges") == 0)) {
     83        mode = Renderer::FLY_STATIC_EDGES;
     84    } else if ((c == 's') && (strcmp(string, "static_triad") == 0)) {
     85        mode = Renderer::FLY_STATIC_TRIAD;
     86    } else if ((c == 'o') && (strcmp(string, "outer_edges") == 0)) {
     87        mode = Renderer::FLY_OUTER_EDGES;
     88    } else if ((c == 'f') && (strcmp(string, "furthest_triad") == 0)) {
     89        mode = Renderer::FLY_FURTHEST_TRIAD;
     90    } else if ((c == 'c') && (strcmp(string, "closest_triad") == 0)) {
     91        mode = Renderer::FLY_CLOSEST_TRIAD;
     92    } else {
     93        Tcl_AppendResult(interp, "bad axis flymode option \"", string,
     94                         "\": should be static_edges, static_triad, outer_edges, furthest_triad, or closest_triad", (char*)NULL);
     95        return TCL_ERROR;
     96    }
     97    g_renderer->setAxesFlyMode(mode);
    7298    return TCL_OK;
    7399}
     
    169195static Rappture::CmdSpec axisOps[] = {
    170196    {"color",   1, AxisColorOp, 5, 5, "r g b"},
     197    {"flymode", 1, AxisFlyModeOp, 3, 3, "mode"},
    171198    {"grid",    1, AxisGridOp, 4, 4, "axis bool"},
    172199    {"name",    1, AxisNameOp, 4, 4, "axis title"},
     
    204231    } else {
    205232        Tcl_AppendResult(interp, "bad camera mode option \"", string,
    206                          "\": should be perspective, ortho or image", (char*)NULL);
     233                         "\": should be persp, ortho or image", (char*)NULL);
    207234        return TCL_ERROR;
    208235    }
  • trunk/packages/vizservers/vtkvis/protocol.txt

    r2218 r2230  
    1010axis color <r> <g> <b>
    1111     Set color of axis lines, labels, titles, ticks
     12axis flymode <mode>
     13     <mode> = static_edges|static_triad|outer_edges|furthest_triad|closest_triad
    1214axis grid <bool>
    1315axis name <axis> <title>
Note: See TracChangeset for help on using the changeset viewer.