C++ VTKAPDALYDATA中的多种颜色

C++ VTKAPDALYDATA中的多种颜色,c++,graphics,vtk,C++,Graphics,Vtk,我有包含4个vtkConeSource的vtkAppendPolyData。我想用不同的颜色给这4个圆锥体上色。vtk中是否有任何方法可以实现这一点。如果你有任何其他建议,请告诉我 vtkConeSource *cone1 = vtkConeSource::New(); cone1->SetHeight(6.0); cone1->SetRadius(3.0); cone1->SetCenter(0, 0, 0); cone1->SetResolution(10); vt

我有包含4个vtkConeSource的vtkAppendPolyData。我想用不同的颜色给这4个圆锥体上色。vtk中是否有任何方法可以实现这一点。如果你有任何其他建议,请告诉我

vtkConeSource *cone1 = vtkConeSource::New();
cone1->SetHeight(6.0);
cone1->SetRadius(3.0);
cone1->SetCenter(0, 0, 0);
cone1->SetResolution(10);

vtkPolyData *coneData1 = cone1->GetOutput();

unsigned char red[3] = {255, 0, 0};

vtkUnsignedCharArray *colors = vtkUnsignedCharArray::New();
colors->SetNumberOfComponents(3);
colors->SetName("Colors");
colors->InsertNextTupleValue(red);

coneData1->GetCellData()->SetScalars(colors);

vtkPolyDataMapper *mapper = vtkPolyDataMapper::New();
mapper->SetInput(coneData1);
mapper->Update();
mapper->StaticOn();

vtkActor *coneActor = vtkActor::New();
coneActor->SetMapper( mapper );

vtkRenderer *ren1= vtkRenderer::New();
ren1->AddActor( coneActor );
ren1->SetBackground( 0.1, 0.2, 0.4 );

vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer( ren1 );
renWin->SetSize( 300, 300 );

vtkRenderWindowInteractor *interactor = vtkRenderWindowInteractor::New();
renWin->SetInteractor(interactor);

renWin->Render();
interactor->Start();

这是我创建的cone代码,我想给它上色,尽管我设置了coneData1->GetCellData()->SetScalars(颜色),但它不以红色显示cone。

在将每个vtkConeSource输出连接到附加过滤器之前,必须将颜色数组附加到每个vtkConeSource输出。你可以这样做:

  unsigned char red[3] = {255, 0, 0};

  vtkSmartPointer<vtkUnsignedCharArray> colors =
    vtkSmartPointer<vtkUnsignedCharArray>::New();
  colors->SetNumberOfComponents(3);
  colors->SetName("Colors");
  colors->InsertNextTupleValue(red);

  polydata->GetCellData()->SetScalars(colors);
unsignedcharred[3]={255,0,0};
VTKSmart指针颜色=
vtkSmartPointer::New();
颜色->设置组件数量(3);
颜色->设置名称(“颜色”);
颜色->InsertNextTupleValue(红色);
polydata->GetCellData()->设置刻度(颜色);
(以下是一个完整的示例:)

下面介绍了为对象着色的不同方法(直接为数据着色,而不是为参与者着色),这些方法可能也值得一看:

在将vtkConeSource输出连接到附加过滤器之前,必须将颜色数组附加到每个vtkConeSource输出。你可以这样做:

  unsigned char red[3] = {255, 0, 0};

  vtkSmartPointer<vtkUnsignedCharArray> colors =
    vtkSmartPointer<vtkUnsignedCharArray>::New();
  colors->SetNumberOfComponents(3);
  colors->SetName("Colors");
  colors->InsertNextTupleValue(red);

  polydata->GetCellData()->SetScalars(colors);
unsignedcharred[3]={255,0,0};
VTKSmart指针颜色=
vtkSmartPointer::New();
颜色->设置组件数量(3);
颜色->设置名称(“颜色”);
颜色->InsertNextTupleValue(红色);
polydata->GetCellData()->设置刻度(颜色);
(以下是一个完整的示例:)

下面介绍了为对象着色的不同方法(直接为数据着色,而不是为参与者着色),这些方法可能也值得一看:

在将vtkConeSource输出连接到附加过滤器之前,必须将颜色数组附加到每个vtkConeSource输出。你可以这样做:

  unsigned char red[3] = {255, 0, 0};

  vtkSmartPointer<vtkUnsignedCharArray> colors =
    vtkSmartPointer<vtkUnsignedCharArray>::New();
  colors->SetNumberOfComponents(3);
  colors->SetName("Colors");
  colors->InsertNextTupleValue(red);

  polydata->GetCellData()->SetScalars(colors);
unsignedcharred[3]={255,0,0};
VTKSmart指针颜色=
vtkSmartPointer::New();
颜色->设置组件数量(3);
颜色->设置名称(“颜色”);
颜色->InsertNextTupleValue(红色);
polydata->GetCellData()->设置刻度(颜色);
(以下是一个完整的示例:)

下面介绍了为对象着色的不同方法(直接为数据着色,而不是为参与者着色),这些方法可能也值得一看:

在将vtkConeSource输出连接到附加过滤器之前,必须将颜色数组附加到每个vtkConeSource输出。你可以这样做:

  unsigned char red[3] = {255, 0, 0};

  vtkSmartPointer<vtkUnsignedCharArray> colors =
    vtkSmartPointer<vtkUnsignedCharArray>::New();
  colors->SetNumberOfComponents(3);
  colors->SetName("Colors");
  colors->InsertNextTupleValue(red);

  polydata->GetCellData()->SetScalars(colors);
unsignedcharred[3]={255,0,0};
VTKSmart指针颜色=
vtkSmartPointer::New();
颜色->设置组件数量(3);
颜色->设置名称(“颜色”);
颜色->InsertNextTupleValue(红色);
polydata->GetCellData()->设置刻度(颜色);
(以下是一个完整的示例:)

下面介绍了为对象着色的不同方法(直接为数据着色,而不是为参与者着色),这些方法可能也值得一看:

类似地,对于其他圆锥体,我添加了颜色,这解决了我的问题

类似地,对于其他圆锥体,我添加了颜色,这解决了我的问题

类似地,对于其他圆锥体,我添加了颜色,这解决了我的问题


类似地,对于其他圆锥体,我添加了颜色,这解决了我的问题

您如何发布您尝试的代码,David我添加了代码片段请检查请让我知道我做错了什么我发现在应用颜色之前我应该更新ConeSource How about you发布您尝试的代码,David我添加了代码片段请检查请让我知道我做错了什么我发现在应用颜色之前我应该更新ConeSource How about you发布您尝试的代码,David我添加了代码片段请检查请让我知道我做错了什么我发现在应用颜色之前我应该更新ConeSource How about you发布您尝试的代码,David我已经添加了代码片段请检查请告诉我我做错了什么我发现在应用颜色之前我应该更新conesource