Folie 1 - Welcome to stereoFX.org
Download
Report
Transcript Folie 1 - Welcome to stereoFX.org
NDVI-based Vegetation Rendering
Stefan Roettger, University of Erlangen
http://www.stereofx.org mailto:[email protected]
CGIM ‘07
NDVI-based Vegetation Rendering
Overview
- Recap of Terrain Rendering with C-LOD
- How to get vegetation information
- NDVI mapping
- Volumetric representation of vegetation
- Rendering with texture splatting and billboards
- Double-buffered tile set caching
- Results
NDVI-based Vegetation Rendering
Height Fields
A common representation of terrain is the so called height field, a
regular matrix which stores height values. By transforming the
elevation into grey-values the height field is given by a grey-scale
image (left). Color information is given by an ortho-image (right).
NDVI-based Vegetation Rendering
Rendering with Triangle Fans
- the height field is decomposed into a quad tree
- per quad tree node (dots) the decision to subdivide depends on
the screen space error of the actual triangulation
- each leave of the quad tree is rendered with a triangle fan (arrows)
- to get a conforming mesh some vertices are skipped (crosses)
NDVI-based Vegetation Rendering
C-LOD
- screen-space error depends on distance to the eye point and the
“surface roughness”
- user-definable upper bound on the screen-space error
continuously delimits the resolution of the triangulation
high
medium
low
NDVI-based Vegetation Rendering
Textured Terrain
- an orthographic projection of the terrain texture yields the
following visualization of the height field
- geo-morphing of the vertices is used to suppress the popping effect
NDVI-based Vegetation Rendering
Vegetation Information
Left: Landsat ortho-image (pseudo-color)
Middle: NDVI Index (automatic)
Right: Corine Landcover Classification (hand-processed)
NDVI-based Vegetation Rendering
NDVI Definition
- Landsat has channels 1-8 for visible and invisible wave lengths
- 1-3 = BGR, but not exactly, wave lengths are shifted towards blue
- 4 = NIR (Near Infra-Red)
Channels I1-3
NDVI-based Vegetation Rendering
NDVI Mapping
Vegetation height and type are assumed to correlate with the NDVI
via a monotone mapping:
For NDVI=0 no vegetation exists, above a specific threshold the
vegetation changes from grass to bushes or trees.
NDVI-based Vegetation Rendering
Volumetric Representation
We interprete the NDVI as a second height field that encodes HPlant
and compute the triangulation based on the weighted error of both
height fields. Then we take each base triangle of the mesh and
stack a prism onto it where the height corresponds to the mapped
NDVI. Now we can randomly place vegetation inside the prism.
NDVI-based Vegetation Rendering
Texture Splatting
If plant type is grass, e.g. the height is below a specific threshold,
but not zero, we use texture splatting to show ground detail. A stack
of grass textures is put into a 3D texture which is indexed by the
mapped prism height. Then the lookup is perturbed with Perlin
Noise, faded by distance and finally blended with the ortho-image.
For bushes and trees the following billboard textures are scaled to
fit the height of the prism:
NDVI-based Vegetation Rendering
Paging and Caching
The scene is divided into a regular tile set. All visible tiles are paged
in and out depending on the LOD of each tile to minimize the
[texture] memory footprint.
For each frame only a subset of all the tiles is triangulated and the
resulting part of the entire mesh is appended to a double-buffered
vertex cache. While the back buffer of the cache is updated from
frame to frame, the front buffer can be reused for a couple of
subsequently rendered frames.
Accordingly, for a single frame, only a subset of the plant geometry
is updated and stored in the cache which leads to a much reduced
CPU load since the vertex buffer can be redrawn with little
overhead.
NDVI-based Vegetation Rendering
Limiting Geometric Complexity
Geo-morphing of both the terrain and the prisms allows for smooth
transitions of the prisms and therefore the generated plant
distribution. Prisms that are far away fade out to zero height and
thus do not contain vegetation.
As a result, the appearance of distant details is determined only by
the ortho-image and plants are only generated in the vicinity of the
viewer.
This limits the overall number of geometric plant primitives to an
amount that is easily managable by today’s graphics hardware.
The total number of visible trees in a forest easily exceeds 50
million while the number of rendered trees in the vertex cache is
only between 300k and a few million for densely vegetated areas.
NDVI-based Vegetation Rendering
Results #1
We use green triangles as a simplified model for the plants in order
to show the match of the NDVI (left) with the displayed plants (right).
NDVI-based Vegetation Rendering
Results #2
The demo scene with and without vegetation rendering. Frame rate
is about 15-20 fps on a NVIDIA GeForce FX 5900.
Here comes a live demo…
NDVI-based Vegetation Rendering
CGIM ‘07
Thank you!