Abstract
Method and system for efficiently controlling animated smoke which utilizes a sequence of target smoke states to generate a smoke simulation in which the smoke is driven towards each of these targets in turn, while exhibiting naturallooking interesting smokelike behavior. This control is made possible by two new terms added to standard flow equations: (i) a driving force term that causes the fluid to carry the smoke towards a particular target, and (ii) a smoke gathering term that prevents the smoke from diffusing too much. These terms are explicitly defined by the instantaneous state of the system at each simulation time step. Thus, no expensive optimization is required, allowing complex smoke animations to be generated with very little additional cost compared to ordinary flow simulations. The invention is also applicable to animation of other fluid flow phenomena.
Claims

A computerimplemented method for performing computer graphic simulation of an incompressible fluid in motion, the method comprising:
providing input data to a simulator module, the input data including a scalar field that defines a physical property of the fluid or of matter suspended therein and a sequence of target scalar fields that define a desired temporal evolution of the scalar field;
simulating, in the simulator module, fluid motion by calculating a velocity vector u of the fluid at a plurality of points in the simulated fluid, at a plurality of time intervals, wherein said calculation is performed by solving an equation:
where:u_{t}=−u·∇u−∇p+f*+F
p=hydrostatic pressure,
f*=combination of forces acting on the fluid;
F=a computed driving force that is defined by a predetermined function having closedform terms based on an instantaneous state of the simulation at each simulation time step and that propels the fluid in such a manner that the resulting flow carries the scalar field towards the next target scalar field in said sequence thus avoiding any need for nonlinear optimization;
u_{t}=is the vector of time derivatives of the velocity field u;
using said velocity values at each time interval to advect the scalar field;
sending the scalar field to a renderer module for producing a sequence of animation frames; and
storing the sequence of animation frames for subsequent display.

The method according to claim 1, wherein the driving force F is a function F(ρ, ρ*) where:
ρ=is a current scalar field, and
ρ*=is the next target scalar field in said sequence.

The method according to claim 2, wherein the driving force F(ρ, ρ*) satisfies the equation:
F(ρ,ρ*)=ρ~∇ρ~*ρ~*
where:
ρ=is a current scalar field,
ρ*=is the next target scalar field in said sequence,
{tilde over (ρ)}=a blurred version of the scalar field.
 The method according to claim 2, including inputting n (n>1) scalar fields ρ^{1}, . . . , ρ^{n }and n corresponding target scalar fields ρ*^{,1}, . . . , ρ*^{,n}, the driving force F being the sum of the n driving forces F(ρ^{i}, ρ*^{,i}) and there being n advection equations for the scalar fields.

The method according to claim 1, wherein using said velocity values at each time interval to advect the scalar field includes applying a gathering term G(ρ, ρ*) that satisfies the equation:
ρ_{t}=−u·∇ρ+v_{g}G(ρ, ρ*)
where:ρ=is the scalar field,
ρ_{t}=is the time derivative of the scalar field, and
v_{g}=a parameter that determines the rate at which ρ is gathered towards ρ*;
where G(ρ, ρ*) is a term that relates to gathering of matter suspended in the fluid, such that ρ defines a density of said matter.  The method according to claim 5, including inputting n (n>1) scalar fields ρ^{1}, . . . , ρ^{n }and n corresponding target scalar fields ρ*^{,1}, . . . , ρ*^{,n}, the driving force F being the sum of the n driving forces F(ρ^{i}, ρ*^{,i}) given by: ρ_{t}^{i}=−u·∇ρ^{i}+v_{g}G(p^{1},p^{2})where G(ρ, ρ*) is a term that relates to gathering of matter suspended in the fluid, such that ρ^{i }defines a density of said matter.
 The method according to claim 1, wherein the simulation is performed in two dimensions.
 The method according to claim 1, wherein the simulation is performed in three dimensions.

The method according to claim 1, wherein the input data comprises one or more of the following:
(1) the definition of a grid, wherein said velocity is to be calculated at each cell of said grid and at each of said time intervals;
(2) the length of said time interval;
(3) the viscosity of the fluid; and
(4) the velocity values at the boundaries of said grid.
 The method according to claim 1, wherein the scalar field is representative of temperature.
 The method according to claim 1, wherein said scalar field is representative of density of matter suspended in the fluid.
 The method according to claim 1, wherein said scalar field is representative of texture.
 The method according to claim 1, wherein said scalar field is representative of smoke particles suspended in a fluid.
 An animation sequence generated using the method according to claim 13, depicting smoke starting from one shape and evolving into entirely different shapes.
 An animation sequence generated using the method according to claim 13, depicting smoke forming a desired shape.
 An animation sequence generated using the method according to claim 13, depicting smoke following an animated character/shape.
 An animation sequence generated using the method according to claim 13, depicting several smoke fields controlled separately, but evolving in the same fluid, so that they affect each other.
 The method according to claim 1, wherein the combination of forces f* includes at least one in the group of: a viscous force, a buoyancy force and a gravity force of the fluid.

A system for performing computer graphic simulation of an incompressible fluid in motion, the system comprising:
a simulator module having an input for receiving data that includes a scalar field that defines a physical property of the fluid or of matter suspended therein and a sequence of target scalar fields that define a desired temporal evolution of the scalar field;
said simulator module being adapted to calculate a velocity vector u of the fluid at a plurality of points in the simulated fluid, at a plurality of time intervals, wherein said calculation is performed by solving an equation:
where:u_{t}=−u·∇u−∇p+f*+F
p=hydrostatic pressure,
f*=combination of forces acting on the fluid;
F=a computed driving force that is defined by a predetermined function having closedform terms based on an instantaneous state of the simulation at each simulation time step and that propels the fluid in such a manner that the resulting flow carries the scalar field towards the next target scalar field in said sequence thus avoiding any need for nonlinear optimization,
u_{t}=is the vector of time derivatives of the velocity field u;
an advection unit coupled to the computing unit for and being responsive to said velocity values at each time interval to advect the scalar field;
a renderer module coupled to the advection unit and being responsive to the scalar field for producing a sequence of animation frames; and
a storage unit coupled to the renderer module for storing the sequence of animation frames for subsequent display.
 The system according to claim 19, further including a display unit coupled to the storage unit for displaying the sequence of animation frames.

The system according to claim 19, wherein the driving force F is a function F(ρ, ρ*) where:
ρ=is the current scalar field, and
ρ*=is the next target scalar field in said sequence.

The system according to claim 21, wherein the driving force F(ρ, ρ*) satisfies the equation:
F(ρ,ρ*)=ρ~∇ρ~*ρ~*
where:
ρ=is the current scalar field,
ρ*=is the next target scalar field in said sequence,
{tilde over (ρ)}=a blurred version of the scalar field.

A program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform method steps for performing computer graphic simulation of an incompressible fluid in motion, the method comprising:
providing to a simulator module input data that includes a scalar field that defines a physical property of the fluid or of matter suspended therein and a sequence of target scalar fields that define a desired temporal evolution of the scalar field;
simulating fluid motion by calculating a velocity vector u of the fluid at a plurality of points in the simulated fluid, at a plurality of time intervals, wherein said calculation is performed by solving an equation:
where:u_{t}=−u·∇u−∇p+f*+F
p=hydrostatic pressure,
f*=combination of forces acting on the fluid;
F=a computed driving force that is defined by a predetermined function having closedform terms based on an instantaneous state of the simulation at each simulation time step and that propels the fluid in such a manner that the resulting flow carries the scalar field towards the next target scalar field in said sequence thus avoiding any need for nonlinear optimization;
u_{t}=is the vector of time derivatives of the velocity field u;
using said velocity values at each time interval to advect the scalar field;
sending the scalar field to a renderer module for producing a sequence of animation frames; and;
storing the sequence of animation frames for subsequent display.

A computer storage medium having computer readable program code embodied therein for performing computer graphic simulation of an incompressible fluid in motion, the computer readable program code comprising:
computer readable program code for causing the computer to provide input data to a simulator module, the input data including a scalar field that defines a physical property of the fluid or of matter suspended therein and a sequence of target scalar fields that define a desired temporal evolution of the scalar field;
computer readable program code for causing the computer to simulate fluid motion by calculating a velocity vector u of the fluid at a plurality of points in the simulated fluid, at a plurality of time intervals, wherein said calculation is performed by solving an equation:
where:where: u_{t}=−u·∇u−∇p+f*+F
p=hydrostatic pressure,
f*=combination of forces acting on the fluid;
F=a computed driving force that is defined by a predetermined function having closedform terms based on an instantaneous state of the simulation at each simulation time step and that propels the fluid in such a manner that the resulting flow carries the scalar field towards the next target scalar field in said sequence thus avoiding any need for nonlinear optimization;
u_{t}=is the vector of time derivatives of the velocity field u;
computer readable program code for causing the computer to use said velocity values at each time interval to advect the scalar field;
computer readable program code for causing the computer to render the scalar field so as to produce a sequence of animation frames; and
computer readable program code for causing the computer to store the sequence of animation frames for subsequent display.

The method according to claim 1, wherein the velocity vector u is calculated by solving an equation:
u_{t}=−u·∇u−∇p+f*+v_{f}F(ρ, ρ*)−v_{d}u
where:−v_{d}u is a momentum attenuation term.

The system according to claim 19, wherein the simulator module is adapted to calculate the velocity vector u by solving an equation:
u_{t}=−u·∇u−∇p+f*+v_{f}F(ρ, ρ*)−v_{d}u
where:−v_{d }is a momentum attenuation term.
Owners (US)
Applicants

Yissum Res Dev Co
Explore more patents:
Inventors

Lischinski Daniel
Explore more patents:

Fattal Raanan
Explore more patents:
CPC Classifications

G06T13/60
Explore more patents:

G06T2210/24
Explore more patents:
IPC Classifications
Document Preview
 Publication: Jan 20, 2009

Application:
May 13, 2005
US 12822705 A

Priority:
May 13, 2005
US 12822705 A

Priority:
May 14, 2004
US 57161904 P