从 VTK 对象中删除球体
Deleting Spheres from VTK Object
我们已经编写了一个程序,如图所示:program_image。我们在对象上添加了球体以获取有关该地点的信息。现在的问题是,虽然我们可以毫无问题地放置它们,但我们无法移除它们。我们想删除它们。我们尝试了很多方法,例如 vtkObjectBase.Delete()
等。None 有效。为它们添加了这个功能:
def cagir(*vecto):
global oldvecto,distance,etiket
#print('cagir geldi')
source = vtk.vtkSphereSource()
source.SetCenter(vecto[0][i][0],vecto[0][i][1],vecto[0][i][2])
source.SetRadius(0.01)
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(source.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
self.ren.AddActor(actor)
etiket.append(i)
self.renWin.Render()
重点是将它们从地图上移除(我不懂行话),尤其是在视觉上。谢谢。
编辑1:
关于我在 def cagir()
函数上方添加此函数的建议,缩进相同,
def dene(*vecto):
#print("dene e girildi")
actor = vtk.vtkActor()
self.ren.RemoveActor(actor)
self.renWin.Render()
我得到了这些,
2021-10-04 14:50:05.754 (5750.642s) [ ]vtkWin32OpenGLRenderWin:217 ERR| vtkWin32OpenGLRenderWindow (00000216F5B1C430): wglMakeCurrent failed in MakeCurrent(), error: The requested resource is in use.
2021-10-04 14:50:05.767 (5750.655s) [ ]vtkOpenGLVertexBufferOb:280 ERR| vtkOpenGLVertexBufferObjectGroup (00000216FF4586E0): Error setting 'normalMC' in shader VAO.
2021-10-04 14:50:05.767 (5750.655s) [ ]vtkOpenGLVertexArrayObj:296 ERR| vtkOpenGLVertexArrayObject (00000216FF3C6C40): attempt to add attribute when not ready for attribute vertexMC
我是 VTK 的初学者,所以如果我犯了一些有趣的错误,我很抱歉。但是很长一段时间,我都在为这段代码苦苦挣扎。
编辑2:
def dene(*vecto):
source = vtk.vtkSphereSource()
self.ren.RemoveActor(actor)
self.renWin.Render()
mapper = vtk.vtkPolyDataMapper()
actor.SetMapper(mapper)
mapper.SetInputConnection(source.GetOutputPort())
def cagir(*vecto):
global oldvecto, distance, etiket,actor
# print('cagir geldi')
source = vtk.vtkSphereSource()
source.SetCenter(vecto[0][i][0], vecto[0][i][1], vecto[0][i][2])
source.SetRadius(0.01)
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(source.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
self.ren.AddActor(actor)
etiket.append(i)
self.renWin.Render()
仍然有类似的错误,当我使用 dene()
虽然我们把这些小球体放在上面的所有对象都消失了,但球体仍然留在它们的位置:image2。关于 cagir()
函数,你能为我写出 dene()
函数吗?谢谢。
已编辑
您应该将其从 mapper Renderer
中移除
renderer.RemoveActor(actor)
编辑2
你应该保留一个引用/变量指向你想要删除的演员。在我的代码中,actor
指的是在您的 cagir()
方法中创建的角色,而不是新的 vtkActor
.
我们已经编写了一个程序,如图所示:program_image。我们在对象上添加了球体以获取有关该地点的信息。现在的问题是,虽然我们可以毫无问题地放置它们,但我们无法移除它们。我们想删除它们。我们尝试了很多方法,例如 vtkObjectBase.Delete()
等。None 有效。为它们添加了这个功能:
def cagir(*vecto):
global oldvecto,distance,etiket
#print('cagir geldi')
source = vtk.vtkSphereSource()
source.SetCenter(vecto[0][i][0],vecto[0][i][1],vecto[0][i][2])
source.SetRadius(0.01)
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(source.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
self.ren.AddActor(actor)
etiket.append(i)
self.renWin.Render()
重点是将它们从地图上移除(我不懂行话),尤其是在视觉上。谢谢。
编辑1:
关于我在 def cagir()
函数上方添加此函数的建议,缩进相同,
def dene(*vecto):
#print("dene e girildi")
actor = vtk.vtkActor()
self.ren.RemoveActor(actor)
self.renWin.Render()
我得到了这些,
2021-10-04 14:50:05.754 (5750.642s) [ ]vtkWin32OpenGLRenderWin:217 ERR| vtkWin32OpenGLRenderWindow (00000216F5B1C430): wglMakeCurrent failed in MakeCurrent(), error: The requested resource is in use.
2021-10-04 14:50:05.767 (5750.655s) [ ]vtkOpenGLVertexBufferOb:280 ERR| vtkOpenGLVertexBufferObjectGroup (00000216FF4586E0): Error setting 'normalMC' in shader VAO.
2021-10-04 14:50:05.767 (5750.655s) [ ]vtkOpenGLVertexArrayObj:296 ERR| vtkOpenGLVertexArrayObject (00000216FF3C6C40): attempt to add attribute when not ready for attribute vertexMC
我是 VTK 的初学者,所以如果我犯了一些有趣的错误,我很抱歉。但是很长一段时间,我都在为这段代码苦苦挣扎。
编辑2:
def dene(*vecto):
source = vtk.vtkSphereSource()
self.ren.RemoveActor(actor)
self.renWin.Render()
mapper = vtk.vtkPolyDataMapper()
actor.SetMapper(mapper)
mapper.SetInputConnection(source.GetOutputPort())
def cagir(*vecto):
global oldvecto, distance, etiket,actor
# print('cagir geldi')
source = vtk.vtkSphereSource()
source.SetCenter(vecto[0][i][0], vecto[0][i][1], vecto[0][i][2])
source.SetRadius(0.01)
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(source.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
self.ren.AddActor(actor)
etiket.append(i)
self.renWin.Render()
仍然有类似的错误,当我使用 dene()
虽然我们把这些小球体放在上面的所有对象都消失了,但球体仍然留在它们的位置:image2。关于 cagir()
函数,你能为我写出 dene()
函数吗?谢谢。
已编辑
您应该将其从 mapper Renderer
renderer.RemoveActor(actor)
编辑2
你应该保留一个引用/变量指向你想要删除的演员。在我的代码中,actor
指的是在您的 cagir()
方法中创建的角色,而不是新的 vtkActor
.