초록
자연 현상에서 나타나는 연기나 난류의 움직임을 사실적으로 시뮬레이션하기 위해서는 Navier-Stokes 방정식을 사용할 수 있다. 이 방정식을 이용한 구현은 방대한 연산량과 계산의 복잡성으로 인하여 실시간 시뮬레이션이 어렵다. 실시간 처리를 위해서는 Navier-Stokes 방정식의 관사 형태를 사용하는 것이 일반적이다. 유체 시뮬레이션의 이류(advect) 과정을 근사화하기 위해, Semi-Lagrangian 방법을 이용하면, 연기 시뮬레이션의 경우는 시간이 지남에 따라 밀도가 현저히 줄어들고, 소규모의 소용돌이(small-scale vorticity) 현상 등을 표현하기가 어렵다. 본 논문에서는 이 문제를 해결하기 위해 이류항(advection term)을 계산하는 새로운 수치해석 방법을 제안한다. 이 방법에서는 이류항의 값을 구할 때, 격자(grid) 중심의 현재 속도에 비례하는 임계영역을 격자 주변에 선정하고, 임계영역 내에 있는 격자들 중에서 현재 격자의 위치로 이류하는 속도를 가진 격자를 추적하여, 그 격자에서의 속도를 현재 격자의 이류속도 벡터로 사용한다. 이는 밀도와 소용돌이 현상의 수치적 소실을 줄여서, 사실성을 높이면서도, 실시간 처리가 가능하다. 본 논문에서는 GPU 구현을 통해 벡터 연산 등의 효율성을 높임으로써, 제안하는 방법의 실시간이 가능함을 보인다.
In the field of computer graphics, Navier-Stokes equations would be used for realistic simulations of smokes and currents. However, implementations derived from these equations are hard to achieve for real-time simulations, mainly due to its massive and complex calculations. Thus, there have been various attempts to approximate these equations for real-time simulation of smokes and others. When the advection terms of the equations are approximated by the Semi-Lagrange methods, the fluid density can be rapidly reduced and small-scale vorticity phenomena are easy to be missed, mainly due to the numerical losses over time. In this paper, we propose an improved numerical method to approximately calculate the advection terms, and thus eliminate these problems. To calculate the advection terms, our method starts to set critical regions around the target grid points. Then, among the grid points in a specific critical region, we search for a grid point which will be advected to the target grid point, and use the velocity of this grid point as its advection vector. This method would reduce the numerical losses in the calculation of densities and vorticity phenomena, and finally can implement more realistic smoke simulations. We also improve the overall efficiency of vector calculations and related operations through GPU-based implementation techniques, and thus finally achieve the real-time simulation.