vtk如何输出.vtp格式的文件

2025-10-20 16:14:09

1、vtkxmlpolydatawriter()用来写入VTK XML polydata 格式的文件。

vtkcellarray()支持的列表结构形式:(n,id1,id2,…,idn, n,id1,id2,…,idn, …)其中n是在结构中点的数目,ID为偏移相关点列表。这种数据结构的优点:紧凑性,简单,易于外部数据侮痕的接口。然而,它是完全不足够的随机访问。

vtk如何输出.vtp格式的文件

2、代码如下

#include "vtkVersion.h"

#include "vtkSmartPointer.h"

#include "vtkPolyData.h"

#include "vtkPoints.h"

#include "vtkCellArray.h"

#include "vtkXMLPolyDataWriter.h"

#include <vtkVertexGlyphFilter.h>

#include <蚊肥久vtkPolyDataMapper.h>

#include <vtkActor.h>

#include <vtkRenderer.h>

#include <vtkRenderWindow.h>

#include <vtkRenderWindowInteractor.h>

#include <iostream>

vtkPolyData * custom_reader(std::istream & infile)

{

    vtkIdType number_of_points, number_of_triangles;

    infile >> number_of_points >> number_of_triangles;

    vtkSmartPointer<vtkPoints> points

        = vtkSmartPointer<vtkPoints>::New();

    points->SetNumberOfPoints(number_of_points);

    for (vtkIdType i = 0; i < number_of_points; i++)

    {

        double x, y, z;

        infile >> x >> y >> z;

        points->SetPoint(i, x, y, z);

    }

    vtkSmartPointer<vtkCellArray> polys

        = vtkSmartPointer<vtkCellArray>::New();

    for (vtkIdType i = 0; i < number_of_triangles; i++)

    {

        vtkIdType a, b, c;

        infile >> a >> b >> c;

        polys->InsertNextCell(3);

        polys->InsertCellPoint(a);

        polys->InsertCellPoint(b);

        polys->InsertCellPoint(c);

    }

    vtkPolyData * polyData = vtkPolyData::New();

    polyData->SetPoints(points);

    polyData->SetPolys(polys);

    return polyData;

}

int main()

{

    std::string inputFilename = "888.txt";

    std::ifstream fin(inputFilename.c_str());

    vtkSmartPointer<vtkPolyData> polyData

        = vtkSmartPointer<vtkPolyData>::Take(

        custom_reader(fin));

    vtkSmartPointer<vtkVertexGlyphFilter> glyphFilter =

        vtkSmartPointer<vtkVertexGlyphFilter>::New();

    glyphFilter->SetInputConnection(polyData->英番GetProducerPort());

    glyphFilter->Update();

    vtkSmartPointer<vtkPolyDataMapper> mapper =

        vtkSmartPointer<vtkPolyDataMapper>::New();

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

    vtkSmartPointer<vtkActor> actor =

        vtkSmartPointer<vtkActor>::New();

    actor->SetMapper(mapper);

    vtkSmartPointer<vtkRenderer> renderer =

        vtkSmartPointer<vtkRenderer>::New();

    renderer->AddActor(actor);

    renderer->SetBackground(.3, .6, .4); 

    vtkSmartPointer<vtkRenderWindow> renderWindow =

        vtkSmartPointer<vtkRenderWindow>::New();

    renderWindow->AddRenderer(renderer);

    vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =

        vtkSmartPointer<vtkRenderWindowInteractor>::New();

    renderWindowInteractor->SetRenderWindow(renderWindow);

    renderWindow->Render();

    renderWindowInteractor->Start();

    vtkSmartPointer<vtkXMLPolyDataWriter> writer =

        vtkSmartPointer<vtkXMLPolyDataWriter>::New();

    writer->SetInput(polyData);

    writer->SetFileName("888.vtp");

    writer->Write();

    return 0;

}

vtk如何输出.vtp格式的文件

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢