Thank you a lot,
I needed to correctly set id for each point location. Maybe for someone it will be useful:
// set points in vertical order
vtkNew<vtkPoints> points;
points->InsertNextPoint(0, 0, 0);
points->InsertNextPoint(0, 0, 1);
points->InsertNextPoint(1, 0, 0);
points->InsertNextPoint(1, 0, 1);
points->InsertNextPoint(0, 1, 0);
points->InsertNextPoint(0, 1, 1);
// set the correct id for each point location
vtkNew<vtkWedge> wedge;
wedge->GetPointIds()->SetId(0,0);
wedge->GetPointIds()->SetId(1,2);
wedge->GetPointIds()->SetId(2,4);
wedge->GetPointIds()->SetId(3,1);
wedge->GetPointIds()->SetId(4,3);
wedge->GetPointIds()->SetId(5,5);
Example that eliminates some uncertainties about scalar-points connection. I leave here in case I forget something:
#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkCellData.h>
#include <vtkColor.h>
#include <vtkDataSetMapper.h>
#include <vtkDoubleArray.h>
#include <vtkInteractorStyleSwitch.h>
#include <vtkLookupTable.h>
#include <vtkMapper.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPointData.h>
#include <vtkPoints.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkAxesActor.h>
#include <vtkWedge.h>
#include <vtkTextActor.h>
#include <vtkScalarBarActor.h>
#include <vtkLabeledDataMapper.h>
#include <vtkTextProperty.h>
int main(int, char**) {
vtkNew<vtkNamedColors> colors;
// Set the background color.
std::array<unsigned char, 4> bkg{{26, 51, 102, 255}};
colors->SetColor("BkgColor", bkg.data());
int numberOfVertices = 6;
// Setup wedge points in usual order (one triangle face after another triangle face)
vtkNew<vtkPoints> normalWedgePoints;
normalWedgePoints->InsertNextPoint(0, 0, 0);
normalWedgePoints->InsertNextPoint(1, 0, 0);
normalWedgePoints->InsertNextPoint(0, 1, 0);
normalWedgePoints->InsertNextPoint(0, 0, 1);
normalWedgePoints->InsertNextPoint(1, 0, 1);
normalWedgePoints->InsertNextPoint(0, 1, 1);
// Eliminate uncertainty how scalaras are linked with points
vtkNew<vtkDoubleArray> normalWedgeScalars;
normalWedgeScalars->SetName("NormalWedgeArray");
normalWedgeScalars->SetNumberOfComponents(1);
normalWedgeScalars->SetNumberOfValues(numberOfVertices);
for (int i = 0; i < numberOfVertices; i++)
{
normalWedgeScalars->SetValue(i, i);
}
vtkNew<vtkWedge> normalWedge;
for (int i = 0; i < numberOfVertices; i++)
{
normalWedge->GetPointIds()->SetId(i, i);
}
vtkNew<vtkUnstructuredGrid> normalWedgeUGrid;
normalWedgeUGrid->SetPoints(normalWedgePoints);
normalWedgeUGrid->InsertNextCell(normalWedge->GetCellType(), normalWedge->GetPointIds());
normalWedgeUGrid->GetPointData()->SetScalars(normalWedgeScalars);
// Setup wedge points in vertical order
vtkNew<vtkPoints> verticalWedgePoints;
verticalWedgePoints->InsertNextPoint(0, 0, 0);
verticalWedgePoints->InsertNextPoint(0, 0, 1);
verticalWedgePoints->InsertNextPoint(1, 0, 0);
verticalWedgePoints->InsertNextPoint(1, 0, 1);
verticalWedgePoints->InsertNextPoint(0, 1, 0);
verticalWedgePoints->InsertNextPoint(0, 1, 1);
// Eliminate uncertainty how scalaras are linked with points
vtkNew<vtkDoubleArray> verticalWedgeScalars;
verticalWedgeScalars->SetName("VerticalWedgeArray");
verticalWedgeScalars->SetNumberOfComponents(1);
verticalWedgeScalars->SetNumberOfValues(numberOfVertices);
for (int i = 0; i < numberOfVertices; i++)
{
verticalWedgeScalars->SetValue(i, i);
}
vtkNew<vtkWedge> verticalWedge;
verticalWedge->GetPointIds()->SetId(0,0);
verticalWedge->GetPointIds()->SetId(1,2);
verticalWedge->GetPointIds()->SetId(2,4);
verticalWedge->GetPointIds()->SetId(3,1);
verticalWedge->GetPointIds()->SetId(4,3);
verticalWedge->GetPointIds()->SetId(5,5);
vtkNew<vtkUnstructuredGrid> verticalWedgeUGrid;
verticalWedgeUGrid->SetPoints(verticalWedgePoints);
verticalWedgeUGrid->InsertNextCell(verticalWedge->GetCellType(), verticalWedge->GetPointIds());
verticalWedgeUGrid->GetPointData()->SetScalars(verticalWedgeScalars);
// Setup mappers and actors
vtkNew<vtkLookupTable> lut;
lut->SetNumberOfTableValues(6);
lut->Build();
vtkNew<vtkDataSetMapper> normalWedgeMapper;
normalWedgeMapper->SetInputData(normalWedgeUGrid);
normalWedgeMapper->SetLookupTable(lut);
normalWedgeMapper->SetScalarRange(0, numberOfVertices-1);
normalWedgeMapper->ScalarVisibilityOn();
normalWedgeMapper->SetScalarModeToUsePointData();
vtkNew<vtkDataSetMapper> verticalWedgeMapper;
verticalWedgeMapper->SetInputData(verticalWedgeUGrid);
verticalWedgeMapper->SetLookupTable(lut);
verticalWedgeMapper->SetScalarRange(0, numberOfVertices-1);
verticalWedgeMapper->ScalarVisibilityOn();
verticalWedgeMapper->SetScalarModeToUsePointData();
vtkNew<vtkActor> normalWedgeActor;
normalWedgeActor->SetMapper(normalWedgeMapper);
normalWedgeActor->GetProperty()->EdgeVisibilityOn();
normalWedgeActor->GetProperty()->SetOpacity(1);
vtkNew<vtkActor> verticalWedgeActor;
verticalWedgeActor->SetMapper(verticalWedgeMapper);
verticalWedgeActor->GetProperty()->EdgeVisibilityOn();
verticalWedgeActor->GetProperty()->SetOpacity(1);
vtkNew<vtkScalarBarActor> scalarBar;
scalarBar->SetLookupTable(lut);
scalarBar->SetTitle("Values");
scalarBar->SetNumberOfLabels(6);
scalarBar->UnconstrainedFontSizeOn();
vtkNew<vtkTextActor> normalWedgeTextActor;
normalWedgeTextActor->SetInput("Normal wedge points order");
normalWedgeTextActor->SetPosition(20, 20);
vtkNew<vtkTextActor> verticalWedgeTextActor;
verticalWedgeTextActor->SetInput("Vertical wedge points order");
verticalWedgeTextActor->SetPosition(20, 20);
vtkNew<vtkLabeledDataMapper> normalWedgeLabelMapper;
normalWedgeLabelMapper->SetInputData(normalWedgeUGrid);
vtkNew<vtkLabeledDataMapper> verticalWedgeLabelMapper;
verticalWedgeLabelMapper->SetInputData(verticalWedgeUGrid);
vtkNew<vtkActor2D> normalWedgeLabelActor;
normalWedgeLabelActor->SetMapper(normalWedgeLabelMapper);
vtkNew<vtkActor2D> verticalWedgeLabelActor;
verticalWedgeLabelActor->SetMapper(verticalWedgeLabelMapper);
vtkNew<vtkAxesActor> axes;
vtkNew<vtkRenderer> rendererLeft;
rendererLeft->SetBackground(colors->GetColor3d("BkgColor").GetData());
rendererLeft->AddActor(normalWedgeActor);
rendererLeft->AddActor(normalWedgeLabelActor);
rendererLeft->AddActor(normalWedgeTextActor);
rendererLeft->AddActor(scalarBar);
rendererLeft->AddActor(axes);
rendererLeft->ResetCamera();
rendererLeft->GetActiveCamera()->Azimuth(210);
rendererLeft->GetActiveCamera()->Elevation(-30);
rendererLeft->ResetCameraClippingRange();
rendererLeft->SetViewport(0, 0, 0.5, 1);
vtkNew<vtkRenderer> rendererRight;
rendererRight->SetBackground(colors->GetColor3d("BkgColor").GetData());
rendererRight->AddActor(verticalWedgeActor);
rendererRight->AddActor(verticalWedgeLabelActor);
rendererRight->AddActor(verticalWedgeTextActor);
rendererRight->AddActor(scalarBar);
rendererRight->AddActor(axes);
rendererRight->ResetCamera();
rendererRight->GetActiveCamera()->Azimuth(210);
rendererRight->GetActiveCamera()->Elevation(-30);
rendererRight->ResetCameraClippingRange();
rendererRight->SetViewport(0.5, 0, 1, 1);
vtkNew<vtkRenderWindow> renderWindow;
renderWindow->AddRenderer(rendererLeft);
renderWindow->AddRenderer(rendererRight);
renderWindow->SetSize(640, 480);
vtkNew<vtkRenderWindowInteractor> interactor;
vtkNew<vtkInteractorStyleSwitch> style;
interactor->SetInteractorStyle(style);
interactor->SetRenderWindow(renderWindow);
renderWindow->SetWindowName("Wedge points ordered normally and vertically");
renderWindow->Render();
interactor->Start();
}