KR101170909B1 - 이동 그리드를 이용한 유체 시뮬레이션 시스템 및 방법 - Google Patents
이동 그리드를 이용한 유체 시뮬레이션 시스템 및 방법 Download PDFInfo
- Publication number
- KR101170909B1 KR101170909B1 KR1020100007763A KR20100007763A KR101170909B1 KR 101170909 B1 KR101170909 B1 KR 101170909B1 KR 1020100007763 A KR1020100007763 A KR 1020100007763A KR 20100007763 A KR20100007763 A KR 20100007763A KR 101170909 B1 KR101170909 B1 KR 101170909B1
- Authority
- KR
- South Korea
- Prior art keywords
- vertices
- simulation
- time step
- grid
- velocity
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/60—3D [Three Dimensional] animation of natural phenomena, e.g. rain, snow, water or plants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/56—Particle system, point based geometry or rendering
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Optimization (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Operations Research (AREA)
- Algebra (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Processing Or Creating Images (AREA)
Abstract
이동 그리드(moving grid)를 이용한 유체 시뮬레이션 시스템은, 복수 개의 시간 단계별로, 미리 설정된 형상 정보를 이용하여 하나 이상의 정점을 포함하는 시뮬레이션 그리드를 생성하는 설정 모듈; 현재 시간 단계의 시뮬레이션 그리드에서 각 정점의 속도를 이전 시간 단계의 시뮬레이션 그리드를 이용하여 리샘플링하는 레벨 셋 리샘플링 모듈; 및 상기 하나 이상의 정점의 속도 필드를 이용하여 무발산 속도 필드를 산출하는 필드 리샘플링 모듈을 포함하여 구성될 수 있다.
Description
실시예들은 이동 그리드를 이용한 유체 시뮬레이션 시스템 및 방법에 관한 것이다.
컴퓨터 그래픽스(Computer Graphics; CG) 분야, 특히 시각 효과(Visual Effects; VFX) 분야에 있어서 유체 시뮬레이션은 상당히 많은 계산량을 요구하기 때문에, 컴퓨터의 성능이 향상된 최근에 있어서도 많은 연구 및 개발을 요한다. 한편, CG 분야가 태동하기 이전부터 유체의 유동을 수치적으로 풀어내려는 연구는 전산 유체 역학(Computational Fluid Dynamics; CFD) 분야를 중심으로 논의되어 왔다.
일상에서 접할 수 있는 유체의 움직임은 대부분 비압축성 유체 유동(incompressible fluid flow)으로 볼 수 있으며, CG 및 CFD 분야에서는 비압축성 유체 유동을 해석하기 위해 나비어-스톡스(Navier-Stokes) 방정식을 지배 방정식으로 사용하고 있다. 나비어-스톡스 방정식은 여러 가지 형태의 편미분 방정식이 하나의 식으로 결합되어 있으므로 해석적인 해(analytic solution)가 존재하지 않으며, 1970년대에 들어서야 비로소 컴퓨터를 이용한 수치적인 해를 구할 수 있게 되었다. CG 분야에서는, "Stable Fluids"의 제목을 가지며 1999년 발행된 Jos Stam의 논문을 시작으로 유체 시뮬레이션이 도입되기 시작하였다.
유체 시뮬레이션에서 유체 유동을 기술하기 위한 방법으로는 공간상에 위치한 그리드를 이용한 오일러(Eulerian) 기술법이 있다. 오일러 기술법은 시뮬레이션 공간에 위치하는 그리드 내부의 유체 유동을 표현할 수 있다. 이러한 그리드는 시간에 따라 움직이도록 구성할 수 있으며, 그리드의 움직임을 지원함으로써 시뮬레이션 공간의 추가 확보 또는 이동 등이 가능하다. 따라서 기존 시뮬레이션의 제약을 획기적으로 개선할 수 있다.
본 발명의 일 측면에 따르면, 레벨 셋(level set) 리샘플링(resampling)과 더불어 프아송 방정식(Poisson equation)에 의한 필드 리샘플링을 수행함으로써, 이동 그리드(moving grid)를 이용하는 유체 시뮬레이션에서 각 시간 단계의 속도 필드를 용이하게 산출할 수 있는 이동 그리드를 이용한 유체 시뮬레이션 시스템 및 방법을 제공할 수 있다.
일 실시예에 따른 이동 그리드(moving grid)를 이용한 유체 시뮬레이션 시스템은, 복수 개의 시간 단계별로, 미리 설정된 형상 정보를 이용하여 하나 이상의 정점을 포함하는 시뮬레이션 그리드를 생성하는 설정 모듈; 현재 시간 단계의 시뮬레이션 그리드에서 각 정점의 속도를 이전 시간 단계의 시뮬레이션 그리드를 이용하여 리샘플링하는 레벨 셋 리샘플링 모듈; 및 상기 하나 이상의 정점의 속도 필드를 이용하여 무발산 속도 필드를 산출하는 필드 리샘플링 모듈을 포함할 수 있다.
일 실시예에 따른 이동 그리드를 이용한 유체 시뮬레이션 방법은, 복수 개의 시간 단계별로, 미리 설정된 형상 정보를 이용하여 하나 이상의 정점을 포함하는 시뮬레이션 그리드를 생성하는 단계; 현재 시간 단계의 시뮬레이션 그리드에서 각 정점의 속도를 이전 시간 단계의 시뮬레이션 그리드를 이용하여 리샘플링하는 단계; 및 상기 하나 이상의 정점의 속도 필드를 이용하여 무발산 속도 필드를 산출하는 단계를 포함할 수 있다.
본 발명의 일 측면에 따른 이동 그리드(moving grid)를 이용한 유체 시뮬레이션 시스템 및 방법을 이용하면, 레벨 셋(level set) 리샘플링(resampling)과 더불어 프아송 방정식(Poisson equation)에 의한 필드 리샘플링을 수행함으로써, 이동 그리드를 이용하는 유체 시뮬레이션에 있어서 이전 시간 단계의 속도 필드를 이용하여 다음 시간 단계의 속도 필드를 용이하게 산출할 수 있는 이점이 있다.
도 1은 일 실시예에 따른 이동 그리드(moving grid)를 이용한 유체 시뮬레이션 시스템의 구성을 도시한 블록도이다.
도 2 내지 도 4는 시뮬레이션 그리드에서 각 정점(vertex)을 이전 시간 단계의 시뮬레이션 그리드에 투영하여 각 정점의 속도를 리샘플링(resampling)하는 과정을 나타내는 개략도이다.
도 5는 일 실시예에 따른 이동 그리드를 이용한 유체 시뮬레이션 방법을 도시한 순서도이다.
도 2 내지 도 4는 시뮬레이션 그리드에서 각 정점(vertex)을 이전 시간 단계의 시뮬레이션 그리드에 투영하여 각 정점의 속도를 리샘플링(resampling)하는 과정을 나타내는 개략도이다.
도 5는 일 실시예에 따른 이동 그리드를 이용한 유체 시뮬레이션 방법을 도시한 순서도이다.
이하에서, 도면을 참조하여 본 발명의 실시예들에 대하여 상세히 살펴본다.
도 1은 일 실시예에 따른 이동 그리드(moving grid)를 이용한 유체 시뮬레이션(fluid simulation) 시스템의 구성을 도시한 블록도이다. 도 1을 참조하면, 이동 그리드를 이용한 유체 시뮬레이션 시스템은 설정 모듈(10), 레벨 셋(level set) 리샘플링(resampling) 모듈(20) 및 필드(field) 리샘플링 모듈(30)을 포함할 수 있다.
본 명세서에 기술된 실시예는 전적으로 하드웨어이거나, 부분적으로 하드웨어이고 부분적으로 소프트웨어이거나, 또는 전적으로 소프트웨어인 측면을 가질 수 있다. 예컨대, 본 명세서에서 "부(unit)", "모듈(module)" 또는 "시스템(system)" 등은 하드웨어, 하드웨어와 소프트웨어의 조합, 또는 소프트웨어 등 컴퓨터 관련 엔티티(entity)를 지칭할 수 있다. 예를 들어, 부, 모듈 또는 시스템은 실행중인 프로세스, 프로세서, 객체(object), 실행파일(executable), 실행 스레드(thread of execution), 프로그램, 및/또는 컴퓨터일 수 있으나, 이에 제한되는 것은 아니다. 예를 들어, 컴퓨터에서 실행중인 애플리케이션(application) 및 컴퓨터의 양쪽이 모두 본 명세서에 기재된 부, 모듈 또는 시스템에 해당할 수 있다.
설정 모듈(10)은 유체 시뮬레이션을 수행하기 위한 기본 정보를 저장 및/또는 생성하기 위한 부분이다. 설정 모듈(10)은 유체로 표현하고자 하는 대상에 대응되는 형상 정보를 각 시간 단계(time step)별로 저장할 수 있다. 예를 들어, 저장된 형상 정보는 유체로 이루어지는 2차원 또는 3차원 캐릭터의 형상 및 캐릭터의 시간에 따른 움직임을 각 시간 단계별로 모델링(modeling)한 결과물일 수 있다.
표현하고자 하는 캐릭터가 움직이고 있으므로, 설정 모듈(10)에 저장된 형상 정보는 각 시간 단계별로 적어도 부분적으로 상이할 수 있다. 각 시간 단계 사이의 시간 간격은 유체 시뮬레이션의 연산량을 고려하여 적절히 결정될 수 있다. 예컨대, 각 시간 단계는 1초의 시간을 세분화한 각 프레임(frame)이거나, 또는 하나의 프레임을 다시 세분화한 각 서브-프레임(sub-frame)일 수 있다.
또한 설정 모듈(10)은, 각 시간 단계별로 캐릭터의 형상에 대응되는 시뮬레이션 그리드(simulation grid)를 설정할 수 있다. 시뮬레이션 그리드에서 캐릭터는 캐릭터의 표면에 인접하여 위치하는 격자의 꼭지점에 해당하는 하나 이상의 정점(vertex)에 의해 표현될 수 있다. 각 시간 단계에서 캐릭터가 이동함에 따라 시뮬레이션 그리드도 이동하게 되며, 따라서 하나 이상의 정점의 위치도 각 시간 단계별로 변화하게 된다.
레벨 셋 리샘플링 모듈(20)은, 현재 단계의 시뮬레이션 그리드의 각 정점의 위치를 이전 시간 단계의 시뮬레이션 그리드를 이용하여 리샘플링할 수 있다. 레벨 셋 리샘플링 모듈(20)은 리샘플링부(21) 및 리디스턴싱(redistancing)부(22)를 포함할 수 있다. 리샘플링부(21)는 현재 시간 단계의 시뮬레이션 그리드에서 각 정점의 위치를 이전 시간 단계의 시뮬레이션 그리드에 투영하고, 투영된 위치에 인접하는 하나 이상의 정점의 속도를 이용한 보간(interpolation)법에 의해 현재 시간 단계의 각 정점의 속도를 산출할 수 있다.
이하에서는, 도 2 내지 도 4를 참조하여 리샘플링부(21)의 동작에 대해 보다 상세히 설명한다.
도 2 내지 도 4는 일 실시예에 따른 이동 그리드를 이용한 유체 시뮬레이션 시스템에서 이전 시간 단계의 시뮬레이션 그리드를 이용한 리샘플링 과정을 설명하기 위한 개략도이다. 도 2는 임의의 시간 단계의 시뮬레이션 그리드(100)를 도시한다. 도 2를 참조하면, 시뮬레이션 그리드(100)는 시뮬레이션 그리드(100)에서 각 격자의 꼭지점에 해당되는 하나 이상의 정점(200, 205)을 포함할 수 있다.
도 2에서 시뮬레이션 그리드(100)는 정사각형 형태의 격자 구조로 도시되었으나, 이는 예시적인 것으로서 다른 실시예에서는 직사각형, 육각형, 삼각형 또는 다른 임의의 다각형 형상이 규칙적으로 배열된 격자를 시뮬레이션 그리드로 이용할 수도 있다. 또한 본 명세서에 첨부된 도면들에서, 시뮬레이션 그리드는 2차원인 평면을 기준으로 설명되었으나, 3차원 공간 내에 위치하는 캐릭터의 형상 및 움직임을 유체로 표현할 수도 있다. 이때 시뮬레이션 그리드의 각 격자는 정육면체 또는 다른 적당한 다면체의 형태일 수 있다.
도 3은 다음 시간 단계에서 시뮬레이션 그리드가 이동한 결과를 나타낸다. 도 2 및 도 3을 참조하면, 이전 시간 단계의 시뮬레이션 그리드(100)가 이동하여 다음 시간 단계에서는 시뮬레이션 그리드(110)로 위치가 변화하였다. 그 결과, 시뮬레이션 그리드(100)상의 각 정점(200, 205)의 위치도 변화되었으며, 이는 다음 시간 단계의 시뮬레이션 그리드(110)상의 정점(210, 205)에 해당된다.
도 4는 다음 시간 단계의 시뮬레이션 그리드에서 각 정점(210, 215)의 위치를 이전 시간 단계의 시뮬레이션 그리드(100)에 투영한 결과를 나타낸다. 이때 정점(210)의 속도는 이전 시간 단계의 시뮬레이션 그리드(100)에 투영된 정점(210)의 위치에 인접하는 하나 이상의 이전 시간 단계의 정점(301, 302, 303, 304)의 속도를 이용하여 산출할 수 있다. 예를 들어, 정점(210)과 하나 이상의 인접하는 정점(301, 302, 303, 304) 사이의 거리에 비례하여 각 정점(301, 302, 303, 304)의 속도를 보간하여 정점(210)의 속도를 산출할 수 있다.
도 4에 도시된 실시예에서는 2차원의 시뮬레이션 격자(100)를 이용하므로 하나의 정점(210)에 인접하는 다른 4개의 정점(301, 302, 303, 304)의 속도를 이용하여 정점(210)의 속도를 산출하였다. 그러나 3차원의 시뮬레이션 그리드를 이용하는 경우에는, 하나의 정점의 속도를 산출하기 위해 사용되는 인접한 정점의 개수는 이와 상이할 수도 있다.
한편, 시뮬레이션 그리드(100)가 위치를 이동한 결과, 이동된 시뮬레이션 그리드(110)에서 어떤 정점(215)은 이전 시간 단계의 시뮬레이션 그리드(100) 내에 투영되지 않을 수 있다. 즉, 정점(215)의 위치는 이전 시간 단계의 시뮬레이션 그리드(100)를 벗어나게 되므로, 전술한 다른 정점(210)과 같이 인접한 정점을 이용하는 보간법으로 속도를 리샘플링하는 것이 불가능하다.
도 1을 참조하면, 전술한 것과 같이 이전 시간 단계의 시뮬레이션 그리드에 투영되지 않는 정점이 있을 경우에는, 리디스턴싱부(22)에서 레벨 셋 리디스턴싱을 수행하여 각 정점의 위치를 갱신함으로써 해당 정점의 속도를 리샘플링할 수 있다.
레벨 셋 리디스턴싱을 위해서는, 유체로 표현하고자 하는 캐릭터의 형상을 레벨 셋을 이용하여 정의할 수 있다. 즉, 캐릭터의 표면을 부호를 갖는 거리 함수(signed distance function)인 레벨 셋 구조를 이용하여 디리클레 경계 조건(Dirichlet boundary condition)으로 나타낸다. 시뮬레이션 그리드에서 캐릭터의 표면에 대응되는 정점들을 찾아 이를 초기 조건인 0 레벨 셋으로 정하고, 나머지 정점들은 패스트 마칭 방법(Fast Marching Method), 패스트 스위핑 방법(Fast Sweeping Method), 또는 다른 적당한 방법을 이용하여 부호를 갖는 거리 함수로 나타낸다.
리디스턴싱부(22)는, 이상과 같이 산출된 레벨 셋 구조를 이용하여 각각의 정점과 캐릭터의 표면 사이의 거리를 시간 단계별로 갱신할 수 있다. 예를 들어, 각 시간 단계에서 캐릭터의 표면에 인접한 정점들은 캐릭터의 표면으로 투영하며, 투영된 정점들의 값을 캐릭터 내부의 정점들로 전파시켜 각 정점의 위치를 갱신한다. 리디스턴싱부(22)에서 이상과 같이 리디스턴싱을 수행한 결과, 이전 시간 단계의 시뮬레이션 격자를 벗어나는 정점들을 캐릭터의 표면으로 투영하여 속도를 산출할 수 있다.
이상에서 설명한 것과 같이, 레벨 셋 리샘플링 모듈(20)에서 이전 시간 단계의 각 정점의 속도를 이용하여 현재 시간 단계의 각 정점의 속도를 산출할 수 있다. 한편, 필드 리샘플링 모듈(30)은, 현재 시간 단계의 시뮬레이션 그리드에서 정점들의 속도 필드를 프아송 방정식(Poisson equation)에 적용하여 연산함으로써 무발산(divergence-free) 속도 필드를 산출할 수 있다.
현재 시간 단계의 시뮬레이션 그리드에서 정점들의 속도 필드를 w, 필드 리샘플링 모듈(30)에 의해 산출하고자 하는 무발산의 속도 필드를 u라 할 경우, 두 속도 필드는 헬름홀츠-하지 분해(Helmholtz-Hodge decomposition)에 따라 다음 수학식 1을 만족하게 된다.
상기 수학식 1에서 q는 특정한 스칼라(scalar) 값이며, q를 구할 경우 q 값을 수학식 1에 대입함으로써 u를 구할 수 있다. 이를 위하여, 먼저 수학식 1의 양변에 발산(divergence)을 취하면 하기 수학식 2를 얻을 수 있다.
상기 수학식 2에서 u는 무발산 필드이므로 ▽?u는 0이 되며, 따라서 수학식 2는 하기 수학식 3과 같은 프아송 방정식이 된다.
수치 해석을 이용하면 상기 수학식 3에서 q의 값을 구할 수 있으며, 구해진 q의 값을 수학식 1에 대입하여 속도 필드 u를 산출할 수 있다. 이때 속도 필드 u는 전술한 것과 같이 무발산의 속도 필드로서, 유체 시뮬레이션에서는 비압축적(incompressive)인 유체의 특성을 나타낸다.
시뮬레이션 모듈(40)은, 전술한 과정에 의하여 산출된 무발산 속도 필드를 이용하여 비압축성 유체 유동(incompressible fluid flow) 시뮬레이션을 수행할 수 있다. 비압축성 유체 유동 시뮬레이션은 유체의 속도 필드를 나비어나비어-스톡스(Navier-Stokes) 방정식에 적용하여 연산함으로서 각 정점의 위치를 시간 단계별로 갱신해내가는 과정일 수 있다. 유체 시뮬레이션의 구체적인 연산 과정은 당업자에게 잘 알려져 있으므로 이에 대한 자세한 설명은 생략한다. 예컨대, 시뮬레이션 모듈(40)은 공지된 유체 시뮬레이터(fluid simulator)를 이용하여 유체 시뮬레이션을 수행할 수도 있다.
일 실시예에서, 이동 그리드를 이용한 유체 시뮬레이션 시스템은 파티클(particle) 모듈(50)을 더 포함할 수도 있다. 파티클 모듈(50)은 유체 캐릭터의 주변에 생성하는 유체 파티클을 구현하기 위한 부분이다. 즉, 파티클 모듈(50)은 시뮬레이션 그리드와 인접하여 하나 이상의 하나 이상의 파티클을 생성하고, 시뮬레이션 모듈(40)에서의 유체 시뮬레이션 계산시 파티클과의 보간을 통해 적절한 결과를 얻도록 할 수 있다. 각각의 유체 파티클은 하나 이상의 정점에 의해 표현될 수 있다.
예를 들어, 파티클 모듈(50)은 시뮬레이션 그리드의 정점들의 속도 필드에서 속도의 크기가 미리 설정된 임계값 이상인 부분이 있을 경우, 해당 부분에 인접하여 새로운 정점을 생성할 수 있다. 그 결과, 물로 이루어진 캐릭터가 빠르게 움직일 때 캐릭터의 표면에서 물 입자가 튀는 스플래시(splash) 형상을 표현할 수 있다. 파티클 모듈(50)에서 파티클을 생성하기 위한 동작은 전술한 스플래시에 기초한 방법 이외에도 버블(bubble) 또는 폼(foam) 형상으로 파티클을 생성하는 방법이 있다. 스플래시, 버블 및/또는 폼 형상으로 파티클을 생성하기 위한 구체적인 방법에 대해서는 당업자에게 잘 알려져 있으므로 자세한 설명을 생략한다.
파티클 모듈(50)에서 생성된 파티클에 대한 시뮬레이션은 다음과 같은 방법으로 수행될 수 있다. 버블 또는 폼 형상의 파티클의 경우, 시뮬레이션 그리드상에 파티클을 생성하며 시뮬레이션 그리드상의 파티클의 속도를 그대로 월드 좌표계(world coordinate)로 변환한다. 반면, 스플래시 형상의 파티클의 경우에는 시뮬레이션 그리드의 각 정점과 상호작용을 할 수 있다. 이 경우, 이전 시간 단계에서의 파티클을 월드 좌표계로 투영하며, 이를 다시 현재 시간 단계의 시뮬레이션 그리드상에 투영할 수 있다. 다음으로, 파티클을 시뮬레이션 그리드의 정점들과 상호작용시킬 수 있다. 예컨대, 파티클과의 상호작용에 따른 힘을 인가하여 파티클 및/또는 정점의 속도 필드를 변화시킬 수 있다. 상호작용이 반영되면, 다음으로 파티클을 다시 월드 좌표계로 투영할 수 있다.
일 실시예에서, 파티클의 생성량이 많을 경우 파티클 모듈(50)은 월드 좌표계에서 미리 시뮬레이션 그리드에 대응되는 영역에 위치하는 파티클만을 선별한 후 시뮬레이션 그리드의 각 정점과 파티클이 상호작용하도록 구성할 수도 있다.
도 5는 일 실시예에 따른 이동 그리드를 이용한 유체 시뮬레이션 방법을 도시한 순서도이다.
도 5를 참조하면, 먼저 유체로 표현하고자 하는 캐릭터에 대해 미리 저장된 각 시간 단계별 형상 정보를 이용하여, 캐릭터에 대응되는 시뮬레이션 그리드를 생성할 수 있다(S1). 이때 캐릭터의 형상은 시뮬레이션 그리드의 각 꼭지점에 해당되는 하나 이상의 정점에 의해 표현될 수 있다.
다음으로, 현재의 시간 단계가 첫 번째 시간 단계인지 여부를 판단한다(S2). 현재 시간 단계가 첫 번째 시간 단계일 경우에는 아무런 동작을 수행하지 않으며, 현재 시간 단계가 마지막 시간 단계인지 여부를 판단하는 단계(S8)를 거쳐 바로 다음 단계로 넘어가게 된다.
현재 시간 단계가 첫 번째 시간 단계가 아닐 경우에는, 현재 시간 단계의 시뮬레이션 그리드의 각 정점을 이전 시간 단계의 시뮬레이션 그리드에 투영하여 정점의 속도를 리샘플링할 수 있다(S3). 예를 들어, 현재 시간 단계의 정점의 위치를 이전 시간 단계의 시뮬레이션 그리드에 투영하고, 투영된 위치에 인접한 정점들의 속도를 이용하여 보간법에 의해 현재 시간 단계의 정점의 속도를 산출할 수 있다.
다음으로, 이전 시간 단계의 시뮬레이션 그리드로 투영되지 않는 정점에 대해서는 레벨 셋 리디스턴싱을 수행할 수 있다(S4). 레벨 셋 리디스턴싱은 패스트 마칭 방법, 패스트 스위핑 방법, 또는 공지된 다른 적당한 방법에 의하여 수행될 수도 있다. 그 결과, 이전 시간 단계의 시뮬레이션 그리드로 투영되지 않는 정점을 캐릭터의 표면으로 투영함으로써 해당 정점의 속도를 산출할 수 있다.
다음으로, 현재 시간 단계의 시뮬레이션 그리드에서 정점들의 속도 필드에 대해 프아송 방정식을 적용하여 연산함으로써 속도 필드를 리샘플링할 수 있다(S5). 그 결과, 정점들의 속도 필드를 이용하여 무발산 속도 필드를 산출할 수 있다.
다음으로, 산출된 무발산 속도 필드를 이용하여 비압축 유체 유동 시뮬레이션을 수행할 수 있다(S6). 비압축 유체 유동 시뮬레이션은 속도 필드에 나비어-스톡스(Navier-Stokes) 방정식을 적용하여 연산함으로써 각 정점의 위치를 시간 단계별로 갱신하는 과정일 수 있다. 구체적인 유체 유동 시뮬레이션의 연산 과정은 당업자들에게 잘 알려져 있으므로 자세한 설명을 생략한다.
일 실시예에서는, 시뮬레이션 그리드에 인접하여 하나 이상의 유체 파티클을 생성하고, 시뮬레이션 그리드의 각 정점과 파티클 사이의 상호작용을 속도 필드에 반영할 수 있다(S7). 파티클은 하나 이상의 정점에 의해 표현되며, 스플래시(splash), 버블(bubble) 또는 폼(foam) 등과 같은 유체 형상을 표현할 수 있다. 구체적인 파티클 생성 및 시뮬레이션 방법에 대해서는 당업자들에게 잘 알려져 있으므로 자세한 설명을 생략한다.
현재의 시간 단계에서 전술한 각 단계(S3 내지 S7)가 완료되면, 해당 시간 단계가 마지막 시간 단계인지 판단한다(S8). 마지막 시간 단계가 아닐 경우에는 현재 시간 단계에서 산출된 각 정점의 위치를 초기값으로 하여 다음 시간 단계에서 전술한 각 단계(S3 내지 S7)를 반복적으로 수행하며, 마지막 시간 단계일 경우에는 시뮬레이션을 종료한다.
본 명세서에서 실시예들에 따른 이동 그리드를 이용한 유체 시뮬레이션 방법은 도면에 제시된 순서도를 참조로 하여 설명되었다. 간단히 설명하기 위하여 상기 방법은 일련의 블록들로 도시되고 설명되었으나, 본 발명은 상기 블록들의 순서에 한정되지 않고, 몇몇 블록들은 다른 블록들과 본 명세서에서 도시되고 기술된 것과 상이한 순서로 또는 동시에 일어날 수도 있으며, 동일한 또는 유사한 결과를 달성하는 다양한 다른 분기, 흐름 경로, 및 블록의 순서들이 구현될 수 있다. 또한, 본 명세서에서 기술되는 방법의 구현을 위하여 도시된 모든 블록들이 요구되지 않을 수도 있다.
또한 본 명세서에 기술된 이동 그리드를 이용한 유체 시뮬레이션 시스템 및 방법, 또는 상기 시스템 및 방법의 어떤 측면이나 부분은, 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 기타 임의의 컴퓨터로 판독 가능한 기록 매체와 같은 유형 매체에 포함된 프로그램 코드(즉, 명령어)의 형태로 구현될 수도 있다. 상기 프로그램 코드는 컴퓨터와 같은 장치에 로드(load)되어 실행되며, 이때 상기 장치가 본 발명을 실시하기 위한 시스템에 해당된다.
이상에서 살펴본 본 발명은 도면에 도시된 실시예들을 참고로 하여 설명하였으나 이는 예시적인 것에 불과하며 당해 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 실시예의 변형이 가능하다는 점을 이해할 것이다. 그러나, 이와 같은 변형은 본 발명의 기술적 보호범위 내에 있다고 보아야 한다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해서 정해져야 할 것이다.
Claims (10)
- 복수 개의 시간 단계별로, 미리 설정된 형상 정보를 이용하여 하나 이상의 정점을 포함하는 시뮬레이션 그리드를 생성하는 설정 모듈;
현재 시간 단계의 시뮬레이션 그리드에서 상기 하나 이상의 정점의 속도를 이전 시간 단계의 시뮬레이션 그리드를 이용하여 리샘플링하는 레벨 셋 리샘플링 모듈; 및
상기 하나 이상의 정점의 속도 필드를 이용하여 무발산 속도 필드를 산출하는 필드 리샘플링 모듈을 포함하는 것을 특징으로 하는 이동 그리드를 이용한 유체 시뮬레이션 시스템.
- 제 1항에 있어서,
상기 레벨 셋 리샘플링 모듈은,
현재 시간 단계의 시뮬레이션 그리드에서 각 정점을 이전 시간 단계의 시뮬레이션 그리드에 투영하고, 투영된 위치와 인접한 영역의 속도를 이용하여 상기 각 정점의 속도를 산출하는 리샘플링부; 및
상기 하나 이상의 정점의 위치를 레벨 셋 데이터로 구성하고, 레벨 셋에 기초하여 상기 하나 이상의 정점의 위치를 시간 단계별로 갱신하는 리디스턴싱부를 포함하는 것을 특징으로 하는 이동 그리드를 이용한 유체 시뮬레이션 시스템.
- 제 1항에 있어서,
상기 필드 리샘플링 모듈은, 상기 하나 이상의 정점의 속도 필드에 프아송 방정식을 적용하여 연산함으로써 상기 무발산 속도 필드를 산출하는 것을 특징으로 하는 이동 그리드를 이용한 유체 시뮬레이션 시스템.
- 제 1항에 있어서,
상기 무발산 속도 필드를 이용하여 상기 하나 이상의 정점의 위치를 시간 단계별로 산출하는 시뮬레이션 모듈을 더 포함하는 것을 특징으로 하는 이동 그리드를 이용한 유체 시뮬레이션 시스템.
- 제 1항에 있어서,
상기 무발산 속도 필드에 기초하여 하나 이상의 파티클을 생성하는 파티클 모듈을 더 포함하는 것을 특징으로 하는 이동 그리드를 이용한 유체 시뮬레이션 시스템.
- 복수 개의 시간 단계별로, 미리 설정된 형상 정보를 이용하여 하나 이상의 정점을 포함하는 시뮬레이션 그리드를 생성하는 단계;
현재 시간 단계의 시뮬레이션 그리드에서 상기 하나 이상의 정점의 속도를 이전 시간 단계의 시뮬레이션 그리드를 이용하여 리샘플링하는 단계; 및
상기 하나 이상의 정점의 속도 필드를 이용하여 무발산 속도 필드를 산출하는 단계를 포함하는 것을 특징으로 하는 이동 그리드를 이용한 유체 시뮬레이션 방법.
- 제 6항에 있어서,
상기 리샘플링하는 단계는,
현재 시간 단계의 시뮬레이션 그리드에서 각 정점의 위치를 이전 시간 단계의 시뮬레이션 그리드에 투영하는 단계;
투영된 위치와 인접하는 영역의 속도를 이용하여 상기 각 정점의 속도를 산출하는 단계; 및
상기 하나 이상의 정점의 위치를 레벨 셋 데이터로 구성하고, 레벨 셋에 기초하여 상기 하나 이상의 정점의 위치를 시간 단계별로 갱신하는 단계를 포함하는 것을 특징으로 하는 이동 그리드를 이용한 유체 시뮬레이션 방법.
- 제 6항에 있어서,
상기 무발산 속도 필드를 산출하는 단계는,
상기 하나 이상의 정점의 속도 필드에 프아송 방정식을 적용하여 연산함으로써 상기 무발산 속도 필드를 산출하는 단계를 포함하는 것을 특징으로 하는 이동 그리드를 이용한 유체 시뮬레이션 방법.
- 제 6항에 있어서,
상기 무발산 속도 필드를 이용하여 상기 하나 이상의 정점의 위치를 시간 단계별로 산출하는 단계를 더 포함하는 것을 특징으로 하는 이동 그리드를 이용한 유체 시뮬레이션 방법.
- 제 6항에 있어서,
상기 무발산 속도 필드에 기초하여 하나 이상의 파티클을 생성하는 단계를 더 포함하는 것을 특징으로 하는 이동 그리드를 이용한 유체 시뮬레이션 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100007763A KR101170909B1 (ko) | 2010-01-28 | 2010-01-28 | 이동 그리드를 이용한 유체 시뮬레이션 시스템 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100007763A KR101170909B1 (ko) | 2010-01-28 | 2010-01-28 | 이동 그리드를 이용한 유체 시뮬레이션 시스템 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110088043A KR20110088043A (ko) | 2011-08-03 |
KR101170909B1 true KR101170909B1 (ko) | 2012-08-03 |
Family
ID=44926714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100007763A KR101170909B1 (ko) | 2010-01-28 | 2010-01-28 | 이동 그리드를 이용한 유체 시뮬레이션 시스템 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101170909B1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108875150A (zh) * | 2018-05-07 | 2018-11-23 | 哈尔滨工程大学 | 一种运动过程中发生接触的问题的动网格处理方法 |
KR102664216B1 (ko) | 2023-12-04 | 2024-05-08 | 서정현 | 그리드를 이용하는 유체의 표면장력 검출 장치 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003091738A (ja) | 2001-09-17 | 2003-03-28 | Namco Ltd | 画像生成システム、プログラム及び情報記憶媒体 |
JP2003091741A (ja) | 2001-09-17 | 2003-03-28 | Namco Ltd | 画像生成システム、プログラム及び情報記憶媒体 |
US7243057B2 (en) | 2003-03-12 | 2007-07-10 | Frantic Films Corporation | Method for modeling complex occlusions in fluid simulations |
US20070239414A1 (en) | 2006-04-05 | 2007-10-11 | Oh-Young Song | Method of simulating detailed movements of fluids using derivative particles |
-
2010
- 2010-01-28 KR KR1020100007763A patent/KR101170909B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003091738A (ja) | 2001-09-17 | 2003-03-28 | Namco Ltd | 画像生成システム、プログラム及び情報記憶媒体 |
JP2003091741A (ja) | 2001-09-17 | 2003-03-28 | Namco Ltd | 画像生成システム、プログラム及び情報記憶媒体 |
US7243057B2 (en) | 2003-03-12 | 2007-07-10 | Frantic Films Corporation | Method for modeling complex occlusions in fluid simulations |
US20070239414A1 (en) | 2006-04-05 | 2007-10-11 | Oh-Young Song | Method of simulating detailed movements of fluids using derivative particles |
Also Published As
Publication number | Publication date |
---|---|
KR20110088043A (ko) | 2011-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101244826B1 (ko) | 격자와 입자의 상호 작용을 이용한 유체 시뮬레이션 시스템 및 방법 | |
JP6787661B2 (ja) | 工作物の機械加工のシミュレート | |
JP6360192B2 (ja) | 複雑な内部境界を含む領域における非拘束ボロノイ格子の生成 | |
KR101214903B1 (ko) | 입자간의 상호 작용을 이용한 유체 시뮬레이션 시스템 및 방법 | |
AU2017227323B2 (en) | Particle simulation device, particle simulation method, and particle simulation program | |
US10503561B2 (en) | Particle simulation apparatus and computer resource allocating method | |
JP2013164848A (ja) | 任意ラグランジュ・オイラー法(ale)における要素細分化法およびシステム | |
KR20150073859A (ko) | Cad 기반 초기 표면 기하형상 정정 | |
Gatzhammer et al. | A coupling environment for partitioned multiphysics simulations applied to fluid-structure interaction scenarios | |
KR102026154B1 (ko) | 천수흐름에서 천해파의 수치모의 방법 | |
KR100588000B1 (ko) | 유체 애니메이션에서의 자유경계 추적 장치 및 그 방법 | |
KR101170909B1 (ko) | 이동 그리드를 이용한 유체 시뮬레이션 시스템 및 방법 | |
KR102399671B1 (ko) | 객체들을 모델링하는 방법 및 장치 | |
Nguyen | Material point method: basics and applications | |
CN111310349A (zh) | 适用于离散元计算信息连续化展示的数据处理分析方法 | |
KR101110342B1 (ko) | 유체 시뮬레이션 형상 제어 시스템 및 방법 | |
CN112257262B (zh) | 一种基于Fortran语言的3DEC离散元数值模型建模方法 | |
Schulz et al. | Crashing in cyberspace-evaluating structural behaviour of car bodies in a virtual environment | |
JP6915237B2 (ja) | 情報処理装置、シミュレータ結果表示方法、及びシミュレータ結果表示プログラム | |
US7623994B2 (en) | Object oriented acoustic modeling tools and methods | |
KR101682598B1 (ko) | 항공기 연료탱크의 내부 압력 사상 방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터프로그램 | |
JP6327927B2 (ja) | シミュレーション装置、モデル生成装置、シミュレーション方法、モデル生成方法、及びコンピュータプログラム | |
JP2014059621A (ja) | 解析装置、及び、解析方法 | |
CN117724798A (zh) | 三维有限差分正演模拟方法的参数确定方法、装置和设备 | |
CN116050234A (zh) | 连续介质的模拟方法、装置、介质及软件开发工具包 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20150727 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20160711 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20170710 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20180710 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20190710 Year of fee payment: 8 |