Vtk 一次设置颜色而不循环
Vtk set colors at once without loop
我尝试将颜色设置为点但没有循环 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-255new_value
,
当我 运行 并第一次更改滑块时,所有点的颜色都变为蓝色,然后没有任何变化......我有这个功能,但有循环和 InsertNextTuple3
欢迎任何帮助!
为了工作 rgb2
需要是无符号字符类型的 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()
重新渲染的速度也快得多!
我尝试将颜色设置为点但没有循环 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-255new_value
,
当我 运行 并第一次更改滑块时,所有点的颜色都变为蓝色,然后没有任何变化......我有这个功能,但有循环和 InsertNextTuple3
欢迎任何帮助!
为了工作 rgb2
需要是无符号字符类型的 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()
重新渲染的速度也快得多!