WxNviz GSoC 2008

From GRASS-Wiki
Jump to: navigation, search

See wxNviz page.

Accepted Google Summer of Code 2008 project, see also related GSoC 2010 and GSoC 2011 page.

Weekly Reports

  1. 2008-06-06
  2. 2008-06-13
  3. 2008-06-20
  4. 2008-06-27
  5. 2008-07-04
  6. 2008-07-11
  7. 2008-07-18
  8. 2008-07-25
  9. 2008-08-01
  10. 2008-08-08
  11. 2008-08-15

Final report

OGSF Library

Changes in OGSF library, diff before and after indentation relevant diffs:

Nviz command-line module

The nviz_cmd module currently supports:

  • Surfaces, attributes:
    • topography - raster map or constant values used as elevation (z values) for the current surface.
    • color - raster map or constant color to drape over the current surface.
    • mask - raster map that controls the areas displayed from the current surface.
    • transparency - raster map or constant value that controls the transparency of the current surface. The default is completely opaque.
    • shininess - raster map or constant value that controls the shininess (reflectivity) of the current surface.
    • emission - raster map or constant value that controls the light emitted from the current surface.
  • For each loaded surface draw style:
    • mode - coarse,fine,both
    • style - wire,surface
    • shading - flat,gouraud
    • coarse and fine resolution
    • wire color
  • 2D/3D vector line features:
    • line width, color
    • mode - flat,surface (only for 2D)
    • height (constant or above surface)
  • 2D/3D vector point features:
    • marker size, width, color
    • marker - x,sphere,diamond,cube,box,gyro,aster,histogram
  • Volume
    • mode - isosurface,slice (currently only isosurface mode implemented)
    • shading - flat,gouraud
    • position, resolution
  • Volume isosurface mode, attributes:
    • level - reference isosurface level (height in map units).
    • color - raster map or constant color to drape over the current volume.
    • mask - raster map that controls the areas displayed from the current volume.
    • transparency - raster map or constant value that controls the transparency of the current volume. The default is completely opaque.
    • shininess - raster map or constant value that controls the shininess (reflectivity) of the current volume.
    • emission - raster map or constant value that controls the light emitted from the current volume.
  • Settings
    • background color
  • View parameters
    • position, height, perspective, twist, zexag
  • Output options
    • filename, image size (width, height) and format (ppm, tif)

wxGUI Nviz extension

Roadmap / Progress

Done

  • Initial cleaning underlying GRASS OpenGL gsurf OGSF Library
    • Doxygenization, code documentation
    • Eliminate fprintf(), changed to G_*_message(), G_warning(), G_fatal_error(), and G_debug()

wxGUI Nviz extension

  • Integration with Layer Manager, (un)loading data when map layer is (un)/checked
  • Integration with Map Display, auto-rendering functional
  • View settings (position, height, perspective, twist, z-exag), perspective can be changed by mouse wheel
  • Surface settings (attributes, draw mode)
  • Vector 2D/3D points and lines (including boundaries, areas, faces, volumes)
  • Saving layer properties in workspace file

What should work:

  • Start GRASS with NC dataset
  • Add raster map "elevation" and vector map "roadsmajor"
  • Start Nviz from Map display toolbar
  • Change view, surface attributes, draw mode (try also auto-rendering)
  • Enable/disable data layer from Layer Manager

In progress

  • Update OGSF Library documentation
  • Experimental prototype of CLI version of NVIZ (just very simple functionality)
http://trac.osgeo.org/grass/browser/grass/trunk/visualization/nviz2/cmd
  • Design experimental nvizlib used by CLI and wxPython NVIZ prototype
http://trac.osgeo.org/grass/browser/grass/trunk/lib/nviz
  • Experimental prototype of NVIZ toolbox for wxGUI (based on NVIZ CLI functionality)
http://trac.osgeo.org/grass/browser/grass/trunk/gui/wxpython/nviz
http://trac.osgeo.org/grass/browser/grass/trunk/gui/wxpython/gui_modules/nviz.py

wxGUI Nviz extension

  • Support for volumes

Nviz CLI

  • To be updated (based on wxGUI Nviz functionality)