CSARImage 2023-04-16 16:07 采纳率: 0%
浏览 80
已结题

vtk下自由绘制着色问题

vtk下自由绘制着色问题
其他软件效果,奇数次着色,偶数次不着色

img


自己绘制的效果,重复区域颜色会加重

img

  • 写回答

5条回答 默认 最新

  • CSARImage 2023-04-17 10:44
    关注
    //vtkRender
        m_pClipRender = vtkRenderer::New();
        this->m_pClipRender->SetLayer(1);
        this->m_pClipRender->InteractiveOff();
        pWin->AddRenderer(this->m_pClipRender);
    
        //Polygon
        m_pClipPolygonPolyData = vtkPolyData::New();
        vtkNew<vtkPoints> point;
        m_pClipPolygonPolyData->SetPoints(point);
        vtkNew<vtkCellArray> polys;
        m_pClipPolygonPolyData->SetPolys(polys);
    
        //vtkPolyDataMapper2D
        m_pClipPolygonMapper = vtkPolyDataMapper2D::New();
        m_pClipPolygonMapper->SetInputData(m_pClipPolygonPolyData);
    
        //vtkActor2D
        m_pClipPolygon2DActor = vtkActor2D::New();
    //    m_pClipPolygon2DActor->GetPositionCoordinate()->SetCoordinateSystemToDisplay();
        m_pClipPolygon2DActor->SetMapper(m_pClipPolygonMapper);
    
        this->m_pClipRender->AddActor2D(m_pClipPolygon2DActor);
    

    上面是创建Actor,下面是更新PolyData

        auto pInter = static_cast<vtkInterStyleVR*>(this->GetInteractorObserver());
        std::vector<vtkVector2i> vecDisPts = pInter->GetPolygonPoints();
    
        vtkPoints* points = m_pClipPolygonPolyData->GetPoints();
        points->Reset();
        for (int i = 0; i < vecDisPts.size(); i++)
        {
            points->InsertNextPoint(vecDisPts[i].GetX(), vecDisPts[i].GetY(), 0.0);
        }
    
        m_pClipPolygonPolyData->Allocate(1, 1);
            vtkPoints* points = m_pClipPolygonPolyData->GetPoints();
    
            vtkCellArray* polys = vtkCellArray::New();
            polys->InsertNextCell(points->GetNumberOfPoints());
            for (int i = 0; i < points->GetNumberOfPoints(); i++)
            {
                polys->InsertCellPoint(i);
            }
            m_pClipPolygonPolyData->SetPolys(polys);
            polys->Delete();
        
        m_pClipPolygon2DActor->GetProperty()->SetLineWidth(2);
        m_pClipPolygon2DActor->GetProperty()->SetColor(0.0, 1.0, 0.0);
        m_pClipPolygon2DActor->GetProperty()->SetOpacity(0.4);
        
        m_pClipPolygonPolyData->Modified();
    
    
    评论

报告相同问题?

问题事件

  • 系统已结题 4月24日
  • 创建了问题 4月16日

悬赏问题

  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥100 单片机hardfaulr
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费