1 / 47

A Heightfield on an Isometric Grid

A Heightfield on an Isometric Grid. A Heightfield on an Isometric Grid. Morgan McGuire and Peter Sibley Brown University. The Isometric Heightfield. 10% more accurate, subjectively smoother Practical for real applications GPU accelerated Drawback: requires resampling. Motivation.

Sophia
Download Presentation

A Heightfield on an Isometric Grid

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. A Heightfield on an Isometric Grid A Heightfield on an Isometric Grid Morgan McGuire and Peter Sibley Brown University

  2. The Isometric Heightfield • 10% more accurate, subjectively smoother • Practical for real applications • GPU accelerated • Drawback: requires resampling

  3. Motivation

  4. Traditional Ortho-Heightfield Grid 3D View y-displacement

  5. Heightfield Benefits • Represent scientific data at highest fidelity • Practical • Great for dynamic data • Storage efficient for high-frequency data • Simple!

  6. Worst Case Ortho Fit vs. Best

  7. Musgrave’s Heightfield • Shear axes to produce a parallelogram • Equilateral tessellation Grid Space World Space c x r z

  8. x z New Isometric Heightfield • New Mapping • Shift odd rows ½ edge length • Slide end vertices to make square tiles • Border padding for computing vertex normals • Drop-in replacement for ortho-heightfield Grid Space World Space r c

  9. Related Work • Musgrave 88 • Grid Tracing: Fast Ray Tracing for Height Fields • Duchaineau et al 97 • ROAMing terrain: real-time optimally adapting meshes • de Boer 00 • Fast Terrain Rendering Using Geometrical MipMapping • Shankel 02 • Fast Heightfield Normal Calculation • Middleton 01, 02 • Edge Detection in a Hexagonal-image Processing Framework • Markov Random Fields for Square Hexagonal Textures

  10. Analysis

  11. Signal Processing Analysis • Underlying “true” function h(x, z) • Heightfield approximation: • Low-pass filter and sample • y(x, z) at integer x, z • Barycentric interpolation for non-integer x, z • Reasons for poor fit: • Aliasing from inadequate sampling • Inappropriate reconstruction filter (i.e. triangles)

  12. Experiment • Approximate a 2D Sinusoid h(x, z) = sin(f[x cosq + z sinq ] +f) • Vary phase, angle, and frequency • Error Metrics • Elevation • Shading • Normal deflection • Curvature • Any function is a weighted sum of sinusoids • Draw generalizations about arbitrary functions

  13. Cleaner High Freq. Iso Ortho

  14. Smoother Low Freq. Iso Ortho Shaded

  15. Smoother Low Freq. Iso Ortho Shaded Curvature

  16. Shading Error (lower is better) Isometric: 25% more accurate shading.

  17. Algorithms

  18. Resampling • Existing ortho-grid sampled data • Reconstruct true continuous surface • Filter and downsample on hex pattern • Lossless if original was correctly sampled • Artist created data • Iso-heightfield as modeling primitive

  19. Moving on the Surface • We know elevation at vertices • We need elevation between vertices • Must exactly match rendered elevation! • 4 cases, easily derived from Barycentric interpolation H L=(1-b)H+bI J=(1-b)H + bG P=(1-g)J+gL I G

  20. D E P F I G H Fast Vertex Normals • Indices of neighbors: • Grid space edge vectors: • Vertex normal contains 6 cross-products:

  21. D E P F I G H Fast Vertex Normals • Algebra dramatically simplifies: • Operation count: 6 add, 1 mul • Cheaper than 1 cross-product!

  22. Normals in Vertex Shader • 6 texture lookups (NV50?) • Neighbor indices are the same for each tile • Precompute and store in tex coord stream const uniform mat4 K = vec3 A(tex2D(d), tex2D(h), tex2D(i)); vec3 B(tex2D(g), tex2D(e), tex2D(f)); vec4 C(A – B, 1); vec4 N = mul(K, C); Precomputed outside vertex shader Actual per-vertex work

  23. Fast Shadow Volumes

  24. Heightfield Tiles • Page from disk • Unit of LOD, texturing Wake Island from Battlefield 1942 courtesy of Digital Illusions CE

  25. Triangle Strips Start End

  26. Sub-sampled LOD • Geo-mipmapping would be ideal • Cannot afford to touch vertices on CPU • Use subsampling • Keep edges at maximum resolution • Carefully alpha-blend transitions

  27. LOD Movie

  28. Efficient Storage (NV20+) • Pack x, z in int16 vertex stream • Same for every tile • Pack y in int16 texture coordinate stream • Combine streams in vertex shader • Modify y on CPU, upload a relatively small vertex array • 2 bytes/vertex vs. 12 bytes/vertex

  29. Efficient Storage (NV40) • Put y in a texture • SM 3 allows texture lookup in vertex shader! • Modify y using render-to-texture • Navier-Stokes • Render deformations • Tire tracks & footprints • [insert your favorite GPU hack here]

  30. Applications

  31. Visualization

  32. Games

  33. Acknowledgements • Advisor John F. Hughes • Battlefield 1942 data courtesy of Digital Illusions CE • Mars data from Dr. James Head III, Brown University • Additional coding: • Hari Khalsa • Nick Musurca Hardware and data made available by:

  34. Elevation Error (lower is better) Isometric: Same quality with 10% fewer polygons.

  35. What about ROAM? • Irregular tessellation: • y(x, z) for a data-dependent set of samples • Barycentric interpolation between samples • Can produce a better fit • Less aliasing: put samples where needed • e.g. ROAM, Triangulated Irregular Networks • Heightfields are still preferred for many applications…

  36. Our Mapping (2) • Grid to world space: • Grid space to memory: • Row and column sizes: • Also tweak end-vertices on even rows • Drop-in replacement for orthogonal heightfield • Square tiles • Convenient texture & normal mapping

  37. H P I G Need Indices and Weights Indices: g = ?, h = ?, i = ? Weights: wG = ?, wH = ?, wI = ?

  38. H L=(1-b)H+bI J=(1-b)H + bG P=(1-g)J+gL I G Barycentric Interpolation • Simple equations exist for g, h, i, a, b • 4 triangle orientations: {even row, odd row} x {up, down} wG = b(1 – g) = b - a, wH = 1 -b, wI = bg = a

  39. Example • Given P = (c, r) • Let • Example: odd row, up triangle • 3 other cases g = p + C, h = p, i = g +1 b = v, a = u

  40. Self-Shadowing is Hard Problems: • Shadow maps are expensive for terrain • High fill rate • Shadow volumes expensive for terrain • High fill and vertex rate • Pre-computation, horizon map no good for dynamic data

  41. A Trick for Shadowing • Constrain the sun orbit the z-axis • i.e. moves strictly East-West • (x0, z0) only be shadowed by (x0 – k, z0) • Start at the sun end of the x-axis, iterate over vertices • Incrementally compute the max shadowed elevation • Works on ortho-heightfield too

  42. Fast Shadow Volumes • Terrain shadows other objects • Other objects do not shadow terrain (use projective shadows, shadow maps, volumes, etc. for that) • Iterates along rows, which are memory-aligned • Almost free • Compute shadowing inside the loop that uploads elevation to the graphics card

  43. Future Work • Compute true Geo-mipmapped LOD in hardware? • LOD w/ normal maps • Update shadow elevation in hardware? • Experiments with deformation and destruction

  44. Irregular Sampling Regular Irregular spacing captures shape better: Irregular

  45. General Ortho Problem

More Related