2017-01-11 4 views
0

У меня есть набор точек данных в трехмерном пространстве и хотелось бы установить ограничительную рамку. Я знаю, что vtkOBBTree :: ComputeOBB может сделать это для меня. Но я не могу понять, как визуализировать ориентированную ограничительную рамку.vtk ориентированная ограничивающая рамка в 3d-пространстве

Любая помощь приветствуется!

ответ

0

Для ограничивающей коробки вы можете использовать vtkOutlineFilter. Вам просто нужно установить как данные 3D-данные, которые вы хотите поместить. Затем вы создаете картографа и актера и добавляете его на сцену, как это было бы в типичном сценарии VTK. Вот рабочий пример, в Python:

from vtk import * 

quadric = vtkQuadric() 
quadric.SetCoefficients(.5, 1, .2, 0, .1, 0, 0, .2, 0, 0) 

sample = vtkSampleFunction() 
sample.SetSampleDimensions(50,50,50) 
sample.SetImplicitFunction(quadric) 

contour = vtkContourFilter() 
contour.SetInputConnection(sample.GetOutputPort()) 
contour.GenerateValues(5,0,1) 

contourMapper = vtkPolyDataMapper() 
contourMapper.SetInputConnection(contour.GetOutputPort()) 
contourMapper.SetScalarRange(0,1.2) 

contourActor = vtkActor() 
contourActor.SetMapper(contourMapper) 

outline = vtkOutlineFilter() 
outline.SetInputConnection(sample.GetOutputPort()) 

outlineMapper = vtkPolyDataMapper() 
outlineMapper.SetInputConnection(outline.GetOutputPort()) 

outlineActor = vtkActor() 
outlineActor.SetMapper(outlineMapper) 
outlineActor.GetProperty().SetColor(1,1,1) 

ren = vtkRenderer() 
ren.SetBackground(0.188,0.373,0.647) 
ren.AddActor(contourActor) 
ren.AddActor(outlineActor) 

renWin = vtkRenderWindow() 
renWin.AddRenderer(ren) 
renWin.SetWindowName("IsoSurface") 
renWin.SetSize(500,500) 

iren = vtkRenderWindowInteractor() 
iren.SetRenderWindow(renWin) 

renWin.Render() 
iren.Initialize() 
iren.Start() 
Смежные вопросы