为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 VTK 中创建颜色图?

如何在 VTK 中创建颜色图?

墨色风雨 2022-11-09 17:14:45
我在 VTK 中创建了一个简单的非结构化正方形:x = [0,10,0,10]y = [0, 0, 10, 10]z = [0,0,0,0]data = np.asarray([x,y,z]).Tfor i in range(0, len(x)):    points.InsertPoint(i, data[i])quad = [2,3,1,0]ugrid.InsertNextCell(vtk.VTK_QUAD, 4, quad)ugrid.SetPoints(points)假设我想创建一个正方形温度的颜色图。我知道角落的温度: temp = [0,20,40,60]知道这些值如何为整个正方形着色?VTK 在他们的教程(ColoredElevationMap 教程)中提供了一个创建颜色图的示例,但是,我并不完全理解它,我相信还有另一种更简单的方法可以在我不知道的 VTK 中创建颜色图。
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

您应该添加数据数组并将其设置为标量(= 在 VTK 中使用的默认数组,特别是用于着色)


temperature = vtk.vtkIntArray()

temperature.SetName("Temp")

temp = [00,20,40,60]

for t in temp:

    temperature.InsertNextValue(t)


ugrid.GetPointData().SetScalars(temperature)

然后在渲染部分,默认使用这个数组进行着色。您仍然需要更新颜色范围:


mapper.SetScalarRange(ugrid.GetScalarRange())

你可以看看这个例子(编辑:更新链接感谢@paulo-carvalho)


查看完整回答
反对 回复 2022-11-09
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

添加到 Nico Vuaille 的答案。可以使用查找表更改地图的颜色,例如:


lut = vtk.vtkLookupTable()

lut.SetHueRange(0, 0)

lut.SetSaturationRange(0, 0)

lut.SetValueRange(0.2, 1.0)

lut.Build()


Mapper.SetLookupTable(lut)


查看完整回答
反对 回复 2022-11-09
  • 2 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信