Libraries
VTK库的编译和使用
VTK库的编译和使用
编译基本步骤
- 安装visual studio和Qt
- 下载VTK源代码
- 使用cmake-gui配置编译过程
- 采用vs执行编译和安装
使用cmake-gui配置编译过程
- 设置Qt的路径,例如:D:/Qt/6.4.3/msvc2019_64/lib/cmake/Qt6
- Configure后,cmake-gui界面将给出更多的cmake选项
- 在新增的cmake选项中选取
- VTK_GROUP_ENABLE_Qt=yes
- VTK_MODULE_ENABLE_VTK_GUISupportQt=yes
- VTK_MODULE_ENABLE_VTK_RenderingQt=yes
- 设置CMAKE_INSTALL_PREFIX为期望的安装路径
- 再次Configure,成功后运行Generate
- Generate完成后Open Project
采用vs执行编译和安装
- 生成->批生成,注意勾选Debug, Release, INSTALL等选项
读取变量个数
vtkSmartPointer<vtkStructuredPointsReader> reader = vtkSmartPointer<vtkStructuredPointsReader>::New();
reader->SetFileName(vtkFilePath.toStdString().c_str());
reader->ReadAllScalarsOn();
// Update the reader
reader->Update();
int numScalars = reader->GetNumberOfScalarsInFile();
qDebug() << "number of scalars: " << numScalars;
for (int i = 0; i < numScalars; i++)
{
const char* scalar_name = reader->GetScalarsNameInFile(i);
qDebug() << "scalar name: " << scalar_name;
}
colormap
https://discourse.vtk.org/t/changing-scalars-to-render-via-setactivescalars/6640/2
const openglRenderWindow = vtkOpenGLRenderWindow.newInstance();
const renderWindow = vtkRenderWindow.newInstance();
const renderer = vtkRenderer.newInstance({ background: [0, 0, 0], });
renderWindow.addRenderer(renderer);
// Update data scalar variable
data.getPointData().setActiveScalars(scalarVar);
// mapper - add to actor
const mapper = vtkMapper.newInstance();
const actor = vtkActor.newInstance();
const lookupTable = vtkColorTransferFunction.newInstance();
lookupTable.applyColorMap(vtkColorMaps.getPresetByName('jet'));
lookupTable.updateRange();
mapper.setInputData(data);
mapper.setScalarModeToDefault();
mapper.setScalarRange(0, 1);
mapper.setLookupTable(lookupTable);