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