A Simple, Efficient Method for Realistic Animation of Clouds Yoshinori Dobashi* Kazufumi Kaneda** Hideo Yamashita** Tsuyoshi Okita* Tomoyuki Nishita*** *Hiroshima City University **Hiroshima University ***University of Tokyo Contents Introduction and Motivation Simulation Rendering Results Conclusion Introduction Problem Overview Realistic modeling and animation of (cumulus-type) clouds Two sub-problems: Simulation of cloud formation, extinction and advection by wind Rendering of the clouds, shadows and shafts of light Previous Work - Simulation Two categories of simulation methods: 1. Physical process of fluid dynamics Very accurate Computationally expensive 2. Heuristic approach (procedural modeling) Computationally inexpensive Easier to implement Parameters needed Previous Work - Rendering Accounting for multiple scattering of light Computationally expensive Using 3-D textures for volume density Does not handle atmospheric effects such as shafts of light Rendering shafts of light using ray-tracing or a similar method Computationally expensive Goals Simple and efficient simulation method Support of effects such as ... Cloud color by single scattering of light Shadows of clouds cast on the ground Shafts of light through clouds Hardware-accelerated rendering Visually convincing result Simulation – Basic Idea Cellular automaton with binary states Nagel‘s Method Water vapor turns to water to form clouds Use Nagel‘s method to simulate cloud formation: Divide 3-D space evenly into 3-D cells Assign boolean variables to each cell: cld indicates whether cell contain clouds hum indicates whether cell has enough water vapor to form clouds act indicates whether phase transition is ready to occur Nagel‘s Method (cont‘d) Cell properties in the current animation frame ti are used to compute the cell properties in the next frame ti+1: hum(x, y, z, ti+1) = hum(x, y, z, ti) act(x, y, z, ti) cld(x, y, z, ti+1) = cld(x, y, z, ti) act(x, y, z, ti) act(x, y, z, ti+1) = act(x, y, z, ti) hum(x, y, z, ti) act(x, y, z , ti) act is a boolean function and its value is calculated by the status of act in the surrounding cells. Cloud Extinction Extension to Nagel‘s method: cld(x, y, z, ti+1) = cld(x, y, z, ti) IS(rnd > pext(x, y, z, ti)) hum(x, y, z, ti+1) = hum(x, y, z, ti) IS(rnd < phum(x, y, z, ti)) act(x, y, z, ti+1) = act(x, y, z, ti) IS(rnd < pact(x, y, z, ti)) rnd : uniform random number pext : probability of cloud extinction phum : probability of vapor forming pact : probability of phase transition occurence Advection by Wind Clouds move, blown by winds Wind velocity is different depending on the height from the ground cld(x, y, z, ti+1) = cld(x – v(z), y, z, ti) hum(x, y, z, ti+1) = hum(x – v(z), y, z, ti) act(x, y, z, ti+1) = act(x – v(z), y, z, ti) v(z) : wind velocity, piecewise linear function Assumption: wind blows towards the direction of x-axis Controlling Cloud Motion Ellipsoids simulate air parcels Vapor and phase transition probability: higher at center / lower at edge Cloud extinction probability: Lower at center / higher at edge Ellipsoids move in direction of wind Different kinds of clouds by controlling ellipsoid parameters (sizes and position) Fast Simulation using Bitfields Each cell state (cld, act, hum) can be stored in a single bit Low memory requirements Fast computation of simulation process Problem: Random numbers Solution: Precalculated look-up tables Rendering – Basic Idea Smoothing and volume rendering Splatting method for clouds Spherical shells for shafts of light Continuous Density Distribution Calculation Simulation output is a binary distribution Continuous density distribution results from smoothing the binary distribution Cloud density of a cell is the weighted average of the surrounding cells Each cell contributes a density distribution over an effective radius (Metaballs) Cloud density of an arbitrary point is therefore a weighted sum of a simple basis function Metaball Billboards Generate 2-D texture of metaballs Rendering - Step 1 Set up parallel projection with sun at viewpoint and initialize framebuffer to 1.0 Place billboards at centers of metaballs with their normals toward the sun Starting with billboard closest to the sun, project and blend billboards to framebuffer Read back value at projected billboard center to get attenuation ratio between sun and metaball Rendering – Step 1 (cont‘d) After all metaballs have been projected, framebuffer contains shadow texture Rendering – Step 2 Render all world objects except clouds Place billboards at centers of metaballs with their normals toward the observer Project and blend billboards to framebuffer starting with those farthest from viewpoint Rendering – Step 2 (cont‘d) Shafts of Light Render using spherical shells (made of polygons) Modify Rendering – Step 2 to: Calculate colors of vertices of shell polygons (atmospheric conditions) Repeat for all shells (back-to-front): Render shell k with additive blending function and shadow texture mapping Render billboards between shell k-1 and shell k Shafts of Light (cont‘d) Results Results (cont‘d) Conclusion Advantages: Simulation requires little computation Memory requirements are small Rendering is fast by making use of graphics hardware Shadows of clouds and shafts of light can also be rendered Possible improvements: Effects of terrain under clouds Level of detail The End Questions?
Pages to are hidden for
"Clouds"Please download to view full document