Your Legal Resource

Making Pov-ray Grass

Grass generator (POV-Ray)

Description

The MakeGrass macro (mgrass.zip) generates a square patch of grass of a given size and density. Each blade is independently created with its own length and curvature. The patches can then be assembled into a prairie.

The patch mesh can be saved as an include file for later use.

L'usine Gaz-on (the Grass Factory) is a Java application inspired by MakeGrass, that exports mesh2 files and is able to cover height fields adaptively.

Download

makegrass.zip (0.01 Mb)

---------------------------------------------------------------------------------

Usage example

Idea

Make a 3D rendering of a panoramic scene with some 3D vector objects added (e.g., a building, a tower, etc). We use GRASS here to get all data into a unique coordinate system (esp. for the 3D vector objects which are usually not geocoded).

What's needed

You need a (detailed) elevation model (DEM), a color orthophoto to drape over, and geocoded 3D vector data, perhaps originating from CAD software.

Procedure

Preparation:

  • Create GRASS location if you don't have it already, for example in UTM projection (use Location wizard)
  • Import the elevation model (DEM, usually in GeoTIFF format, import with (use r.in.gdal)
  • Import the orthophoto (comes typically in separated R/G/B channels within one GeoTIFF file, import with (use r.in.gdal)
  • Combine the usually separated R/G/B channels into one single colorized orthophoto composite (r.composite). Do not forget to set the current region to one of the channels first using g.region.
  • Import the 3D vector data (typically in DXF format and typically not geocoded but in xyz-coordinates, use v.in.dxf)
  • Geocode the 3D vector data (using v.transform). A 4 points transform will be sufficient which rescales the x, y, and z coordinates from the CAD geometric space to the geographic space.

Test visualization within GRASS:

Make a test visualization with nviz): nviz elevation=my_dem color=my_ortho_rgb vector=my_building3d

Export into POV-Ray formats: If that's ok, then start to export the prepared geodata for POV-Ray:

Export elevation model with r.out.pov: r.out.pov map=my_dem tga=my_dem.tga

Export R/G/B orthophoto composite with r.out.pov: r.out.png in=my_ortho_rgb out=my_ortho_rgb.png

Export 3D vector objects with v.out.pov: v.out.pov input=my_building3d output=my_building3d.pov objmod="pigment { color red 0 green 1 blue 0 }"

Rendering with POV-ray:

Create POV-Ray rendering script (see here for examples), see above for script to easily calculate rough camera and sun position coordinates.

Render it, for example (1100x900 PNG file) with: povray +Ipovscript.pov +Opovview.png +D +P +W1100 +H900 +A0.5

Image of Making Pov-ray Grass