|
|
Computer graphics (CG) plays an important role in video works and games. In recent years, due to the development of algorithms and hardwares, fluid simulation has become approachable and been extensively used in various situations such as movies and video works. We assume that it is possible to publicize overlooked products by inserting hidden messages in these scenes. An example of such products is beloved Kimwipes®. It has great functionality, high availability and lovely case box and name. Also, a sport using Kimwipes was proposed recently. However, in spite of these advantages, not many people know about these wipers. If we can show hidden messages of Kimwipes in fluid simulation scenes, the product publicity is expected to increase efficiently. The main challenge is that the messages should be inserted by stealth - not only the messages shouldn't stand out but also must be independent of the particular scene. In this paper, we propose a method to express objects casually (or by stealth) in fluid scenes.
Stam (1999) and Fedkiw et al (2001) introduced efficient and stable methods for performing fluid simulations to the computer graphics community. The book by Bridson (2015) gives an overview of solvers. However, the interaction between users and solvers is provided only via external force term in simulation, thus control of fluid behaviour had been a hard problem initially (Imagine the situation where you have to put suspended dust into a dustbox but only allowed to fan with your hands).
Key-frame approach (Treuille, 2003) and Target-driven approach (Fattal, 2004) efficiently calculate force field for creating smoke that closely resembles the target shape. Sato et al (2015) uses stream functions for deforming smoke flows so that fluid is kept incompressible. However, these methods solely aim to approximate the smoke shape to the target one, and have different meanings from our method, which implies objects in fluid scenes. In this context, fluid control can be regarded as a special effect for direct advertising. And these methods have drawbacks that solvers may need to recalculate forces from current density of smoke every time step and the results are inapplicable in other scenes.
A texture-synthesis approach converts target shapes to velocity field and embed it in given scenes. It has been extensibly researched by others. To name a few, Ma et al (2009) proposed deformation of fluid using motion-field texture, and up-resolution of Wavelet Turbulence (Kim et al, 2008) uses noise texture. The goal of these method is to calculate velocity fields from object's shape and change fluid behaviour by synthesizing them to precomputed scenes.
The concept of our method is similar to the texture-synthesis approach. However, since there is no need to calculate complex formula or interpret detailed user input, our operations are much simpler and easier to implement. Although this paper focuses on 2D simulations in this paper, our method can be applied to 3D simulation in a straightforward manner.
We use incompressible Navier-Stokes equations in order to simulate fluid velocity: \begin{align} \frac{\partial \vec{v}}{\partial t} + (\vec{v}\cdot\nabla)\vec{v} = \frac{1}{\rho}\nabla p + \nu\nabla^2\vec{v} + \vec{f} \tag{1} \label{eq:1} \end{align} \begin{align} \nabla \cdot \vec{v} = 0, \tag{2} \label{eq:2} \end{align} where \(\vec{v}\) and \(p\) are the fluid velocity and the pressure at the position respectively, \(t\) is time and \(\rho\) and \(\nu\) are constants. Equation \eqref{eq:1} states that the velocity should conserve momentum, and Equation \eqref{eq:2} (called divergence-free) implies incompressibility, which is an important feature of fluids.
In this section, we propose a method to make velocity field from a single binary image. We denote the scalar function determined by pixel values in the image \(\phi(\mathbf{x})\) (Figure 3(a)). Our goal in this step is to obtain velocity field \(\mathbf{u}(\mathbf{x})\), where \(\mathbf{x}\) is a position in the image. As shown in Bridson et al (2007), it is known that on arbitrary scalar (or 3D vector) field, the result of taking curl operator on it satisfies the divergence-free condition at Equation \eqref{eq:2} (\(\nabla\cdot(\nabla\times\psi))=0\)). Regarding \(\phi(\mathbf{x})\) as scalar potentional field, the vector field taken curl \begin{align} \nabla \times \phi = \left( \frac{\partial \phi}{\partial y}, -\frac{\partial \phi}{\partial x} \right) \tag{3} \label{eq:3} \end{align} satisfies incompressibility. But there is a subtle problem in differentiation. Since \(\phi\) is a binary function, \(\phi\) is constant (0 or 1) in almost every region except for sharp edge of object, which indicates \( \frac{\partial \phi}{\partial y} = \frac{\partial \phi}{\partial x} = 0\) there. Thus, before differentiation, as with the method of Fattal et al (2003) we blur \(\phi\) by convolution using a Gaussian kernel and obtain \(\tilde{\phi}\). As a whole, the embedded velocity field (Figure 3(c)) is generated by \begin{align} \mathbf{u} = \nabla \times \tilde{\phi} = \left( \frac{\partial \tilde{\phi}}{\partial y}, -\frac{\partial \tilde{\phi}}{\partial x} \right). \tag{4} \label{eq:4} \end{align}
|
|
|
(d) Advection Particles. |
(a) Precomputed velocity \(\mathbf{U}(\mathbf{X})\). |
(b) Embedded velocity \(\mathbf{u}(\mathbf{X})\). |
(c) Synthesized velocity \(\mathbf{U'}(\mathbf{X})\) using Eq:\eqref{eq:7}. |
(d) \(\mathbf{U'}(\mathbf{X})\) using Eq:\eqref{eq:8}. |
(a) |
(b) |