VTK 9.2渲染立方体时部分面始终显示反向的问题
VTK 9.2立方体面渲染方向异常问题
我正在使用VTK 9.2渲染立方体的面,立方体顶点顺序如下:
// 7-------6 // /| /| // 4-+-----5 | // | | | | y // | 3-----+-2 | z // |/ |/ |/ // 0-------1 +--x
(我知道这是非典型的顶点顺序,但只要使用时保持一致,对VTK渲染面应该没有影响)
其中+Z面渲染完全正常,但-Z面无论定义何种顶点顺序,始终显示反向。我为每个面使用了VTK_PIXEL类型。
以下是渲染代码:
vtkGenericOpenGLRenderWindow* renderWindow = vtkGenericOpenGLRenderWindow::New(); vtkNew<vtkUnstructuredGrid> ugrid; // 创建并插入顶点 std::vector<std::vector<double>> vertices(8); double halfWidth = 20.0; vertices[0] = { - halfWidth, - halfWidth, - halfWidth }; // 0 vertices[1] = { + halfWidth, - halfWidth, - halfWidth }; // 1 vertices[2] = { + halfWidth, - halfWidth, + halfWidth }; // 2 vertices[3] = { - halfWidth, - halfWidth, + halfWidth }; // 3 vertices[4] = { - halfWidth, + halfWidth, - halfWidth }; // 4 vertices[5] = { + halfWidth, + halfWidth, - halfWidth }; // 5 vertices[6] = { + halfWidth, + halfWidth, + halfWidth }; // 6 vertices[7] = { - halfWidth, + halfWidth, + halfWidth }; // 7 vtkNew<vtkPoints> points; for (auto i = 0; i < 8; ++i) { points->InsertNextPoint(vertices.at(i).at(0), vertices.at(i).at(1), vertices.at(i).at(2)); } // 创建面 std::vector<std::array<vtkIdType, 4>> faces; faces.push_back({ 3, 2, 7, 6 }); // +Z面,渲染正常! // -Z面尝试的各种顶点顺序: faces.push_back({ 1, 0, 5, 4 }); // 显示反向 //faces.push_back({ 0, 1, 4, 5 }); // 显示反向 //faces.push_back({ 0, 4, 1, 5 }); // 显示反向 //faces.push_back({ 5, 1, 4, 0 }); // 显示反向 //faces.push_back({ 4, 5, 0, 1 }); // 显示反向 //faces.push_back({ 1, 5, 0, 4 }); // 显示反向 //faces.push_back({ 4, 0, 5, 1 }); // 显示反向 //faces.push_back({ 5, 4, 1, 0 }); // 仍显示反向 // 插入面 for(int i = 0; i < faces.size(); i++) { ugrid->InsertNextCell(VTK_PIXEL, 4, faces.at(i).data()); } ugrid->SetPoints(points); // 创建数据集映射器 vtkNew<vtkDataSetMapper> mapper; mapper->SetInputData(ugrid); // 创建Actor并添加到场景 vtkNew<vtkActor> actor; actor->SetMapper(mapper); addActorToScene(0, 0.0, actor); renderWindow->Render();
+Z面渲染效果正常,但-Z面无论尝试哪种顶点顺序都显示反向。
渲染效果如下:
如图所示,+Z面(顶点顺序3, 2, 7, 6)显示正常,外部为白色、内部为黑色;但-Z面显示异常,内部为白色、外部为黑色。
内容的提问来源于stack exchange,提问作者Tyler Shellberg
相关产品推荐
相关产品推荐

