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()

重新渲染的速度也快得多!