0

メッシュ (カラー付き) がロードされており、それを .ply ファイルに書き込み、rgb 情報も保存したいと考えています。私は現在、クラスを使用する以下のコードを持っていますが、これはvtkPLYWriter頂点を保存するだけで、RGB 情報は保存しません。これを行うための組み込みの方法はありますか?

コード

vtkSmartPointer<vtkTransformPolyDataFilter> rotate_and_save_mesh(vtkSmartPointer<vtkPLYReader> mesh_reader, double rotation_angle, double x, double y, double z, 
        std::string& out_name, bool should_write = true){
    vtkSmartPointer<vtkTransform> transform = vtkSmartPointer<vtkTransform>::New();
    transform->RotateWXYZ(rotation_angle, x, y, z);
    vtkSmartPointer<vtkTransformPolyDataFilter> transformFilter = vtkSmartPointer<vtkTransformPolyDataFilter>::New();

    transformFilter->SetTransform(transform);
    transformFilter->SetInputConnection(mesh_reader->GetOutputPort());
    transformFilter->Update();

    if(should_write){
        vtkSmartPointer<vtkPLYWriter> writer = vtkSmartPointer<vtkPLYWriter>::New();
        writer->SetInputConnection(transformFilter->GetOutputPort());
        writer->SetFileName(out_name.c_str());

        writer->Write();
    }
    return transformFilter;
}
4

1 に答える 1

1

これは非常に厄介です。vtkPolyDataXMLWriter や他のほとんどの VTK ライターとは異なり、指定する必要があります。

plyWriter->SetArrayName("Colors");

カラー配列が次のように作成/命名された場所:

vtkSmartPointer<vtkUnsignedCharArray> colors =
  vtkSmartPointer<vtkUnsignedCharArray>::New();
colors->SetNumberOfComponents(3);
colors->SetName("Colors");
于 2013-10-22T18:49:49.427 に答える