我尝试将颜色设置为点,但没有循环。InsertNextTuple3()
.ndarray np_rgb_array
是nx3大小。
def set_threshold(self, new_value):
np_rgb_array = (np.ones((self.points.shape))*new_value).astype(int)
rgb2 = npsup.numpy_to_vtk(np_rgb_array ,deep=1)
rgb2.SetName("Colors")
self.vtk_vertex.GetPointData().SetScalars(rgb2)
self.mapper.SetInputData(self.vtk_vertex)
self.mapper.Modified()
self.actor.GetProperty().Modified()
self.render_window.Render()
该函数由pyqt的slider调用,范围为0-255。new_value
当我第一次运行并改变滑块时,所有点的颜色都变成了蓝色,然后什么都没变...... 我有这个功能的工作,但与循环和 InsertNextTuple3
任何帮助将是欢迎的
为了让它工作 rgb2
是需要Unsigned char类型的vtk数组。所以我基本创建了新的数组 rgb3
有适当类型的,并做了 .ShallowCopy()
数据来自 rgb2
是双类型的数组。
def set_threshold(self, new_value):
rgb3 = vtk.vtkUnsignedCharArray()
rgb3.SetNumberOfComponents(3)
rgb3.SetName("Colors")
test = np.ones((self.points.shape))*new_value
vtk_test = npsup.numpy_to_vtk(test,deep=1)
vtk_test.SetName("Colors")
rgb3.ShallowCopy(vtk_test)
self.vtk_vertex.GetPointData().SetScalars(rgb3)
self.mapper.SetInputData(self.vtk_vertex)
self.mapper.Modified()
self.actor.GetProperty().Modified()
self.render_window.Render()
另外,重新渲染的速度也快得多