Texturing and Modeling
A Procedural ApproachBy
- David Ebert, Purdue University, West Lafayette, Indiana, U.S.A.
- F. Kenton Musgrave, Pandromeda, Inc., Waterford, VA, U.S.A.
- Darwyn Peachey, Pixar Animation Studios, Emeryville, CA, U.S.A.
- Ken Perlin, New York University, New York City, NY, U.S.A.
- Steve Worley
The third edition of this classic tutorial and reference on procedural texturing and modeling is thoroughly updated to meet the needs of today's 3D graphics professionals and students. New for this edition are chapters devoted to real-time issues, cellular texturing, geometric instancing, hardware acceleration, futuristic environments, and virtual universes. In addition, the familiar authoritative chapters on which readers have come to rely contain all-new material covering L-systems, particle systems, scene graphs, spot geometry, bump mapping, cloud modeling, and noise improvements. There are many new spectacular color images to enjoy, especially in this edition's full-color format.As in the previous editions, the authors, who are the creators of the methods they discuss, provide extensive, practical explanations of widely accepted techniques as well as insights into designing new ones. New to the third edition are chapters by two well-known contributors: Bill Mark of NVIDIA and John Hart of the University of Illinois at Urbana-Champaign on state-of-the-art topics not covered in former editions.An accompanying Web site (www.texturingandmodeling.com) contains all of the book's sample code in C code segments (all updated to the ANSI C Standard) or in RenderMan shading language, plus files of many magnificent full-color illustrations.No other book on the market contains the breadth of theoretical and practical information necessary for applying procedural methods. More than ever, Texturing & Modeling remains the chosen resource for professionals and advanced students in computer graphics and animation.
Professional game and game engine developers; real-time graphics and simulation developers; creators of movie special effects; computer graphics, geometric modeling, CAGD, animation, and visualization programmers and researchers pertaining to all applications of practical, artistic, entertainment, medical, military, manufacturing etc. products.
Hardbound, 712 pages
Published: December 2002
Imprint: Morgan Kaufmann
"This book has always been my favorite computer graphics book...The authors are the key inventors of the technology and some of the most creative individuals I know."?From the foreword by Pat Hanrahan, Canon USA Professor, Stanford University "This new edition updates the definitive book on the subject with 50% more material. Video game developers will be particularly interested in the demenstrations of procedural texturing and modeling on real-time hardware..."?Steve Anderson, CTO, Electronic Arts, Los Angeles "Texturing and Modeling, Third Edition has kept up with the latest technology and provides insight and instruction on how to best use it. I would recommend it to anyone as an introduction to procedural techniquest or as a comprehensive reference."?Doug Roble, Creative Director of Software, Digital Domain
- Foreword PrefaceIntroductionProcedural Techniques and Computer Graphics What Is a Procedural Technique? The Power of Procedural Techniques Procedural Techniques and Advanced Geometric Modeling Aim of This Book Organization Building Procedural Introduction Texture Procedural Texture Procedural versus Nonprocedural Implicit and Explicit Procedures Advantages of Procedural Texture Disadvantages of Procedural Texture The RenderMan Shading Language What If You Don't Use RenderMan? Procedural Pattern Generation Shading Models Pattern Generation Texture Spaces Layering and Composition Steps, Clamps, and Conditionals Periodic Functions Splines and Mappings Example: Brick Texture Bump-Mapped Brick Example: Procedural Star Texture Spectral Synthesis What Now? Aliasing and How to Prevent It Signal Processing Methods of Antialiasing Procedural Textures Determining the Sampling Rate Clamping Analytic Prefiltering Better Filters Integrals and Summed-Area Tables Example: Antialiased Brick Texture Alternative Antialiasing Methods Making Noises Lattice Noises Value Noise Gradient Noise Value-Gradient Noise Lattice Convolution Noise Sparse Convolution Noise Explicit Noise Algorithms Fourier Spectral Synthesis Generating Irregular Patterns Spectral Synthesis Perturbed Regular Patterns Perturbed Image Textures Random Placement Patterns Conclusion Real-Time Programmable Shading William R. MarkIntroduction What Makes Real-Time Shading Different? Why Use a High-Level Programming Language? What You Need to Learn Elsewhere Real-Time Graphics Hardware Object Space Shading versus Screen Space Shading Parallelism Hardware Data Types Resource Limits Memory Bandwidth and Performance Tuning Simple Examples Vertex and Fragment Code in the Stanford Shading System Two Versions of the Heidrich/Banks Anisotropic Shader Surface and Light Shaders The Interface between Shaders and Applications More Examples Volume-Rendering Shader Noise-Based Procedural Flame Strategies for Developing Shaders Future GPU Hardware and Programmable Languages Literature Review Acknowledgments Cellular TexturingThe New Bases Implementation Strategy Dicing Space Neighbor Testing The Subtle Population Table Extensions and Alternatives Sample CodeAdvanced AntialiasingIndex Aliasing An Example: Antialiasing Planetary Rings Spot Geometry Sampling and Bumping Optimization and Verification Emergency AlternativesPractical Methods For Texture DesignIntroduction Toolbox Functions The Art of Noise Color Mappings Bump-Mapping Methods The User Interface Parameter Ranges Color Table Equalization Exploring the Parameter Domain Previews Efficiency Tricks, Perversions, and Other Fun Texture Abuses Volume Rendering with Surface Textures Odd Texture Ideas 2D Mapping Methods Where We're GoingProcedural Modeling Of GasesIntroduction Previous Approaches to Modeling Gases The Rendering System Volume-Rendering Algorithm Illumination of Gaseous Phenomena Volumetric Shadowing Alternative Rendering and Modeling Approaches for Gases A Procedural Framework: Solid Spaces Development of Solid Spaces Description of Solid Spaces Mathematical Description of Solid Spaces Geometry of the Gases My Noise and Turbulence Functions Basic Gas Shaping ConclusionAnimating Solid SpacesAnimation Paths Animating Solid Textures Marble Forming Marble Moving Animating Solid Textured Transparency Animation of Gaseous Volumes Helical Path Effects Three-Dimensional Tables Accessing the Table Entries Functional Flow Field Tables Functional Flow Field Functions Combinations of Functions Animating Hypertextures Volumetric Marble Formation Particle Systems: Another Procedural Animation Technique ConclusionVolumetric Cloud Modeling With Implicit FunctionsCloud Basics Surface-Based Cloud Modeling Approaches Volumetric Cloud Models A Volumetric Cloud Modeling System Volumetric Cloud Rendering Cumulus Cloud Models Cirrus and Stratus Clouds Cloud Creatures User Specification and Control Animating Volumetric Procedural Clouds Procedural Animation Implicit Primitive Animation Interactivity and Clouds Simple Interactive Cloud Models Rendering Clouds in Commercial Packages ConclusionIssues And Strategies For Hardware Acceleration of Procedural TechniquesIntroduction General Issues Common Acceleration Techniques Example Accelerated/Real-Time Procedural Textures and Models Noise and Turbulence Marble Smoke and Fog Real-Time Clouds and Procedural Detail ConclusionProcedural Synthesis Of GeometryJohn C. HartThe L-System Paradigms of Governing the Synthesis of Procedural Geometry Data Amplification Lazy Evaluation The Scene Graph Procedural Geometric Instancing Parameter Passing Accessing World Coordinates Other Functions Comparison with L-Systems Ordering Bounding Volumes Conclusion Procedural Geometric Modeling and the Web Future Work AcknowledgmentsNoise,Hypertexture,Antialiasing,And GestureIntroduction Shape, Solid Texture, and Hypertexture Two Basic Paradigms Bias, Gain, and So Forth Constructing the noise Function Computing Which Cubical "Cel" We're In Finding the Pseudorandom Wavelet at Each Vertex of the Cel Wavelet Coefficients To Quickly Index into G in a Nonbiased Way Evaluating the Wavelet Centered at [i, j, k] Recent Improvements to the noise Function Raymarching System Code: The Raymarcher Application Code: User-Defined Functions Interaction Levels of Editing: Changing Algorithms to Tweaking Knobs z-Slicing Some Simple Shapes to Play With Sphere Egg Examples of Hypertexture Explosions Life-Forms Space-Filling Fractals Woven Cloth Architexture The NYU Torch Smoke Time Dependency Smoke Rings Optimization Turbulence Antialiased Rendering of Procedural Textures Background The Basic Idea More Detailed Description The High-Contrast Filter Examples To Sum Up Surflets Introduction to Surflets Surflets as Wavelets Finding Visible Surfaces Selective Surface Refinement A Surflet Generator Constructing a Surflet Hierarchy Self-Shadowing with Penumbra Discussion Conclusion Flow Noise Rotating Gradients Pseudoadvection Results Procedural Shape Synthesis Textural Limb Animation Introduction to Textural Limb Motion Road Map Related Work Basic Notions Stochastic Control of Gesture The System Examples Texture for Facial Movement Background Related Work The Movement Model Movement Layering The Bottom-Level Movement Vocabulary Painting with Actions Using noise in Movement Same Action in Different Abstractions What Next? ConclusionReal-Time Procedural Solid TexturingJohn C. HartA Real-Time Procedural Solid Texturing Algorithm Creating an Atlas for Procedural Solid Texturing Avoiding Seam Artifacts Implementing Real-Time Texturing Procedures Applications AcknowledgmentsA Brief Introduction To FractalsWhat Is a Fractal? What Are Fractals Good For? Fractals and Proceduralism Procedural fBm Multifractal Functions Fractals and Ontogenetic Modeling ConclusionFractal Solid Textures: Some ExamplesClouds Puffy Clouds A Variety of fBm Distortion for Cirrus Clouds and Global Circulation The Coriolis Effect Fire Water Noise Ripples Wind-Blown Waters Earth Sedimentary Rock Strata Gaea: Building an Entire Planet Selene Random Coloring Methods Random fBm Coloring The GIT Texturing System An Impressionistic Image Processing Filter The "multicolor" Texture Planetary RingsProcedural Fractal TerrainsAdvantages of Point Evaluation The Height Field Homogeneous fBm Terrain Models Fractal Dimension Visual Effects of the Basis Function Heterogeneous Terrain Models Statistics by Altitude A Hybrid Multifractal Multiplicative Multifractal Terrains ConclusionQAEB Rendering For Procedural ModelsIntroduction QAEB Tracing Problem Statement Prior Art The QAEB Algorithm Error in the Algorithm Near and Far Clipping Planes Calculating the Intersection Point and Surface Normal Antialiasing A Speedup Scheme for Height Fields Shadows, Reflection, and Refraction Performance QAEB-Traced Hypertextures Clouds Billowing Clouds, Pyroclastic Flows, and Fireballs Fireballs Psychedelic Clouds ConclusionAtmospheric ModelsIntroduction Beer's Law and Homogeneous Fog Exponential Mist A Radially Symmetric Planetary Atmosphere A Minimal Rayleigh Scattering Approximation Trapezoidal Quadrature of = e-r GADD and RenderMan Implementation Numerical Quadrature with Bounded Error for General Radial GADDs ConclusionGenetic TexturesIntroduction: The Problem of Parameter Proliferation A Useful Model: Aesthetic n-Spaces Control versus Automaticity A Model from Biology: Genetics and Evolution The Analogy: Genetic Programming Implementation Interpretation of the Root Node The Library of Genetic Bases Other Examples of Genetic Programming and Genetic Art A Final Distinction: Genetic Programming versus Genetic Algorithms ConclusionMojoworld: Building Procedural Planets Introduction Fractals and Visual Complexity Building Mountains Building Planets Building a Virtual Universe What Is a Fractal? Self-Similarity Dilation Symmetry Random Fractals A Bit of History of Fractal Terrains The Mathematics Mathematical Imaging of Fractal Terrains The Computer Graphics Research Community The Literature The Software Disclaimers and Apologies The Present and Future Building Random Fractals The Basis Function Fractal Dimension: "Roughness" Octaves: Limits to Detail Lacunarity: The Gap between Successive Frequencies Advanced Topics Dimensions: Domain and Range Hyperspace The Basis Functions The Seed Tables Monofractals Multifractals Function Fractals Domain Distortion Distortion Fractal Functions Crossover Scales Driving Function Parameters with Functions Using Fractals Textures Terrains Displacement Maps Clouds Planets Nebulae The Expressive Vocabulary of Random Fractals Experiment! The Future On The Future: Engineering The Appearance Of CyberspaceIntroduction Claims The Fractal Geometry of Cyberspace Conclusion Appendix A C Code Implementing QAEB Tracing Appendix B C Code for Intersection and Surface Normal Bibliography Index About the Authors and Contributors