2017-01-11 4 views
0

3D 공간에서 데이터 포인트 집합을 가지며 바운딩 박스에 적합하고 싶습니다. 나는 vtkOBBTree :: ComputeOBB가 나를 위해 이것을 할 수 있다는 것을 안다. 그러나 나는 경계 된 경계 상자를 시각화하는 방법을 알아낼 수 없습니다.3d 공간에서 vtk 지향 바운딩 박스

도움을 주시면 감사하겠습니다.

답변

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