vtk.js 学习教程
面向已经掌握 Three.js 表面渲染的开发者。本教程从数据模型和管线出发,逐步学习切片、体渲染、真实数据读取与综合项目。
组织方式:30 个独立章节与 README.md 同级。 示例项目放在 examples/,练习和参考答案放在 exercises/,不混入正文。第 1–9 阶段的第 1–30 章均已完成。
技术基线
@kitware/vtk.js 37.4.2
Vite 7.3.1
- Node.js
20.19+ 或 22.12+(Vite 7 的要求)
后续阶段沿用此版本。若升级依赖,先验证已有示例,再同步修改受影响的章节。
目录与编写阶段
第 1 阶段:心智模型与第一个程序(已完成)
- vtk.js 在解决什么问题
- 从 Three.js 转换到 vtk.js
- 数据管线与场景管线
- 第一个可运行程序
练习与参考答案 · 可运行示例
第 2 阶段:渲染环境对象(已完成)
- vtkGenericRenderWindow 与 vtkRenderWindow
- vtkRenderer 与 vtkCamera
- vtkRenderWindowInteractor 与交互样式
练习与参考答案 · 可运行示例
第 3 阶段:数据对象(已完成)
- vtkDataArray:值、分量与元组
- vtkPolyData、vtkPoints 与 vtkCellArray
- Point Data 与 Cell Data
- vtkImageData:规则三维采样场
练习与参考答案 · 可运行示例
第 4 阶段:表面与切片(已完成)
- vtkMapper:输入与表面映射
- vtkActor 与 vtkProperty:放置与外观
- 标量着色与颜色映射
- vtkImageMapper 与 vtkImageSlice:三维数据的切片
练习与参考答案 · 可运行示例
第 5 阶段:体渲染原理(已完成)
- 体渲染原理:视线采样、插值与颜色累积
- vtkColorTransferFunction:标量到颜色
- vtkPiecewiseFunction:标量到不透明度
练习与参考答案 · 可运行示例
第 6 阶段:体渲染对象(已完成)
- vtkVolumeMapper:三维采样与混合方式
- vtkVolume 与 vtkVolumeProperty:体对象及外观
- 切片、合成体渲染、MIP 与等值面
练习与参考答案 · 可运行示例
第 7 阶段:真实数据与过滤器(已完成)
- Reader 对象与数据格式
vtkHttpDataSetReader:数组选择与按需加载
- Filter 对象:等值面提取与
vtkClipPolyData
练习与参考答案 · 可运行示例
第 8 阶段:排错与自学(已完成)
- 数据更新机制
- 大数据性能
- 阅读官方示例、API 与源码
练习与参考答案 · 可运行示例
第 9 阶段:综合项目(已完成)
- 带标量着色的表面查看器
- 带切片和传递函数控制的体数据查看器
- 属性数组按需加载与网络请求观察
练习与参考答案 · 可运行示例
阅读顺序
按章节编号阅读正文。完成一个阶段后,再做该阶段的练习;示例项目供运行、修改和检查,不代替正文中的解释。