簡體   English   中英

在VTK中修改polyData點/頂點

[英]Modifying the polyData points/vertices in VTK

我正在嘗試使用VTK來更改點,即我正在以(+ 1 / -1)值更改坐標(x,y,z)。 我正在讀取.OBJ文件,然后訪問模型的點,並且在嘗試可視化模型中的更改時,RenderWindow沒有顯示任何內容。 下面是我的代碼:

vtkSmartPointer<vtkOBJReader> reader = vtkSmartPointer<vtkOBJReader>::New();
reader->SetFileName(filename.c_str());
reader->Update();

vtkSmartPointer<vtkPolyData> polyData = reader->GetOutput();
polyData->Update();

Point3d point;
std::vector<Point3d> vertices; 

double p[3];        
vtkPoints* points = vtkPoints::New();       
vtkDoubleArray* pcoord = vtkDoubleArray::New();

pcoord->SetNumberOfComponents(3);       
pcoord->SetNumberOfTuples(polyData->GetNumberOfPoints());

for(vtkIdType i = 0; i < polyData->GetNumberOfPoints(); i++) 
{  
    polyData->GetPoint(i,p);
    p[0] +=1;
    p[1] +=1;
    p[2] +=1;
    pcoord->SetTuple(i, p);       
}

points->SetData(pcoord);
polyData->SetPoints(points);   
polyData->Modified();

//Visualize Code

vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(reader->GetOutputPort());

vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);

vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(actor);

vtkRenderWindow* renderWindow = vtkRenderWindow::New();
renderWindow->AddRenderer(renderer);

vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);

renderWindowInteractor->Initialize();
renderWindowInteractor->Start();

我是3D和VTK的新手,請檢查缺少的位置,因為我想更改每個頂點(x,y,z)的坐標。 我還需要進一步更改其他內容嗎?

非常感謝。

首先,您在問題中包含的代碼中存在對齊問題。 我相信您也缺少for循環。 (在哪里定義“ i”?)

主要問題是您根本沒有渲染polyData。 您要呈現的唯一內容是.obj文件中的內容。 從這一行可以看出:

mapper->SetInputConnection(reader->GetOutputPort());

為了渲染polyData,將以上行替換為:

mapper->SetInputData(polyData);

這假設polyData是正確創建的。 我無法從您提供的代碼中輕易看出這一點。

是一個可能有幫助的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM