123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570 |
- #include "qvtkrenderer.h"
- /*
- * @brief: the constructor
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230321
- */
- QVTKRenderer::QVTKRenderer()
- {
- qvtkWidget = NULL;
- renderWin = NULL;
- renderer = NULL;
- camera_ = NULL;
- curRenderMode_ = 1;
- surfaceVisible_ = false;
- axes = NULL;
- omWidget = NULL;
- }
- /*
- * @brief: the destructor
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230321
- */
- QVTKRenderer::~QVTKRenderer()
- {
- if(this->renderer){
- this->renderer->Delete();
- this->renderer = NULL;
- }
- if(this->renderWin){
- this->renderWin->Delete();
- this->renderWin = NULL;
- }
- if(this->camera_){
- this->camera_->Delete();
- this->camera_ = NULL;
- }
- if(this->qvtkWidget){
- delete this->qvtkWidget;
- this->qvtkWidget = NULL;
- }
- if(axes){
- axes->Delete();
- axes = NULL;
- }
- if(omWidget){
- omWidget->Delete();
- omWidget = NULL;
- }
- }
- /*
- * @brief: init(初始化)
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230406
- */
- void QVTKRenderer::init()
- {
- qvtkWidget = new QVTKOpenGLNativeWidget();
- this->renderWin = vtkGenericOpenGLRenderWindow::New();
- renderer = vtkRenderer::New();
- renderer->SetBackground(1.0,1.0,1.0);
- this->renderWin->AddRenderer(this->renderer);
- qvtkWidget->SetRenderWindow(this->renderWin);
- camera_ = vtkVISCameraManager::New();
- camera_->SetRenderTo(this->renderer);
- surfaceVisible_ = true;
- curRenderMode_ = 1;
- curSelMode_ = EntitySelection;
- axes = vtkAxesActor::New();//左下角坐标轴
- axes->SetPosition(0, 0, 0);
- axes->SetTotalLength(2, 2, 2);
- axes->SetShaftType(0);
- axes->SetCylinderRadius(0.02);
- omWidget = vtkOrientationMarkerWidget::New();
- omWidget->SetOrientationMarker(axes);
- omWidget->SetInteractor(renderWin->GetInteractor());
- omWidget->SetEnabled(1);
- omWidget->InteractiveOn();
- //widgetFlag = WidgetModel::NoModel;
- }
- /*
- * @brief: Capture widget Images(截取窗口图片)
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230406
- */
- void QVTKRenderer::CaptureWindowImages()
- {
- if(qvtkWidget == NULL) return;
- QPixmap pix = qvtkWidget->grab();
- QByteArray bytes;
- QBuffer buffer(&bytes);
- buffer.open(QIODevice::WriteOnly);
- pix.save(&buffer,"PNG");
- img = QString(bytes.toBase64());//转base64
- //emit sendImgFile(img); //发送图片(信号)
- }
- /*
- * @brief: get the widget
- * @param: void
- * @ret: widget
- * @birth: created by czm in 20230321
- */
- QWidget *QVTKRenderer::GetWidget()
- {
- return this->qvtkWidget;
- }
- /*
- * @brief: get the renderer
- * @param: void
- * @ret: renderer
- * @birth: created by czm in 20230321
- */
- vtkRenderer *QVTKRenderer::GetRenderer()
- {
- return this->renderer;
- }
- /*
- * @brief: show render widget maximum.
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230321
- */
- void QVTKRenderer::Show()
- {
- qvtkWidget->showMaximized();
- }
- /*
- * @brief: update this view
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230321
- */
- void QVTKRenderer::Update()
- {
- this->renderWin->Render();
- }
- /*
- * @brief: set smooth transite.
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230321
- */
- void QVTKRenderer::EnableSmoothTransition(bool onOff)
- {
- Q_UNUSED(onOff);
- }
- /*
- * @brief: set renderer axis visible or not.
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230321
- */
- void QVTKRenderer::SetAxisVisible(bool onOff)
- {
- Q_UNUSED(onOff);
- }
- /*
- * @brief: zoom to extents
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::ZoomToExtents()
- {
- camera_->GetCamera();
- this->camera_->Relocate();
- Update();
- }
- /*
- * @brief:
- * @brief set mouse action to default.
- * With no key press, orbits.
- * With the Shift key down, pans.
- * With the Ctrl key down, zooms.
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::Op_Default()
- {
- }
- /*
- * @brief: set mouse action zoom to window
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::Op_ZoomToWindow()
- {
- }
- /*
- * @brief: set mouse action orbit.
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::Op_Orbit()
- {
- }
- /*
- * @brief: set mouse action pan.
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::Op_Pan()
- {
- }
- /*
- * @brief: set mouse action zoom.
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::Op_Zoom()
- {
- }
- /*
- * @brief: set mouse action to single selection.
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::Op_SingleClickSelect()
- {
- }
- /*
- * @brief: set mouse action to window selection.
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::Op_WindowSelect()
- {
- }
- /*
- * @brief: set view direction to front
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::FrontView()
- {
- }
- /*
- * @brief: set view direction to back
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::BackView()
- {
- }
- /*
- * @brief: set view direction to top
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::TopView()
- {
- }
- /*
- * @brief: set view direction to bottom
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::BottomView()
- {
- }
- /*
- * @brief: set view direction to left
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::LeftView()
- {
- }
- /*
- * @brief: set view direction to right
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::RightView()
- {
- }
- /*
- * @brief: set view direction to isometric
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::IsoMetricView()
- {
- }
- /*
- * @brief: set render mode
- * 0: wireframe
- * 1: shaded
- * 2: shaded with edges
- * others: hide faces
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::SetRenderMode(int mode)
- {
- if(mode>=0&&mode<=2)this->curRenderMode_ = mode;
- vtkActorCollection* collection=this->renderer->GetActors();
- int num = collection->GetNumberOfItems();
- collection->InitTraversal();
- for(int i=0;i<num;i++){
- if(this->curRenderMode_ == 0){
- vtkActor* actor = collection->GetNextActor();
- actor->GetProperty()->SetRepresentationToWireframe();
- actor->GetProperty()->EdgeVisibilityOff();
- Update();
- }else if(this->curRenderMode_ == 1){
- vtkActor* actor = collection->GetNextActor();
- actor->GetProperty()->SetRepresentationToSurface();
- actor->GetProperty()->EdgeVisibilityOff();
- Update();
- }else if(this->curRenderMode_ == 2){
- vtkActor * actor = collection->GetNextActor();
- actor->GetProperty()->SetRepresentationToSurface();
- actor->GetProperty()->EdgeVisibilityOn();
- Update();
- }
- }
- }
- /*
- * @brief: set geometry-point visible or not.
- * @param: bool
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::SetPointVisible(bool onOff)
- {
- Q_UNUSED(onOff);
- }
- /*
- * @brief: set geometry-curve visible or not.
- * @param: bool
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::SetCurveVisible(bool onOff)
- {
- Q_UNUSED(onOff);
- }
- /*
- * @brief: set geometry-surface visible or not.
- * @param: bool
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::SetSurfaceVisible(bool onOff)
- {
- surfaceVisible_ = true;
- if (onOff) SetRenderMode(curRenderMode_);
- else SetRenderMode(-1);
- surfaceVisible_ = onOff;
- }
- /*
- * @brief: set the point selection mode
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::SetSelectionLevelToPoint()
- {
- if (curSelMode_ == PointSelection) return;
- else
- {
- SetPointVisible(true);
- setSelectionLevelToEntity();
- curSelMode_ = PointSelection;
- }
- }
- /*
- * @brief: set the surface selection mode
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::SetSelectionLevelToSurface()
- {
- if (curSelMode_ == SurfaceSelection) return;
- else
- {
- SetSurfaceVisible(true);
- this->setSelectionLevelToEntity();
- curSelMode_ = SurfaceSelection;
- }
- }
- /*
- * @brief: set the entity selection mode
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::SetSelectionLevelToEntity()
- {
- if (curSelMode_ == EntitySelection) return;
- else
- {
- this->setSelectionLevelToEntity();
- curSelMode_ = EntitySelection;
- }
- }
- /*
- * @brief: set the entity selection level
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::setSelectionLevelToEntity()
- {
- }
- /*
- * @brief: set the subentity selection level.
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::setSelectionLevelToSubentity()
- {
- }
- /*
- * @brief: set point size in render window.
- * @param: size
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::SetPointSize(float size)
- {
- Q_UNUSED(size);
- }
- /*
- * @brief: set line width in render window.
- * @param: width
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::SetLineWidth(float width)
- {
- Q_UNUSED(width);
- }
- /*
- * @brief: hide all actors
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::HideAllActors()
- {
- vtkPropCollection* pc = renderer->GetViewProps();
- pc->InitTraversal();
- for(int i = 0; i < pc->GetNumberOfItems(); i ++)
- {
- pc->GetNextProp()->VisibilityOff();
- }
- //0425 append
- renderer->ResetCamera();
- renderWin->Render();
- }
- /*
- * @brief: remove all actors
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230322
- */
- void QVTKRenderer::RemoveAllActors()
- {
- //this->renderer->RemoveAllViewProps();
- vtkActorCollection * allActor = renderer->GetActors();
- vtkCollectionSimpleIterator pit;
- vtkActor *currActor = nullptr;
- for (allActor->InitTraversal(pit);(currActor = allActor->GetNextActor(pit)); )
- {
- renderer->RemoveActor(currActor);
- }
- }
|