VTK 在界面旋转模型时,不同视角看的的图形颜色会发生改变!
import vtk
import numpy as np
# 0. 生成点集
points = vtk.vtkPoints()
Data_points= np.array([[0.360, -0.242, 0.692],
[0.413, -0.129, 0.722],
[0.447, -0.121, 0.934],
[0.394, -0.233, 0.903],
[0.233, -0.344, 0.678],
[0.333, -0.456, 0.789]])
for i in Data_points:
points.InsertNextPoint(i)
# 1. 读取数据
polyData = vtk.vtkPolyData()
polyData.SetPoints(points)
# 2. 建图(将点拼接成立方体)
delaunay = vtk.vtkDelaunay2D() # 实现了二维三角剖分 输入为三维空间点集
delaunay.SetInputData(polyData)
delaunay.Update() # 记得加这句,不加看不到模型
triangulatedMapper = vtk.vtkPolyDataMapper()
triangulatedMapper.SetInputData(delaunay.GetOutput())
triangulatedMapper.Update() # 记得加这句,不加看不到模型
# 3. 根据2创建执行单元
triangulatedActor = vtk.vtkActor()
triangulatedActor.SetMapper(triangulatedMapper)
triangulatedActor.GetProperty().SetColor(1.0, 0.0, 0.0) # 映射颜色
# 4. 渲染(将执行单元和背景组合在一起按照某个视角绘制)
renderer = vtk.vtkRenderer()
# renderer.SetBackground(0.0, 0.0, 0.0) # 背景只有一个所以是Set()
renderer.SetBackground(1.0, 1.0, 1.0) # 设置页面底部颜色值
renderer.SetBackground2(0.529, 0.8078, 0.92157) # 设置页面顶部颜色值
renderer.SetGradientBackground(1) # 开启渐变色背景设置
renderer.AddActor(triangulatedActor) # 因为actor有可能为多个所以是add()
mylight = vtk.vtkLight() # 光照
mylight.SwitchOff()
renderer.AddLight(mylight)
# 5. 显示渲染窗口
render_window = vtk.vtkRenderWindow()
render_window.SetWindowName("My First Cube")
render_window.SetSize(400,400)
render_window.AddRenderer(renderer) # 渲染也会有可能有多个渲染,把他们一起显示
# 6. 创建交互控键(可以用鼠标拖来拖去看三维模型)
interactor = vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(render_window)
interactor.Initialize()
interactor.Start()
旋转时模型颜色不随视角变化。