A seguir são descritos trechos de código referentes a algumas das funcionalidades implementadas no DEMVis. - Ler arquivo USGS DEM O leitor vtkDEMReader lê um arquivo USGS DEM e cria um vtkImageData que contém uma matriz de dados escalares que correspondem as elevações em metros. O espaçamento entre as amostras também é expresso em metros. demReader = vtk.vtkDEMReader() demReader.SetFileName(fileName) demReader.Update() O vtkBandedPolyDataContourFilter é um filtro que recebe como entrada um vtkPolyData e produz como saída contornos preenchidos. bandedPolyDataContour = vtk.vtkBandedPolyDataContourFilter() bandedPolyDataContour.SetInput(warpScalar.GetPolyDataOutput()) bandedPolyDataContour.GenerateValues( numberOfContours, demReader.GetOutput().GetScalarRange()) bandedPolyDataContour.SetScalarModeToIndex() bandedPolyDataContour.GenerateContourEdgesOn() A vtkPolyDataMapper é uma classe que mapeia dados poligonais em primitivas gráficas. É possível classificar intervalos de valores igualmente espaçados. polyDataMapper = vtk.vtkPolyDataMapper() polyDataMapper.SetInput(bandedPolyDataContourFilter.GetContourEdgesOutput()) polyDataMapper.SetResolveCoincidentTopologyToPolygonOffset() O vtkWarpScalar é um filtro que modifica as coordenadas de um conjunto de pontos, movendo-os no sentido da normal a uma distância calculada pela multiplicação do valor do escalar pelo fator de escala. warpScalar = vtk.vtkWarpScalar() warpScalar.SetInputConnection(imageDataGeometryFilter.GetOutputPort()) warpScalar.SetNormal(0, 0, 1) warpScalar.UseNormalOn() warpScalar.SetScaleFactor(scaleFactor) A classe vtkImageShrink3D permite reduzir o tamanho de uma matriz através de subamostragem dos dados contidos em uma grade uniforme. O fator de redução pode ser diferente em cada um dos eixos principais da grade uniforme. imageShrink3D = vtk.vtkImageShrink3D() imageShrink3D.SetShrinkFactors(shrinkFactor, shrinkFactor, 1) imageShrink3D.SetInputConnection(demReader.GetOutputPort()) imageShrink3D.AveragingOn() Um vtkLookupTable pode ser usado por objetos de mapeamento para mapear valores escalares em RGBA ou vice-versa. A tabela de cores pode ser criada por inserção direta de valores de cor ou pela especificação da variação de matiz, saturação e brilho. lookupTable = vtk.vtkLookupTable() lookupTable.SetNumberOfColors(numberOfColors) lookupTable.SetHueRange(hueRange[0], hueRange[1]) lookupTable.SetSaturationRange(saturationRange[0], saturationRange[1]) lookupTable.SetValueRange(valueRange[0], valueRange[1]) lookupTable.Build() O vtkTextureMapToPlane é um filtro que mapeaia as coordenadas de uma textura 2D em coordenadas espaciais. jpegReader = vtk.vtkJPEGReader() jpegReader.SetFileName(fileName) texture = vtk.vtkTexture() texture.SetInput(jpegReader.GetOutput()) textureMapToPlane = vtk.vtkTextureMapToPlane() textureMapToPlane.SetInput(polyDataNormals.GetOutput()) polyDataMapper = vtk.vtkPolyDataMapper() polyDataMapper.SetInputConnection(textureMapToPlane.GetOutputPort()) polyDataMapper.ScalarVisibilityOff() actor = vtkActor() actor.SetTexture(texture) actor.SetMapper(polyDataMapper) O vtkScalarBarActor cria uma barra de escalar com anotações textuais. Uma barra de escalar é uma legenda que indica a correspondência entre os valores de cor e os dados. O vtkScalarBarActor é uma subclasse de vtkActor2D, portanto é representada no plano de projeção das figuras geométricas 3D. Para usar um vtkScalarBarActor, basta associar um vtkScalarsToColors a ele. scalarBarActor = vtk.vtkScalarBarActor() scalarBarActor.SetLookupTable(lookupTable) scalarBarActor.SetTextPositionToPrecedeScalarBar() O vtkBandedPolyDataContourFilter também permite aplicar recorte em um intervalo de valores escalares, ou seja, eliminação de valores não contidos em um dado intervalo. bandedPolyDataContourFilter = vtk.vtkBandedPolyDataContourFilter() bandedPolyDataContourFilter.ClippingOn() bandedPolyDataContourFilter.GenerateValues(numContours, rangeStart, rangeEnd) O vtkRenderWindow é um objeto abstrato responsável pelo gerenciamento do comportamento da janela de renderização, que é uma interface através do qual os modelos geométricos processados são exibidos na tela. Este também permite a renderização estereoscópica por anaglifo. renderWindow = vtk.vtkRenderWindow() renderWindow.SetStereoTypeToAnaglyph() renderWindow.StereoRenderOn() renderWindow.StereoUpdate() renderWindow.Render() Com o vtkWindowToImageFilter é possível obter os dados de um vtkWindow para usá-los como entrada no fluxo de imageamento. Isto pode ser útil quando se deseja converter um vtkRenderWindow em um formato de imagem. windowToImageFilter = vtk.vtkWindowToImageFilter() windowToImageFilter.SetInput(renderWindow) windowToImageFilter.ReadFrontBufferOff() windowToImageFilter.Update() pngWriter = vtk.vtkPNGWriter() pngWriter.SetInput(windowToImageFilter.GetOutput()) pngWriter.SetFileName(fileName) pngWriter.Write() |