gpt4 book ai didi

c++ - vtkAppendPolyData 中的多种颜色

转载 作者:行者123 更新时间:2023-11-28 02:37:50 24 4
gpt4 key购买 nike

我有包含 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();

这是我创建的圆锥体的代码,我想给它上色即使我设置了 coneData1->GetCellData()->SetScalars(colors),它也没有以红色显示圆锥体。

最佳答案

在将它们连接到附加过滤器之前,您必须将颜色数组附加到每个 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);

(这里是一个完整的例子:http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/TriangleSolidColor)

下面是对对象着色的不同方法的描述(直接为数据着色,而不是为 Actor 着色),可能也值得一看: https://docs.google.com/present/edit?id=0AcyIfGqnlfSoZGdqaGhnMnJfMjc0Z3EybnNkZzQ&hl=en

关于c++ - vtkAppendPolyData 中的多种颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26930833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com