Difference between revisions of "GRASS and VTK"

From GRASS-Wiki
Jump to: navigation, search
(+Import of VTK into GRASS)
m
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
* See also the [[GRASS and Paraview]] wiki page
 +
 +
== Export for VTK ==
 +
 +
; Modules:
 +
 +
* {{Cmd|r.out.vtk}} - export raster data for VTK
 +
* {{Cmd|r3.out.vtk}} - export 3D raster (voxel) data for VTK
 +
* {{Cmd|v.out.vtk}} - export vector maps for VTK
 +
 +
* {{AddonCmd|r.colors.out_vtk}} addon script - export GRASS color rules for use with VTK
 +
 +
 +
== Workflows ==
 +
 +
# Load 3D model data into GRASS with {{Cmd|r3.in.ascii}}. (see [[Help with 3D]])
 +
# Split 3D raster map into individual layers, and stack them all into one map. (see the {{AddonCmd|r.stack}} addon module)
 +
# Run {{Cmd|r.colors}} with the '''-e''' equalize histogram flag to balance the colors nicely over the entire 3D dataset.
 +
# Export the new color rules with {{AddonCmd|r.colors.out_vtk}}.
 +
# Load in [[GRASS_and_Paraview|Paraview]] or similar, create a movie. ([http://stormy.msrc.sunysb.edu/diecast/DieCAST_GoM_yr43_July16-30.gif animated screenshot])
 +
 +
 +
== vtkGRASSBridge ==
 +
 
vtkGRASSBrige provides a VTK/C++ interface to most of the GRASS GIS raster and vector C library functions. Its using an intuitive class structure to hide the complexity of the GRASS libraries.
 
vtkGRASSBrige provides a VTK/C++ interface to most of the GRASS GIS raster and vector C library functions. Its using an intuitive class structure to hide the complexity of the GRASS libraries.
  
Line 5: Line 29:
 
Reader to convert GRASS datasets (raster, vector) into VTK datasets are provided for raster and vector data. All vtkImage- and vtkPolyDataAlgorithms can be used to process GRASS raster and vector data. vtkImages can be directly written as GRASS raster maps into a GRASS location.
 
Reader to convert GRASS datasets (raster, vector) into VTK datasets are provided for raster and vector data. All vtkImage- and vtkPolyDataAlgorithms can be used to process GRASS raster and vector data. vtkImages can be directly written as GRASS raster maps into a GRASS location.
  
This library can be used to build comprehensive 3d visualisation of GRASS GIS data with Java, Python and C++, as well as base for complex multithreaded image and vector filter to process GRASS GIS datasets i.e: as backend for WPS server.
+
This library can be used to build comprehensive 3D visualisation of GRASS GIS data with Java, Python and C++, as well as base for complex multithreaded image and vector filter to process GRASS GIS datasets i.e: as backend for WPS server.
  
 
=== Using vtkGRASSBridge in Python ===
 
=== Using vtkGRASSBridge in Python ===
Line 22: Line 46:
 
# Now build the pipeline
 
# Now build the pipeline
 
# read the vector map without creating topology
 
# read the vector map without creating topology
reader = vtkGRASSVectorPolyDataReader() # The reader does not need
+
reader = vtkGRASSVectorPolyDataReader() # The reader does not need topology information
topology information
 
 
reader.SetVectorName("elev_lid792_randpts")
 
reader.SetVectorName("elev_lid792_randpts")
  
Line 53: Line 76:
 
[[Category:Linking to other languages]]
 
[[Category:Linking to other languages]]
 
[[Category:VTK]]
 
[[Category:VTK]]
 +
[[Category:3D]]
 +
[[Category:Python]]

Latest revision as of 16:37, 18 June 2013

Export for VTK

Modules


Workflows

  1. Load 3D model data into GRASS with r3.in.ascii. (see Help with 3D)
  2. Split 3D raster map into individual layers, and stack them all into one map. (see the r.stack addon module)
  3. Run r.colors with the -e equalize histogram flag to balance the colors nicely over the entire 3D dataset.
  4. Export the new color rules with r.colors.out_vtk.
  5. Load in Paraview or similar, create a movie. (animated screenshot)


vtkGRASSBridge

vtkGRASSBrige provides a VTK/C++ interface to most of the GRASS GIS raster and vector C library functions. Its using an intuitive class structure to hide the complexity of the GRASS libraries.

Additionally, the vtkGRASSBridge provides access to GRASS C library functions for Python and Java, using the VTK wrapper.

Reader to convert GRASS datasets (raster, vector) into VTK datasets are provided for raster and vector data. All vtkImage- and vtkPolyDataAlgorithms can be used to process GRASS raster and vector data. vtkImages can be directly written as GRASS raster maps into a GRASS location.

This library can be used to build comprehensive 3D visualisation of GRASS GIS data with Java, Python and C++, as well as base for complex multithreaded image and vector filter to process GRASS GIS datasets i.e: as backend for WPS server.

Using vtkGRASSBridge in Python

Here a small Python example to triangulate vector points from the North Carolina demo data set with the VTK delaunay filter class:

# The purpose of this example is
# to read a grass vector map without topology information
# into the VTK poly data format and processing that map with vtkDelaunay2D.
# The processed data is written as VTK XML file to the file system

# Init grass variables
init = vtkGRASSInit()

# Now build the pipeline
# read the vector map without creating topology
reader = vtkGRASSVectorPolyDataReader() # The reader does not need topology information
reader.SetVectorName("elev_lid792_randpts")

# Setup the delaunay triangulation
delaunay = vtkDelaunay2D()
delaunay.SetInputConnection(reader.GetOutputPort())

# write the data as XML with base64 encoding
writer = vtkXMLPolyDataWriter()
writer.SetFileName("/tmp/test.vtk")
writer.SetInputConnection(delaunay.GetOutputPort())
writer.Write()

Import of VTK data into GRASS

Implemented in the VTK-GRASS-Bridge:

Links