KR101514806B1 - 유체 시뮬레이션 방법 및 장치 - Google Patents

유체 시뮬레이션 방법 및 장치 Download PDF

Info

Publication number
KR101514806B1
KR101514806B1 KR1020140006947A KR20140006947A KR101514806B1 KR 101514806 B1 KR101514806 B1 KR 101514806B1 KR 1020140006947 A KR1020140006947 A KR 1020140006947A KR 20140006947 A KR20140006947 A KR 20140006947A KR 101514806 B1 KR101514806 B1 KR 101514806B1
Authority
KR
South Korea
Prior art keywords
level set
flip
velocity field
particles
updated
Prior art date
Application number
KR1020140006947A
Other languages
English (en)
Inventor
홍정모
임재광
김봉준
Original Assignee
동국대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 동국대학교 산학협력단 filed Critical 동국대학교 산학협력단
Priority to KR1020140006947A priority Critical patent/KR101514806B1/ko
Priority to US14/168,314 priority patent/US9111056B2/en
Application granted granted Critical
Publication of KR101514806B1 publication Critical patent/KR101514806B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Fluid Mechanics (AREA)
  • Mathematical Physics (AREA)

Abstract

유체 시뮬레이션 방법 및 장치가 개시된다. 본 발명의 실시례에 따른 유체 시뮬레이션 방법은 시뮬레이션 대상에 대한 레벨 셋 및 속도장의 초기 조건을 설정하고, 설정된 상기 레벨 셋의 초기 조건 및 상기 속도장의 초기 조건에 따라 FLIP 파티클을 설정하는 초기 설정 단계, 상기 레벨 셋 및 상기 속도장을 이류시켜 갱신된 레벨 셋 및 갱신된 속도장을 생성하는 갱신 단계, 상기 갱신된 레벨 셋 및 상기 갱신된 속도장을 재구성하는 재구성 단계, 상기 시뮬레이션 대상에 대하여 상기 FLIP 파티클을 할당하는 할당 단계, 상기 갱신된 속도장이 비 압축성을 갖도록 하는 프로젝션 단계 및 상기 할당된 파티클 각각의 속도를 업데이트 하는 속도 갱신 단계를 포함한다.

Description

유체 시뮬레이션 방법 및 장치 {Method and apparatus of fluid simulation}
본 발명은 유체 시뮬레이션 방법 및 장치에 관한 것으로서, 보다 상세하게는 FLIP(Fluid Implicit Particle)과 레벨셋의 적응형 혼합기법을 이용하여 고품질의 특수 영상 제작이 가능한 유체 시뮬레이션 방법 및 해당 방법을 구현할 수 있는 장치에 관한 것이다.
영상 컨텐츠 제작에 있어서 저비용으로 고효율의 사실적인 영상을 얻기 위하여 컴퓨터 그래픽 관련 기술이 많이 적용되고 있다. 일례로 바다를 배경으로 거대한 물체의 입수나 출수가 이루어지는 장면 등을 웅장하고 화려하게 연출하기 위해서 유체 시뮬레이션을 이용하여 복잡한 물의 움직임을 만들어낸다.
VFX(Visual Effect) 산업군에서 이미 유체 시뮬레이션은 기본적이고 필수적인 기술로 자리 잡았으며, 많은 아티스트들이 사실적이고 화려한 유체의 움직임을 묘사하기 위해 유체 시뮬레이션을 사용하고 있다. 하지만 유체 시뮬레이션은 매우 복잡하여 많은 변수들을 사용하고 있는 탓에 유체 시뮬레이션을 다루는 아티스트들은 자신이 원하는 유체의 움직임을 연출하기 위해 수 많은 변수들을 조절해 가며 반복적인 작업을 해야 한다. 또한 일반적으로 고품질의 유체 시뮬레이션은 매우 느리기 때문에 아티스트들의 반복적인 작업에서 엄청난 시간적 노력이 소요되는 것이 사실이다. 그런 이유로 유체 시뮬레이션 분야의 많은 연구자들은 유체 시뮬레이션의 품질과 성능을 향상시키기 위한 기술 개발에 초점을 맞추고 있다.
FLIP(Fluid Implicit Particle)은 유체 시뮬레이션에서 품질 대비 높은 효율을 자랑하기 때문에 VFX 산업군에서 활발히 사용되고 있지만 대규모의 시뮬레이션에서는 효율적이지 못하다. FLIP에서는 대규모의 유체를 표현하기 위해서 상당히 많은 파티클들이 요구된다. 일반적으로 아티스트들은 고품질의 대규모 유체를 시뮬레이션 하기 위해서 고해상도의 격자를 사용하며 격자 공간안에 FLIP 파티클을 배정한 후, 시뮬레이션을 진행한다. 만약 5123 해상도 환경에서 시뮬레이션 공간에 물이 절반 정도 차있다고 가정하고, 격자(Grid)의 격자점(Cell) 하나 당 배정된 파티클의 개수가 8개라면, 약 1.3억개 정도의 파티클이 사용된다. 1.3억개 정도의 파티클을 처리하는 것은 고사양의 장비와 긴 처리시간이 요구되어 일정한 한계를 갖는다.
본 발명이 해결하고자 하는 과제는 FLIP(Fluid Implicit Particle)과 레벨셋의 적응형 혼합기법을 이용하여 고품질의 특수 영상 제작이 가능한 유체 시뮬레이션 방법 및 해당 방법을 구현할 수 있는 장치를 제공하는 것이다.
본 발명의 일 양태에 있어서, 본 발명의 실시예에 따른 유체 시뮬레이션 방법은 시뮬레이션 대상에 대한 레벨 셋 및 속도장의 초기 조건을 설정하고, 설정된 상기 레벨 셋의 초기 조건 및 상기 속도장의 초기 조건에 따라 FLIP 파티클을 설정하는 초기 설정 단계, 상기 레벨 셋 및 상기 속도장을 이류시켜 갱신된 레벨 셋 및 갱신된 속도장을 생성하는 갱신 단계, 상기 갱신된 레벨 셋 및 상기 갱신된 속도장을 재구성하는 재구성 단계, 상기 시뮬레이션 대상에 대하여 상기 FLIP 파티클을 할당하는 할당 단계, 상기 갱신된 속도장이 비 압축성을 갖도록 하는 프로젝션 단계 및 상기 할당된 파티클 각각의 속도를 업데이트 하는 속도 갱신 단계를 포함한다.
상기 할당 단계는, 상기 시뮬레이션 대상을 4개의 영역으로 구분하고, 상기 4개의 영역 각각에 대하여 상기 FLIP 파티클을 할당할 수 있다.
상기 4개의 영역은 유체 표면을 기준으로 중력의 영향을 받는 외부 영역인 제1 영역, 유체 표면 내부에 유체 표면으로부터 일정한 간격을 갖는 층으로 형성되는 제2 영역, 상기 제2 영역 하부에 일정한 간격을 갖는 층으로 형성되는 제3 영역 및 상기 제3 영역 하부에 형성되는 제4 영역을 포함할 수 있다.
상기 제2 영역에는 FLIP 파티클이 할당되고, 상기 제4 영역에는 FLIP 파티클이 할당되지 아니할 수 있다.
상기 FLIP 파티클 각각은 레벨 셋 정보를 가질 수 있다.
상기 레벨 셋 정보는 상기 레벨 셋의 값(value), 상기 레벨 셋 값의 미분 값 및 상기 속도장의 값을 포함할 수 있다.
상기 갱신된 레벨 셋 및 상기 갱신된 속도장의 재구성은 상기 FLIP 파티클에 저장된 상기 레벨 셋 정보에 기반하여 이루어질 수 있다.
상기 속도 갱신 단계에서, 상기 할당된 파티클 각각의 속도는 상기 프로젝션 단계 전 후의 상기 FLIP 파티클 각각의 격자 상의 속도의 차를 기반으로 갱신될 수 있다.
본 발명의 다른 일 양태에 있어서, 컴퓨터 읽을 수 있는 기록 매체는 본 발명의 실시례에 따른 유체 시뮬레이션 방법을 수행하는 프로그램이 기록되고, 상기 유체 시뮬레이션 방법은 시뮬레이션 대상에 대한 레벨 셋 및 속도장의 초기 조건을 설정하고, 설정된 상기 레벨 셋의 초기 조건 및 상기 속도장의 초기 조건에 따라 FLIP 파티클을 설정하는 초기 설정 단계, 상기 레벨 셋 및 상기 속도장을 이류시켜 갱신된 레벨 셋 및 갱신된 속도장을 생성하는 갱신 단계, 상기 갱신된 레벨 셋 및 상기 갱신된 속도장을 재구성하는 재구성 단계, 상기 시뮬레이션 대상에 대하여 상기 FLIP 파티클을 할당하는 할당 단계, 상기 갱신된 속도장이 비 압축성을 갖도록 하는 프로젝션 단계 및 상기 할당된 파티클 각각의 속도를 업데이트 하는 속도 갱신 단계를 포함한다.
본 발명의 다른 일 양태에 있어서, 본 발명의 실시례에 따른 유체 시뮬레이션 장치는 프로세서를 포함하고, 상기 프로세서는 시뮬레이션 대상에 대한 레벨 셋 및 속도장의 초기 조건을 설정하고, 설정된 상기 레벨 셋의 초기 조건 및 상기 속도장의 초기 조건에 따라 FLIP 파티클을 설정하고, 상기 레벨 셋 및 상기 속도장을 이류시켜 갱신된 레벨 셋 및 갱신된 속도장을 생성하고, 상기 갱신된 레벨 셋 및 상기 갱신된 속도장을 재구성하고, 상기 시뮬레이션 대상에 대하여 상기 FLIP 파티클을 할당하고, 상기 갱신된 속도장이 비 압축성을 갖도록 하는 프로젝션하고, 상기 할당된 파티클 각각의 속도를 업데이트 하도록 설정된다.
FLIP을 통해 격자(Grid) 기반 시뮬레이션에서 발생하는 수치적 소실을 줄이고 동시에 유체의 부드러운 표면을 유지할 수 있다. 상대적으로 적은 구현 비용으로 높은 품질의 유체 시뮬레이션을 효율적으로 수행하고, 다양한 형태와 다양한 규모의 유체를 표현할 수 있다.
도 1은 본 발명의 실시례에 따른 유체 시뮬레이션 방법을 나타낸 흐름도이다.
도 2는 파티클 할당 방법을 나타낸 것이다.
도 3은 본 발명의 실시례에 따른 유체 시뮬레이션 방법에서의 파티클 할당 방법을 나타낸 것이다.
도 4는 프로젝션 과정의 일례이다.
도 5는 파티클의 이류가 이뤄지는 과정의 일례이다.
도 6은 파티클의 속도를 갱신하는 과정의 일례이다.
도 7은 본 발명의 실시례에 따른 유체 시뮬레이션 방법에서 레벨셋의 표면을 재구성하는 방법을 나타낸 것이다.
도 8은 FLIP 파티클로부터 x 위치의 레벨셋 값을 계산하는 방법을 예시한 것이다.
도 9는 레벨셋 표면 재구성 방법의 일례이다.
도 10의 업샘플링 기법을 추가하여 시뮬레이션의 품질을 향상시키는 방법의 일례를 나타낸 것이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 이를 상세한 설명을 통해 상세히 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 발명을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 본 명세서의 설명 과정에서 이용되는 숫자(예를 들어, 제1, 제2 등)는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별기호에 불과하다.
또한, 본 명세서에서, 일 구성요소가 다른 구성요소와 "연결된다" 거나 "접속된다" 등으로 언급된 때에는, 상기 일 구성요소가 상기 다른 구성요소와 직접 연결되거나 또는 직접 접속될 수도 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 연결되거나 또는 접속될 수도 있다고 이해되어야 할 것이다.
본 발명의 실시례에 따른 유체 시뮬레이션 기법은 격자기반 기법과 FLIP 기법을 기반으로 한다. 격자 기반 기법에서 발생하는 소실을 FLIP 기법으로 보완하고 많은 파티클이 요구되는 FLIP에서는 격자기반 기법이 적용되어서 요구되는 파티클의 수를 줄일 수 있다.
본 발명의 실시례에 따른 유체 시뮬레이션 기법은 기존의 FLIP 기법을 개선하여, 파티클-레벨셋기법을 응용하여 레벨셋의 표면 부근에만 파티클을 할당한다. 유체 표면의 안쪽 영역에만 파티클을 배정하여, 파티클로부터 레벨셋과 속도장을 함께 재구성하여 속도장의 수치적 소실을 최소화할 수 있다. 또한 종래의 파티클-레벨셋 기법에서는 파티클이 존재하는 레벨셋의 표면 근처에서만 레벨셋이 재구성되는 반면, 본 발명의 실시례에 따른 유체 시뮬레이션 기법에서는 FLIP 파티클로부터 레벨셋을 재구성한다. 본 발명의 실시례에 따른 유체 시뮬레이션 기법에서 레벨 셋의 표면을 기준으로 시뮬레이션 공간은 몇 개의 층으로 구별하고, 각각의 파티클은 위치해 있는 층에 따라 다르게 움직일 수 있다. 또한 파티클과 레벨셋을 혼합하기 위하여 파티클에 레벨셋 정보는 공유될 수 있다. 파티클이 가지고 있는 레벨셋 정보를 이용하여 레벨셋의 표면을 재구성되며, 레벨셋의 표면을 재구성하는 과정에서 업샘플링 기법이 적용될 수 있다.
이하, 본 발명의 실시례를 첨부한 도면들을 참조하여 상세히 설명하기로 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면 번호에 상관없이 동일한 수단에 대해서는 동일한 참조 번호를 사용하기로 한다.
도 1은 본 발명의 실시례에 따른 유체 시뮬레이션 방법을 나타낸 흐름도이다.
본 발명의 실시례에 따른 유체 시뮬레이션 방법은 초기 설정 단계(S110), 레벨셋 및 속도장을 갱신하는 단계(S120), 레벨셋 및 속도장을 재구성하는 단계(S130), 파티클을 할당하는 단계(S140), 프로젝션 단계(S150) 및 파티클 속도 갱신 단계(S160)를 포함한다.
S110의 초기 조건 설정 단계는 시뮬레이션 대상에 대한 초기 조건을 설정하는 단계이다. 초기 조건 설정단계에서는 시뮬레이션 대상의 레벨셋(level set)과 속도장(velocity field)의 초기 조건이 설정될 수 있다. 설정된 레벨 셋과 속도장의 초기 조건에 따라 FLIP 파티클(particle)이 설정되고, 설정된 FLIP 파티클에는 레벨 셋 값과 레벨 셋 값의 미분값, 속도장 값이 저장된다.
S120의 레벨 셋 및 속도장 갱신 단계는 레벨 셋과 속도장을 이류(advection)시키는 단계이다. 본 발명의 실시례에 따른 유체 시뮬레이션 방법에 있어서, 레벨 셋과 속도장을 이류시킴에 있어서 반-라그랑지안 기법(semi-Lagrangian method)이 이용될 수 있다. FLIP 입자는 1차 오일러 또는 2차 Runge-Kutta 적분법을 이용하여 이류시킬 수 있다.
S130의 레벨셋, 속도장 재구성 단계는 S120에서 갱신된 레벨 셋과 속도장을 재구성한다. 본 발명의 실시례에 다른 유체 시뮬레이션 방법에서 레벨 셋 및 속도장을 재구성하는 방법에 대해서는 이하에서 다시 상세히 설명하기로 한다.
레벨셋 및 속도장의 재구성 이후 파티클을 할당하는 S140에서 본 발명의 실시례에 따른 유체 시뮬레이션 방법에서는 유체 표면을 기준으로 복수의 영역으로 구별하여 각각의 영역에 대하여 파티클을 할당할 수 있다. 종래의 FLIP 기법에서 FLIP 입자는 레벨셋 값을 가지고 있지 아니하므로 모든 영역에 입자를 할당하여야 하나 본 발명의 실시례에 따른 유체 시뮬레이션 방법에서는 상술한 바와 같이 FLIP 입자가 레벨 셋 값과 레벨 셋 값의 미분값, 속도장 값을 포함하고 있으므로 영역에 따라 입자의 할당을 달리할 수 있다. 일례로 본 발명의 실시례에 따른 유체 시뮬레이션 방법에서는 시각적 정밀도가 중요하지 않은 유체의 안쪽에 대해서는 입자를 배치하지 아니할 수 있다. 파티클 할당 방법은 이하에서 다시 상세히 설명한다.
프로젝션 단계(S150)는 유체의 속도장을 비압축성을 갖도록 만드는 과정이다. 프로젝션 단계는 Navier-Stokes 방정식의 해를 구하는 과정일 수 있다. 프로젝션 단계에는 유체가 추가될 때 추가적인 레벨 셋을 생성하여 유체 시뮬레이션 과정에 추가하는 소싱(sourcing) 단계를 더 포함할 수 있다.
파티클 속도 갱신 단계(S160)는 S150 프로젝션 단계 전후의 속도장의 차이를 기반으로 현재 파티클의 속도를 갱신하는 단계이다. 본 발명의 실시례에 따른 유체 시뮬레이션 방법에서는 상술한 바와 같이 유체 표면을 기준으로 복수의 영역으로 구분 하여 영역별로 다른 파티클의 속도 갱신 기법이 적용될 수 있다. 이와 관련하여 이하에서 다시 상세히 설명하기로 한다.
본 발명의 실시례에 따른 유체 시뮬레이션 방법은 격자 기반 레벨셋 시뮬레이션 기법이 이용될 수 있다. 격자 기반 레벨셋 시뮬레이션 기법에서 유체는 비점성과 비압축성의 성질을 가지며, 유체의 운동은 수식 1 및 수식 2와 같은 Navier-Stokes 공식으로 표현할 수 있다.
[수 1]
Figure 112014005877679-pat00001
[수 2]
Figure 112014005877679-pat00002
수식 1 및 수식 2에서
Figure 112014005877679-pat00003
는 속도,
Figure 112014005877679-pat00004
는 압력,
Figure 112014005877679-pat00005
는 밀도,
Figure 112014005877679-pat00006
는 중력이나 외부에서 가해진 힘이다.
Figure 112014005877679-pat00007
Figure 112014005877679-pat00008
의 시간 동안
Figure 112014005877679-pat00009
으로 갱신된다.
비압축성을 나타내는 수식 2 조건을 만족시키기 위하여 Chorin의 Projection기법을 적용할 수 있으며, 수식 1은 수식 3 및 수식 4로 분해될 수 있다.
[수 3]
Figure 112014005877679-pat00010
[수 4]
Figure 112014005877679-pat00011
Figure 112014005877679-pat00012
으로 부터
Figure 112014005877679-pat00013
을 얻기 위해, 수식 3에서
Figure 112014005877679-pat00014
Figure 112014005877679-pat00015
를 계산한 후,
Figure 112014005877679-pat00016
를 계산하고 수식 4에서
Figure 112014005877679-pat00017
로 부터 비압축성을 만족하는
Figure 112014005877679-pat00018
를 계산해 낼 수 있다.
본 발명의 실시례에 따른 유체 시뮬레이션 기법에서는 시뮬레이션의 안정성을 높이기 위하여 S120의 레벨셋 및 속도장 갱신 단계에서의 격자 기반 유체 시뮬레이션의 이류(advection)과정에 반 라그랑지안 이류 기법이 적용될 수 있음은 앞서 설명한 바와 같다. 본 발명의 실시례에 따른 유체 시뮬레이션 방법은 FLIP 파티클의 이류를 통해 값을 보완하므로 일반적인 격자 기반 유체 이류의 수치적 소실을 최소화할 수 있다.
본 발명의 실시례에 따른 유체 시뮬레이션 방법에서 격자기반 유체를 표현하기 위해 레벨셋 기법을 사용한다. 레벨셋 기법과 관련한 상세내용은 'S. Osher and R. Fedkiw, Level set methods and dynamic implicit surfaces. Springer Verlag, 2003, vol. 153.'를 참조할 수 있다.
레벨셋은 격자의 점들이 유체 표면으로부터의 거리 값
Figure 112014005877679-pat00019
를 가질 때, 속도장
Figure 112014005877679-pat00020
에 의한 움직임은 수식 5와 같이 나타낼 수 있다.
[수 5]
Figure 112014005877679-pat00021
레벨셋의 효율성을 고려하여, 레벨셋 표면을 기준으로
Figure 112014005877679-pat00022
(
Figure 112014005877679-pat00023
는 격자점 한 칸의 간격)만큼의 영역에서 만속도
Figure 112014005877679-pat00024
에 의한 이류가 이뤄지도록 하고 레벨셋의 이류에 대하여 반 라그랑지안 이류 기법을 적용한다. 이 과정에서 레벨셋의 거리 값
Figure 112014005877679-pat00025
이 소실될 수 있기 때문에 FSM(Fast Sweeping Method)을 적용하여 레벨셋을 재구성(Reinitialize) 한다. FSM에 대한 상세 사항은 'H. Zhao, “A fast sweeping method for eikonal equations,” Mathematics of computation, vol. 74, no. 250, pp. 603?627, 2005.'를 참조할 수 있다.
[수 6]
Figure 112014005877679-pat00026
수식 6은 레벨셋의 노말을 계산하는 식으로서,
Figure 112014005877679-pat00027
은 유체 표면으로부터 수직인 벡터(법선 벡터, normal vector)를 의미한다. 본 발명의 실시례에 따른 유체 시뮬레이션 방법에서 파티클은 레벨셋의 법선 벡터 정보인
Figure 112014005877679-pat00028
을 가질 수 있으며, 레벨셋의 표면을 재구성하는 과정에서
Figure 112014005877679-pat00029
을 사용한다. 따라서, S130에서 레벨셋 및 속도장을 재구성하는 단계는 재구성된 레벨셋의 법선 벡터를 새로 계산하여
Figure 112014005877679-pat00030
을 갱신하는 과정을 거칠 수 있다.
FLIP은 전통적인 격자 기반 기법의 유체 이류 대신 PIC의 파티클 기반 기법의 유체 이류를 사용하여 유체 이류시 발생하는 손실을 최소화하는 기법이다. 또한 유체의 비압축성을 만족하기 위해 FLIP의 속도를 격자로 투영해서 속도장을 구성하고, Chorin의 Projection 기법을 사용해 속도장의 비압축성을 유지한다. Chorin의 Projection 기법의 상세 사항은 A. J. Chorin, 'A numerical method for solving incompressible viscous flow problems,' Journal of computational physics, vol. 2, no. 1, pp. 12?26, 1967. 를 참조할 수 있다.
본래 FLIP의 속도와 프로젝션 후의 속도의 차이를 나타내는 속도장에서 보간된 속도를 파티클에 적용하여 FLIP 파티클들의 비압축성을 유지할 수 있다.
본 발명의 실시례에 따른 유체 시뮬레이션 방법에서는 복수의 영역으로 구별하여 영역별로 파티클을 상이하게 할당할 수 있다.
도 2 및 도 3은 각각 종래의 파티클 할당 방법과 본 발명의 실시례에 따른 유체 시뮬레이션 방법에서의 파티클 할당 방법을 나타낸 것이다.
도 2을 참조하면, 유체 표면(surface)을 기준으로 유체 표면 외부와 내부로 구분되며, 유체 표면 내부에 파티클이 할당되어 있음을 볼 수 있다.
이에 반하여, 도 3의 경우 유체 표면 내부에 FLIP 층(320)과 PIC 층(330)을 두어 310, 320, 330 및 340의 네 영역으로 구분되어 있음을 볼 수 있다. 본 발명의 실시례에 따른 유체 시뮬레이션 방법에서는 영역을 구분하고, 영역별 파티클 할당을 달리하여 유체 시뮬레이션 과정에서 요구되는 FLIP 파티클의 수를 줄일 수 있다.
보다 구체적인 실시의 일례에서 FLIP 파티클이 할당되는 영역으로 레벨셋 값
Figure 112014005877679-pat00031
가 0인 지점(유체의 표면)에서
Figure 112014005877679-pat00032
(
Figure 112014005877679-pat00033
는 격자점 한칸의 간격)인 지점에 이르는 얇은 층을 FLIP층으로 설정할 수 있다. 도 3과 같이 본 발명의 실시례에 따른 유체 시뮬레이션 방법에서 FLIP 파티클은 모두 FLIP 층(320)에 할당되어 사용될 수 있다. 이때, FLIP 파티클이 파티클 기반 이류로 FLIP 층을 벗어나게 되면, 지정된 설정에 따라 다르게 처리해 줄 수 있다. 일례로 화려한 스플래쉬 효과를 부여하고자 하는 경우 레벨셋 표면 밖으로 날아가는 FLIP 파티클을 그냥 놓아 줄 수 있고, 반대로 평평한 물 표면을 원한다면 인위적으로 레벨셋 안쪽으로 FLIP 파티클을 끌어올 수 있다.
FLIP 파티클이 물 표면 밖으로 벗어나면 310의 영역에서 중력의 영향을 받으며 자체속도로 움직이게 되고, FLIP 파티클이 FLIP 층(320)에서 물 안쪽으로 벗어난다면 PIC 층(330)의 PIC 파티클로 취급한다. 즉,
Figure 112015011732554-pat00034
에서
Figure 112015011732554-pat00035
까지의 영역(PIC 층, 330)에서 파티클이 PIC 성질을 갖게 되고,
Figure 112015011732554-pat00036
이하의 영역(340)에서는 파티클을 삭제-파티클을 할당하지 아니함-하도록 했다. 결국, 본 발명의 실시례에 따른 유체 시뮬레이션 방법에서 중력의 영향을 받으며 파티클이 자체적으로 운동하게 되는 층(310)과 FLIP 파티클의 층(320), PIC 파티클의 층(330), 및 파티클이 삭제되는 층(340)의 4개 영역으로 구분하여 시뮬레이션 할 수 있다. 도 1의 절차에서 파티클의 할당(S140), 프로젝션(S150), 파티클 속도 갱신(S160)은 영역별로 이루어질 수 있다.
PIC 층의 PIC 파티클은 격자 기반의 속도로 운동하므로, FLIP 층(320) 아래를 PIC 층(330)으로 설정하여 FLIP 층(320)을 벗어난 파티클이 자연스럽게 레벨셋과 같은 속도로 움직이도록 할 수 있다.
이하에서 파티클 속도 갱신 단계(S160)에 대하여 상세히 설명한다.
FLIP 파티클의 상호 참조 없이 파티클들의 비압축성을 유지하기 위해서는 우선 파티클의 속도를 격자상에 투영해줘야 한다.
[수 7]
Figure 112014005877679-pat00037
[수 8]
Figure 112014005877679-pat00038
FLIP 파티클로부터 수식 7을 통하여 FLIP 파티클의 격자 상의 속도를 결정할 수 있다.
Figure 112014005877679-pat00039
는 격자상에서의 속도를 의미하며
Figure 112014005877679-pat00040
는 각각의 FLIP 파티클의 속도이고
Figure 112014005877679-pat00041
는 FLIP 파티클이
Figure 112014005877679-pat00042
의 위치에 영향을 미치는 가중치이다. 가중치 값은 선형보간에 의해 계산될 수 있다.
수식 7에 의해 격자 상의 속도가 갱신되며, 본 발명의 실시례에 따른 유체 시뮬레이션 기법에서 FLIP 파티클은 레벨셋의 표면 부근(e.g. FLIP층)에만 존재하므로, 레벨셋 표면 근처의 속도만 갱신할 수 있다.
본 발명의 실시례에 따른 유체 시뮬레이션 방법에는 레벨셋의 표면근처에 존재하는 속도를 표면 밖으로 확장하여 사용할 수 있다. 레벨셋의 표면 근처에 존재하는 속도를 표면 밖으로 확장하여 사용하는 방법으로 D. Adalsteinsson and J. A. Sethian이 제안한 'The fast construction of extension velocities in level set methods,' (Journal of Computational Physics, vol. 148, no. 1, pp. 2?22, 1999.)가 참조될 수 있다.
수식 7에 의해
Figure 112014005877679-pat00043
가 갱신되면, 프로젝션 과정(S150)을 거쳐 비압축성이 적용된 속도장
Figure 112014005877679-pat00044
를 얻어낸다. 수식 8에서는 각각의 FLIP 파티클의 속도를 갱신하게 되는데,
Figure 112014005877679-pat00045
는 파티클의 속도를 의미하며
Figure 112014005877679-pat00046
는 파티클의 위치를 뜻한다.
Figure 112014005877679-pat00047
항을 통해 프로젝션 전후의 속도 차이를 확인 할 수 있고, 얼마만큼의 속도를 파티클에 적용해야만 FLIP 파티클의 비압축성을 유지 할 수 있는지 알 수 있다.
Figure 112014005877679-pat00048
Figure 112014005877679-pat00049
에 의해 결정된다.
Figure 112014005877679-pat00050
는 0에서 1의 값을 가지며
Figure 112014005877679-pat00051
의 값이 커지면 FLIP 파티클로서의 속도 비중이 높아지고,
Figure 112014005877679-pat00052
의 값이 작아지면
Figure 112014005877679-pat00053
의 속도 비중이 높아진다. 만약
Figure 112014005877679-pat00054
가 0이라면 FLIP 파티클의 속도는
Figure 112014005877679-pat00055
이므로 PIC 파티클과 같이 동작하게 된다. 따라서
Figure 112014005877679-pat00056
를 조절하여 FLIP과 PIC 파티클 사이의 속성을 조절 할 수 있다.
도 4의 알고리즘은 프로젝션 과정(S150)을 나타낸 것이며, 여기에서
Figure 112014005877679-pat00057
는 프로젝션 전후의 속도차를 의미한다. S160에서 파티클 속도의 갱신은 프로젝션 전후의 속도차
Figure 112014005877679-pat00058
를 이용하여 이루어 진다.
상술한 바와 같이 본 발명의 실시례에 따른 유체 시뮬레이션 방법에서는 4개의 층을 운용하고 있고 각 층에 존재하는 파티클들은 서로 다른 운동을 하고 있다. 따라서 각 층에서의 파티클의 처리과정은 서로 다를 수 있음은 앞서 설명한 바와 같다.
도 5의 알고리즘은 파티클의 이류가 이뤄지는 과정을 나타낸 것이다.
도 5의 알고리즘을 참조하면 FLIP 층에 위치한 파티클의 경우에만 Runge Kutta 2계 방법을 적용하여 위치를 갱신한다(line 4 내지 lin 6). FLIP층은 레벨셋의 표면에 해당하는 층이므로 Runge Kutta를 적용하여파티클이 이류할 때의 정밀도를 향상시킬 수 있다.
도 6의 알고리즘은 파티클의 속도를 갱신하는 과정을 나타낸 것이다.
도 6의 알고리즘에서 볼 수 있는 바와 같이 도 3의 310 영역의 경우(line 2, 3), 320 영역의 경우(line 4, 5), 330 영역의 경우(line 6, 7), 340 영역의 경우(line 8, 9)가 서로 다른 갱신 과정을 거침을 알 수 있다. 도 6의 알고리즘에서 ‘Free’은 물 밖의 층(도 3의 310 영역)에 존재하는 파티클을 의미하며 중력 가속도가 적용되어 속도를 갱신한다. 또한 파티클이
Figure 112014005877679-pat00059
이하로 벗어날 경우(도 3의 340 영역), 파티클을 삭제한다(파티클을 할당하지 아니한다).
본 발명의 실시례에 따른 유체 시뮬레이션 방법에서 한 격자점 당 30개의 파티클을 할당하였다. 이때, FLIP층에 속하는 격자점들은 각각 30개의 파티클을 유지해야 한다. 하지만 파티클의 이류가 진행되는 과정에서 FLIP 층의 격자점 안의 파티클의 개수가 일정하지 않은 상황이 발생하여 파티클의 개수가 지정된 개수보다 많거나 적은 격자점이 나타날 수 있다. 본 발명의 실시례에 따른 유체 시뮬레이션 방법에서는 격자점 안에서 무작위로 위치를 생성해 파티클을 추가하거나 무작위로 파티클을 선정하여 삭제하는 방식으로, 파티클의 개수를 지정된 개수로 조절할 수 있다.
이하에서는 도 1의 S130에서 레벨셋의 표면 재구성하는 방법에 대하여 보다 상세히 설명하기로 한다.
본 발명의 실시례에 따른 유체 시뮬레이션 방법에서는 레벨셋과 FLIP 파티클의 조합으로 레벨셋의 표면을 재구성할 수 있다. 이러한 재구성 방식은 FLIP 파티클을 이용해 부드러운 유체의 표면을 구성하는데 효과적이며, 파티클이 상세히 표현 되도록 하여, 원하는 만큼 유체의 표면을 부드럽게 만들 거나, 거칠게 만들 수 있다.
상술한 바와 같이 본 발명의 실시례에 따른 유체 시뮬레이션 방법은 파티클이 레벨셋의 정보를 가지고 있고, 그 정보를 활용하여 레벨셋 표면을 완전히 재구성하는 방식이다. 본 발명의 실시례에 따른 유체 시뮬레이션 방법에서 각각의 파티클은 거리 값
Figure 112014005877679-pat00060
와 노말 값
Figure 112014005877679-pat00061
의 레벨셋 정보를 가지고 있다.
레벨셋 표면의 재구성 과정은 격자점들의 중심점을 기준으로 한 FLIP 파티클의 평균 위치
Figure 112014005877679-pat00062
를 구하는 것으로 시작된다.
[수 9]
Figure 112014005877679-pat00063
[수 10]
Figure 112014005877679-pat00064
수식 9와 수식 10에서
Figure 112014005877679-pat00065
Figure 112014005877679-pat00066
의 위치를 중심으로 반경
Figure 112014005877679-pat00067
안에 포함된 FLIP의 위치를 의미한다.
Figure 112014005877679-pat00068
Figure 112014005877679-pat00069
의 위치에서
Figure 112014005877679-pat00070
에 영향을 미치는 가중치이다. 이때, 가중치 계산에는 Unit Spline Kernel 함수가 이용될 수 있다.
수식 10에서 격자점의 중심의 위치
Figure 112014005877679-pat00071
와 평균 파티클 위치
Figure 112014005877679-pat00072
와 반경
Figure 112014005877679-pat00073
의 값을 이용해 레벨셋 값
Figure 112014005877679-pat00074
를 얻을 수 있다. 하지만 수식 10을 적용한 재구성 방식은 파티클들이 촘촘하게 표면에 분포해 있지 않는 이상, 매끄러운 표면을 얻어내는 것은 불가능하다.
일반적으로 파티클 사이에 틈이 존재하기 때문에, 일반적인 표면 재구성 기법은 부드러운 유체의 표면을 얻어내지 못한다. 본 발명의 실시례에 따른 유체 시뮬레이션 방법에서는 이러한 단점을 보완하기 위해 FLIP 파티클에 레벨셋 정보를 부가하여 FLIP 파티클은 레벨 셋 정보를 가진다. FLIP 파티클이 레벨셋의 거리와 노말 값을 포함하고 있고, 레벨셋의 표면을 재구성하는데 레벨셋 정보를 사용하기 때문에, 다음의 과정을 거쳐 레벨셋의 부드러운 표면을 구성하는 것이 가능하게 된다.
도 7은 본 발명의 실시례에 따른 유체 시뮬레이션 방법에서 레벨셋의 표면을 재구성하는 방법을 나타낸 것이다.
레벨셋 표면을 재구성하는 방법은 평균 FLIP 파티클의 위치
Figure 112014005877679-pat00075
가 격자상의 위치
Figure 112014005877679-pat00076
에 영향을 미치는 가중치를 산정하는 가중치 산정 단계(S710), S710에서 산정된 가중치를 기반으로 새로운 가중치를 산정하는 가중치 갱신 단계(S720), 파티클이 X의 위치에 영향을 줄 거리 값 산정하는 단계(S730), 위치 X로부터의 새로운 거리 값을 산정하는 단계(S740), 유체 표면으로부터의 거리 값 X 결정하는 단계(S750)을 포함할 수 있다. S710 내지 S750의 과정은 수식 11 내지 수식 16으로 나타낼 수 있다.
[수 11]
Figure 112014005877679-pat00077
[수 12]
Figure 112014005877679-pat00078
[수 13]
Figure 112014005877679-pat00079
[수 14]
Figure 112014005877679-pat00080
[수 15]
Figure 112014005877679-pat00081
[수 16]
Figure 112014005877679-pat00082
수식 11의
Figure 112014005877679-pat00083
는 평균 FLIP 파티클의 위치
Figure 112014005877679-pat00084
가 격자상의 위치
Figure 112014005877679-pat00085
에 영향을 미치는 가중치이다. 수식 11에서
Figure 112014005877679-pat00086
값을 조절하여 가중치 크기를 조절 할 수 있다.
수식 12는 새로운 가중치
Figure 112014005877679-pat00087
에 대한 계산식이다. 수식 12에서
Figure 112014005877679-pat00088
는 각각 파티클이 가지고 있는 노말을 뜻한다. 파티클의 평균 위치
Figure 112014005877679-pat00089
에서
Figure 112014005877679-pat00090
로 향하는 벡터와
Figure 112014005877679-pat00091
벡터의 내적 연산을 사용해,
Figure 112014005877679-pat00092
에서
Figure 112014005877679-pat00093
로 향하는 벡터와 유사한 방향을 가질수록 파티클의 가중치를 증가시킨다. 수식 12에서 내적연산이 음의 값이 나온다면 파티클의 벡터는 다른 표면으로의 벡터이고 파티클이 가지고 있는 거리 값 역시 다른 표면으로부터의 거리 값이기 때문에, 가중치는 0이 되며 파티클은
Figure 112014005877679-pat00094
의 값을 계산하는데 아무런 영향을 주지 않는다.
FLIP 파티클로 부터 x 위치의 레벨셋 값을 계산하는 방법을 예시한 도 8을 참조하여 설명하면, 점
Figure 112014005877679-pat00095
는 표면 2(Surface2)에 가까운 점이므로 Surface2를 기준으로 한 거리 값과 노말 값을 가져야 한다. 따라서 표면 2를 기준으로 한
Figure 112014005877679-pat00096
Figure 112014005877679-pat00097
를 가진 파티클의 영향을 받아야
Figure 112014005877679-pat00098
는 정상적인 레벨셋 정보를 가질 수 있다. 수식 12를 적용하여 가중치를 계산한다면, 표면 2을 기준으로 하는 초록색 파티클의 가중치가 표면 1(Surface1)을 기준으로 하는 빨간색 파티클의 가중치보다 훨씬 높으므로
Figure 112014005877679-pat00099
는 표면 2를 기준으로 한 레벨셋 정보를 얻게된다.
파티클이
Figure 112014005877679-pat00100
의 위치에 영향을 줄 거리 값
Figure 112014005877679-pat00101
은 수식 13을 통해 얻을 수 있다. 수식 13에서
Figure 112014005877679-pat00102
Figure 112014005877679-pat00103
벡터에 투영된 거리를 의미한다.
Figure 112014005877679-pat00104
는 파티클이 가지고 유체 표면으로부터의 거리 값을 나타낸다.
Figure 112014005877679-pat00105
는 파티클이 가지고 있는 최소한의 깊이를 뜻하며, 이는 파티클 자체의 표면으로부터 중심까지의 거리를 의미한다. 파티클의 반지름이
Figure 112014005877679-pat00106
라고 한다면
Figure 112014005877679-pat00107
Figure 112014005877679-pat00108
가 된다.
본 발명의 일 실시례에서
Figure 112014005877679-pat00109
Figure 112014005877679-pat00110
로 사용하였고
Figure 112014005877679-pat00111
Figure 112014005877679-pat00112
를 비교하여 유체 표면으로부터의 가장 깊은 수심의 거리를 구한다. 그 수심의 최소 거리 값을 기준으로
Figure 112014005877679-pat00113
로부터 유체 표면의 거리 값인
Figure 112014005877679-pat00114
를 계산하게 된다.
수식 14에서는
Figure 112014005877679-pat00115
에 대해 각 파티클마다
Figure 112014005877679-pat00116
와 가중치
Figure 112014005877679-pat00117
를 적용해
Figure 112014005877679-pat00118
에서부터 물의 표면까지의 새로운 거리 값
Figure 112014005877679-pat00119
를 계산한다.
수식 15에서는 최종적으로
Figure 112014005877679-pat00120
에서 물 표면까지의 거리 값
Figure 112014005877679-pat00121
를 결정하게 되는데,
Figure 112014005877679-pat00122
위치에서의 본래 거리 값
Figure 112014005877679-pat00123
와 파티클에 의해 새로 계산된 거리 값
Figure 112014005877679-pat00124
가 혼합되어 값이 결정된다.
Figure 112014005877679-pat00125
Figure 112014005877679-pat00126
Figure 112014005877679-pat00127
의 비율이 결정하는 변수이고 0에서 1사이의 값을 갖는다. 여기에서
Figure 112014005877679-pat00128
값은 다양한 방식으로 선택될 수 있으며, 일례로 유체의 속도에 기반하여
Figure 112014005877679-pat00129
값을 선택할 수 있다.
수식 16에서 유체의 속도에 기반하여
Figure 112014005877679-pat00130
값을 계산한다.
Figure 112014005877679-pat00131
Figure 112014005877679-pat00132
위치에서의 물의 속도를 의미하며,
Figure 112014005877679-pat00133
는 지정된 최대속도,
Figure 112014005877679-pat00134
는 최대
Figure 112014005877679-pat00135
의 최대 값을 나타낸다.
Figure 112014005877679-pat00136
Figure 112014005877679-pat00137
의 값을 계산하게 되고, 계산된
Figure 112014005877679-pat00138
Figure 112014005877679-pat00139
를 초과 할 수 없다. 수식 16를 이용해
Figure 112014005877679-pat00140
값을 계산하게 되면, 유속이 낮는 곳에서의
Figure 112014005877679-pat00141
값은 낮아지므로 수식 15에서
Figure 112014005877679-pat00142
가 더 많은 비중을 차지하게 된다. 결국 FLIP 파티클에 의한 레벨셋 변형이 적어져 본래의 레벨셋 값을 유지하려는 경향이 강해지면서 부드러운 표면을 얻어낼 수 있다. 반대로 유속이 빠른곳에서는
Figure 112014005877679-pat00143
의 값이 증가하면서
Figure 112014005877679-pat00144
의 비중이 증가하므로 FLIP 파티클에 의해 레벨셋이 재계산되기 때문에 거친 물의 표면을 얻어낼 수 있다. 정리하면,
Figure 112014005877679-pat00145
변수를 통해
Figure 112014005877679-pat00146
Figure 112014005877679-pat00147
의 비중을 조절하여 속도에 따른 물의 규모를 다양하게 조절 할 수 있다.
도 9의 알고리즘은 상술한 레벨셋 표면 재구성 과정을 나타낸 것이다.
격자기반 유체시뮬레이션에서는 격자의 해상도가 높을수록 더 좋은 품질의 시뮬레이션 결과를 얻을 수 있다. 하지만 고해상도의 시뮬레이션 환경은 컴퓨터의 많은 계산량과 자원을 요구하기 때문에 성능 저하와 낮은 생산성을 야기한다. 업샘플링은 이를 극복하기 위한 기술 중 하나로 저해상도의 데이터에서 값을 보간하여 고해상도의 데이터로 확장하는 기술이다.
본 발명의 실시례에 따른 유체 시뮬레이션 방법에서는 앞서 설명한 레벨셋 표면 재구성 방법에 업샘플링 기법을 추가하여 시뮬레이션의 품질을 향상시킬 수 있다. 레벨셋 표면 재구성을 진행하기 전에 레벨셋과 속도장을 선형 보간법을 적용해, 업샘플링 과정을 거치고 업샘플링된 레벨셋과 속도장을 사용하여 수식 11 내지 수식 15의 과정을 수행한다. 이후 업샘플링된 격자상에서 재구성된 레벨셋과 속도장을 얻게되면 다시 선형보간법을 적용해 다운 샘플링한다. 그러면 최종적으로
Figure 112014005877679-pat00148
Figure 112014005877679-pat00149
를 계산하게 된다.
도 10의 알고리즘은 상술한 업샘플링 기법을 추가하여 시뮬레이션의 품질을 향상시키는 방법의 일례를 나타낸 것이다.
본 발명의 실시례에 따른 업샘플링 기법은 단순히 선형보간을 통한 업샘플링 방식이 아니라 파티클에 의해 레벨셋의 표면 근처가 샘플링되기 때문에 격자의 해상도가 높을 수록, 파티클을 정밀하게 잡아냄으로 레벨셋의 품질을 향상 시킬수 있으며, 향상된 데이터를 다시 다운 샘플링하여 시뮬레이션에 적용하여 전체적으로 시뮬레이션의 품질을 높일 수 있다.
한편, 본 발명의 실시예에 따른 유체 시뮬레이션 방법은 다양한 전자적으로 정보를 처리하는 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 저장 매체에 기록될 수 있다. 저장 매체는 프로그램 명령, 데이터 파일, 데이터 구조등을 단독으로 또는 조합하여 포함할 수 있다.
저장 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 소프트웨어 분야 당업자에게 공지되어 사용 가능한 것일 수도 있다. 저장 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media) 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 또한 상술한 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 전자적으로 정보를 처리하는 장치, 예를 들어, 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 상술한 본 발명의 실시례에 따른 유체 시뮬레이션 방법의 각 단계를 시행하도록 설정된 프로세서를 포함할 수 있다.
상술한 실시례들은 다양한 양태의 예시들을 포함한다. 다양한 양태들을 나타내기 위한 모든 가능한 조합을 기술할 수는 없지만, 해당 기술 분야의 통상의 지식을 가진 자는 다른 조합이 가능함을 인식할 수 있을 것이다. 따라서, 본 발명은 이하의 특허청구범위 내에 속하는 모든 다른 교체, 수정 및 변경을 포함한다고 할 것이다.

Claims (10)

  1. 유체 시뮬레이션 방법에 있어서,
    시뮬레이션 대상에 대한 레벨 셋 및 속도장의 초기 조건을 설정하고, 설정된 상기 레벨 셋의 초기 조건 및 상기 속도장의 초기 조건에 따라 FLIP 파티클을 설정하는 초기 설정 단계;
    상기 레벨 셋 및 상기 속도장을 이류시켜 갱신된 레벨 셋 및 갱신된 속도장을 생성하는 갱신 단계;
    상기 갱신된 레벨 셋 및 상기 갱신된 속도장을 재구성하는 재구성 단계;
    상기 시뮬레이션 대상에 대하여 상기 FLIP 파티클을 할당하는 할당 단계;
    상기 갱신된 속도장이 비 압축성을 갖도록 하는 프로젝션 단계; 및
    상기 할당된 파티클 각각의 속도를 업데이트 하는 속도 갱신 단계;를 포함하는 유체 시뮬레이션 방법.
  2. 제1 항에 있어서, 상기 할당 단계는,
    상기 시뮬레이션 대상을 4개의 영역으로 구분하고,
    상기 4개의 영역 각각에 대하여 상기 FLIP 파티클을 할당하는 유체 시뮬레이션 방법.
  3. 제2 항에 있어서,
    상기 4개의 영역은
    유체 표면을 기준으로 중력의 영향을 받는 외부 영역인 제1 영역, 유체 표면 내부에 유체 표면으로부터 일정한 간격을 갖는 층으로 형성되는 제2 영역, 상기 제2 영역 하부에 일정한 간격을 갖는 층으로 형성되는 제3 영역 및 상기 제3 영역 하부에 형성되는 제4 영역으로 구성되는 유체 시뮬레이션 방법.
  4. 제3 항에 있어서,
    상기 제2 영역에는 FLIP 파티클이 할당되고, 상기 제4 영역에는 FLIP 파티클이 할당되지 아니하는 유체 시뮬레이션 방법.
  5. 제1 항에 있어서,
    상기 FLIP 파티클 각각은 레벨 셋 정보를 갖는 유체 시뮬레이션 방법.
  6. 제5 항에 있어서,
    상기 레벨 셋 정보는 상기 레벨 셋의 값(value), 상기 레벨 셋 값의 미분 값 및 상기 속도장의 값을 포함하는 유체 시뮬레이션 방법.
  7. 제6 항에 있어서,
    상기 갱신된 레벨 셋 및 상기 갱신된 속도장의 재구성은 상기 FLIP 파티클에 저장된 상기 레벨 셋 정보에 기반하여 이루어지는 유체 시뮬레이션 방법.
  8. 제1 항에 있어서,
    상기 속도 갱신 단계에서, 상기 할당된 파티클 각각의 속도는 상기 프로젝션 단계 전 후의 상기 FLIP 파티클 각각의 격자 상의 속도의 차를 기반으로 갱신되는 유체 시뮬레이션 방법.
  9. 유체 시뮬레이션 방법을 수행하는 프로그램이 기록된 컴퓨터 읽을 수 있는 기록 매체에 있어서, 상기 유체 시뮬레이션 방법은:
    시뮬레이션 대상에 대한 레벨 셋 및 속도장의 초기 조건을 설정하고, 설정된 상기 레벨 셋의 초기 조건 및 상기 속도장의 초기 조건에 따라 FLIP 파티클을 설정하는 초기 설정 단계;
    상기 레벨 셋 및 상기 속도장을 이류시켜 갱신된 레벨 셋 및 갱신된 속도장을 생성하는 갱신 단계;
    상기 갱신된 레벨 셋 및 상기 갱신된 속도장을 재구성하는 재구성 단계;
    상기 시뮬레이션 대상에 대하여 상기 FLIP 파티클을 할당 하는 할당 단계;
    상기 갱신된 속도장이 비 압축성을 갖도록 하는 프로젝션 단계; 및
    상기 할당된 파티클 각각의 속도를 업데이트 하는 속도 갱신 단계;를 포함하는 컴퓨터 읽을 수 있는 기록 매체.
  10. 프로세서를 포함하는 유체 시뮬레이션 장치에 있어서, 상기 프로세서는:
    시뮬레이션 대상에 대한 레벨 셋 및 속도장의 초기 조건을 설정하고,
    설정된 상기 레벨 셋의 초기 조건 및 상기 속도장의 초기 조건에 따라 FLIP 파티클을 설정하고,
    상기 레벨 셋 및 상기 속도장을 이류시켜 갱신된 레벨 셋 및 갱신된 속도장을 생성하고,
    상기 갱신된 레벨 셋 및 상기 갱신된 속도장을 재구성하고,
    상기 시뮬레이션 대상에 대하여 상기 FLIP 파티클을 할당 하고,
    상기 갱신된 속도장이 비 압축성을 갖도록 하는 프로젝션하고,
    상기 할당된 파티클 각각의 속도를 업데이트 하도록 설정된 유체 시뮬레이션 장치.
KR1020140006947A 2014-01-20 2014-01-20 유체 시뮬레이션 방법 및 장치 KR101514806B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140006947A KR101514806B1 (ko) 2014-01-20 2014-01-20 유체 시뮬레이션 방법 및 장치
US14/168,314 US9111056B2 (en) 2014-01-20 2014-01-30 Method and apparatus of fluid simulation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140006947A KR101514806B1 (ko) 2014-01-20 2014-01-20 유체 시뮬레이션 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101514806B1 true KR101514806B1 (ko) 2015-04-24

Family

ID=53054004

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140006947A KR101514806B1 (ko) 2014-01-20 2014-01-20 유체 시뮬레이션 방법 및 장치

Country Status (2)

Country Link
US (1) US9111056B2 (ko)
KR (1) KR101514806B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9881110B1 (en) * 2015-10-29 2018-01-30 Sohrab Mohajerin Apparatus and method for estimating and modeling turbulent flow
CN109359312B (zh) * 2018-08-01 2022-11-15 中国科学院软件研究所 一种干燥颗粒流实时仿真与交互方法
JP7012944B2 (ja) * 2018-10-11 2022-01-31 オムロン株式会社 シミュレーション装置、シミュレーション方法及びシミュレーションプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007114548A1 (en) * 2006-04-05 2007-10-11 Seoul National University Industry Foundation Method of simulating detailed movements of fluids using derivative particles
KR100779993B1 (ko) * 2006-05-24 2007-11-28 고려대학교 산학협력단 압력장에 제어값을 적용하는 유체 시뮬레이션 방법, 그기록 매체 및 그 장치
KR101244826B1 (ko) * 2011-03-04 2013-03-19 (주)에프엑스기어 격자와 입자의 상호 작용을 이용한 유체 시뮬레이션 시스템 및 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8055490B2 (en) * 2009-03-31 2011-11-08 Seoul National University Semi-Lagrangian CIP fluid solver without dimensional splitting

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007114548A1 (en) * 2006-04-05 2007-10-11 Seoul National University Industry Foundation Method of simulating detailed movements of fluids using derivative particles
KR100779993B1 (ko) * 2006-05-24 2007-11-28 고려대학교 산학협력단 압력장에 제어값을 적용하는 유체 시뮬레이션 방법, 그기록 매체 및 그 장치
KR101244826B1 (ko) * 2011-03-04 2013-03-19 (주)에프엑스기어 격자와 입자의 상호 작용을 이용한 유체 시뮬레이션 시스템 및 방법

Also Published As

Publication number Publication date
US20150205889A1 (en) 2015-07-23
US9111056B2 (en) 2015-08-18

Similar Documents

Publication Publication Date Title
US11127198B2 (en) Graphics processing using directional representations of lighting at probe positions within a scene
US10424112B2 (en) Mesh boundary smoothing
US9892549B2 (en) Adaptive rendering with linear predictions
JP7029283B2 (ja) 画像の補完
US8760449B1 (en) Multi-stage fire simulation
JP2019531537A (ja) 3dモデルを印刷するシステムおよび方法
US8953872B2 (en) Method for editing terrain data created by procedural terrain method
KR101514806B1 (ko) 유체 시뮬레이션 방법 및 장치
JP2023520019A (ja) グリッド経路発見に基づく回折モデリング
US9811941B1 (en) High resolution simulation of liquids
KR102459848B1 (ko) 입자에 기반하여 대상 객체를 고속으로 모델링하는 방법 및 장치
Akinci et al. Adaptive surface reconstruction for SPH using 3-level uniform grids
KR20140139194A (ko) 지형 모델의 생성 방법 및 장치
KR20080050271A (ko) 물 표면의 포말 생성 및 표현 장치와 그 방법
KR100743391B1 (ko) 입체 지형 시각화에 있어서 뷰포인트 조정을 이용한 개선된상세 레벨 선택 방법
CN109726431B (zh) 一种基于平均核函数和迭代密度变化率的自适应sph流体模拟方法
EP3619922A1 (en) Rendering audio objects having apparent size
US10922872B2 (en) Noise reduction on G-buffers for Monte Carlo filtering
Kravtsov et al. Embedded Implicit Stand‐Ins for Animated Meshes: A Case of Hybrid Modelling
Chowdhury et al. GPU-parallelisation of Haar wavelet-based grid resolution adaptation for fast finite volume modelling: application to shallow water flows
Flynn et al. Adaptive fluid simulation using a linear octree structure
US20120162226A1 (en) Fracture pattern generation apparatus and method for crumbling effect
Chango et al. GPU-accelerated rectangular decomposition for sound propagation modeling in 2D
Kim et al. Reconstructing flicker-free surfaces in hybrid particle-grid water simulation: Robust tracking of fluid surfaces using dual marching cubes
US8010330B1 (en) Extracting temporally coherent surfaces from particle systems

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180409

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190401

Year of fee payment: 5