트위터


2016/12/31 23:59

프롤로그 - (Update 20150304) 메인카테고리



닉네임 . Dsharp [D#, 디샵]

직업. 대학생

할줄 아는것. 숨쉬기

모자란것. 숨쉬기 (?!)


능력없는 한 학생이 넷상에서 개인자료 관리하고 주변 네티즌들과 소통하기 위해 생성된 이글루스의 한 이용자의 블로그입니다.
일단 나름 영상관련쪽으로 배우고는 있는데, 하라는 연습은 안하고 머릿속 자작영상에 대한 스토리 망상만 가득한 놈입니다.
생각만 해야지해야지. 몸은 어그적어그적. 이러면 안되는걸 알면서도 어그적어그적.

아래는 기본 스팩입니다.

 나름 규칙적인 생활중.
 일단 학생이다보니 평일 기상시간과 취침시간은 거의 비슷한 편.
 문제라면 취침시간이 되게 늦는데 그 원인은 컴퓨터와 스마트폰.

 다섯가지 항마력을 지니고 있음.
 하지만 그다지 전문적이진 않은 일상계 잡덕
 

 살짝 감성적 (이라 쓰고 남들보기 쓸데없는 눈물이 많다고 해석) 임.
 애니로 봤을 때 제일 많이 울었던 것은 "클라나드"
 영화로 봤을 때 제일 많이 울었던 것은 "각설탕"
 (이게 지금 몇년째 바뀌지 않고 있다..)

 장난기가 꽤 있음.
 오프라인상에서도 사람 낚는걸 즐김.
 물론 어느정도 수위는 지켜가면서.
 그래도 뭐 할려고 하면 최선을 다하는 쪽으로. (문제라면 한다는게 단기간 스퍼트의 경우이다..)

 고지식 (이라 쓰고 애늙은이라 해석) 적인 면이 좀 있음.
 심지어는 얼굴도 노안이어서 여친이나 결혼같은건
 일찍 포기한 채 생활중. (물론 생길지도 모른다는 희망도 있지만..)


 로리만세.



트위터 아이디 : @dsharp_ (update : 15.03.04)



이글루스 접속 일정

'앱게임해봤습니다' 쓰고 싶을때만..


앱해봤

- 도쿄카지노
- 각의 이슈타리아
- 닌쯔쿠 (nintsuku)


2016/10/20 15:58

list

곧 삭제 예정

2016/10/11 02:20

후디니 소형 물 이펙트 영상제작


(번역문입니다)
원문은 일본의 cgworld 에 수록된 내용이며, 저작권 또한 집필자인  cai inc. 에 있습니다.
어느쪽이든 삭제 요청이 확인되는대로 즉시 해당게시물을 내립니다.
© cai inc. All Rights Reserved.




Topic 01. FLIP Solveer의 설정.



Houdini 15에서 추가 된 Swirly Kernel을 사용

기본적인 FLIP 설치를 진행하면 FLIP Solver의 Velocity Transfer Swirly Kernel로 변경합니다.
Swirly Kernel은 기존의 Splashy Kernel 이외에 Houdini 15에서 추가되었습니다. 이것은 2015 년에 발표 된 The Affine Particle- in- Cell Method라는 논문을 기초로하고 있으며, 소용돌이가 손실되지않고 안정된 계산을 할 수 있습니다. Houdini 도움말에서 Splashy Kernel은 바다와 강 등의 대규모 것, Swirly Kernel은 작은 것들과 용암 같은 시뮬레이션에 적합하다고 설명되어 있습니다. 또한 FLIP Solver의 Use Preconditioner은 기본으로 ON으로되어 있습니다만, 도움말에서는 여러 코어 CPU로 계산하는 경우는 OFF가 더 좋은 성능이 나온다고 설명하고 있기 때문에 OFF로 해봅니다.


그림A : Swirly Kernel과 Use Preconditioner 설정. 설정 항목이 많은 찾기가 힘들지만 매번 전부를 만지는 것은 아니기 때문에 자신의 즐겨 찾기 장소는 눌러 둡시다
그림B : 위가 Swirl Kernel, 아래가 Splashy Kernel의 계산 결과. Splashy Kernel에서는 액체 에서 입자가 튀어 나올 것 같은 거동을 확인할 수 있지만 Swirly Kernel에서는 그것이 부족합니다.


--




Topic 02. 표면장력을 구현하자.


작은 규모의 물 표현에 필수적인 표면 장력

작은 규모의 경우 큰 장면에서는 눈에 띄지 않는 특징이 잘 나타나 있습니다. 그 중 하나가 표면 장력입니다. 표면 장력은 액체가 표면을 가능한 한 작게하려고하는 성질의 것으로, 일상 생활에서도 흔히 볼 수있는 현상입니다. 예를 들어 RealFlow는 처음부터 Surface Tension 매개 변수가 포함되어있어 이를 높임으로써 표면 장력을 강하게 할 수 있지만, Houdini의 FLIP Object와 FLIP Solver에 비슷한 매개 변수는 없습니다. Houdini에서 가장 쉽게 Surface Tension을 추가하려면 Gas Surface Tension DOP를 사용합니다. Gas Surface Tension는 microsolver 노드의 하나로, FLIP Solver에 기능 추가 같은 일을 할 수 있습니다. 이를 FLIP Solver의 Velocity Update에 추가하여 표면 장력의 효과를 만들 수 있습니다.

그림A,B : 표면 장력의 이미지. 컵에서 물이 쏟아져 나오지 않는 것도 마찬가지. 작은 스케일의 액체에서는 이러한 성질이 표정을 갖게하기에 매우 중요한 역할을합니다
그림C : 아주 간단한 FLIP 설정에 Gas Surface Tension을 추가 한 예. 다른 부분에 연결해서 생각 결과를 얻을 수없는 경우가 있으므로 요주의
그림D : 시간에이 표면 장력이없는 경우, 아래가 표면 장력을 추가했습니다. 입자가 모여 물방울과 같은 형상이 형성되어 있습니다




--


Topic 03. microsolver란?



개별 microsolver을 함께 해법을 구축한다.


방금 FLIP Solver에 추가 한 Gas Surface Tension는 micro solver의 하나로, microsolver은 FLIP Solver와 Pyro Solver 같은 큰 해법을 만들기위한 부품입니다. 시뮬에 FLIP Solver 속을 열어 보면 엄청난 수의 노드를 확인할 수있을 것입니다. 이들 대부분이 microsolver이며, 각각 FLIP Solver 처리 부분을 담당하고 있습니다.

FLIP Solver는 4 개의 input이 여기에 노드를 추가하여 중간 처리를 끼울 수 있습니다. 이들은 각각 평가되는 타이밍이 다르기 때문에 잘못된 곳에 노드를 꽃을 경우 결과가 나오지 않을 수 있으므로주의가 필요합니다. microsolver와 접촉하여 방금 전의 표면 장력을 Gas Surface Tension을 사용하지 않고 추가해봅시다.

먼저 오른쪽의 그림과 같이 노드를 짭니다. 사용하는 노드는 Gas Match Field. Gas Analysis. Gas Field Wrangle의 3 종류입니다. Gas Match Field는 참조에 지정된 필드를 기반으로 새로운 필드를 생성 할 수있는 노드입니다. 기타 크기 조정이나 리샘플링 등의 기능도 갖추고 있습니다 만, 주로 필드를 복제하는 데 사용하는 경우가 많습니다.

Gas Match Field에서 만드는 필드는 density. temperature, vel 등의 유체 자체를 나타내는 중요한 데이터와는 달리 임시 데이터로 사용되는 경우가 대부분입니다. 여기에서는 surface와 vel를 복제하고 각각 curvature. gradient했습니다. curvature는 float를 저장하기 때문에 surface를 gradient는 vector를 저장하기 때문에 vel를 참조했습니다.

Gas Analysis는 Source Field에 지정된 필드를 분석하고 Dest Field에 지정된 필드에 그 결과를 저장합니다. SOP에서도 Volume Analysis와 VDB Analysis 등에서 같은 처리 할 수 ​​있습니다. 이번에는 Surface의 Gradient을 gradient에 Surface의 Curvature를 curvature에 저장했습니다. Gradient는 Surface의 기울기를 가져옵니다. 이것은 액체 표면의 법선에 해당합니다. Curvature 곡률입니다. 이것을 사용하면 액체의 계면 부분이 얻을 수 있습니다. 기울기는 3 차원적인 정보이므로 vector 곡률은 1 차원적인 정보이므로 float입니다. 이렇게 만들어진 curvature. gradient 값은 Gas Field Wrangle에서 vel 필드에 표면 장력을 추가 할 때 사용됩니다.

마지막으로 Gas Field Wrangle을 사용하여 직접 필드에 액세스하고 vel 값을 편집합니다. Gas Field Wrangle는 Volume Wrangle의 DOP 버전에서 필드의 값을 편집 할 때 사용합니다. 비슷한 노드에서 Geometry Wrangle이라는 것이 있는데, 이것은 Point Wrangle SOP 등에 해당하는 것으로, 필드의 값을 만지는 것은 불가능하므로주의하십시오. POP Wrangle도 내용은 Geometry Wrangle가 사용되고 있기 때문에 마찬가지로주의가 필요합니다.

또한 이번 예에서는 사용하지 않지만 Gas Blur 등을 사용하여 gradient 필드에 블러를 걸어 구배의 변화를 완만하게 해 준다 것도 더 매끄러운 표면 장력의 결과를 얻으려면 유효합니다. 마찬가지로 Gas Blur를 vel 대해 조금 걸어주는 것이 viscocity을 준 같은 결과를 얻을 수 있습니다 FLIP의 viscocity 조금 값도 상당히 강하게 작용 해 버리는 경우가 많기 때문에 조금 점성라면 Gas Blur 분들이 부담없이 처리 할 수 ​​있습니다.




그림 상 : FLIP Solver의 내용. FLIP Solver는 다수의 microsolver로 만들어진 Digital Asset. 오른쪽 클릭 메뉴에서 Allow Editing Contents를 실행하면 내용을 편집 할 수 있습니다.

그림 중 : gradient, curvature의 각 필드의 데이터를 가시화 한 예. 설명을 위해 더미 객체를 사용하고 있습니다. 상단 왼쪽에서 원래의 형상 형상을 SDF 변한 것, 시각화를위한 포인트 클라우드. 하단 2 개는 이들을 이용하여 gradient. curvature를 시각화 한 것으로, 왼쪽이 gradient, 오른쪽이 curvature. gradient는 형상의 법선을 나타낸 같은 데이터가 있습니다 만, 지오메트리의 뒷면에 법선과 반대 측의 방향에 경사가 부여되어 있습니다. 사진에서 희미하게 확인할 수있는 검은 성분이 그것입니다 curvature은 곡률이 높은 곳에서 큰 값을 확인할 수 있습니다. 어둡고 우울 곳은 음수가있는 곳에서 curvature가 작다는 것은 아닙니다. 또한 둘 다 표면 근처에만 값이 존재하고 볼륨 내부는 거의 제로 또는 그것에 가까운 값으로되어있는 것을 알 수 있습니다.

그림 하 : Gas Match Field에서 추가 된 데이터는 Geometry Spreadsheet의 Solver 다음의 깊은 곳에서 확인할 수 있습니다 density나 vel 등 Flip Object에서 만들어진 필드처럼 알기 쉬운 장소에 존재하는 것은 아니지만뿐만 아니라 데이터 가 존재하고있는 것을 알 수 있습니다. 자주 확인해야 할 부분은 아니지만 스스로 해법을 생성하거나 수정 등하고 싶을 때 특히 지식으로 기억해두면 안심입니다.

그림 결과 : mlcro solver를 사용하여 구축 한 표면 장력 설정. 앞의 예와 비교하면 매우 많은 노드를 사용하고 있습니다 만, 처음부터 모든 것을 스스로 구축 할 수 있기 때문에 자신의 방법을 구축하는 것도 가능합니다.






---


Topic 04. SOP Solver를 사용하자


microsolver없이 표면 장력의 추가 방법.

앞 페이지에서 microsolver를 사용하여 표면 장력의 추가를 실시했지만, SOP Solver를 사용하면 익숙한 SOP에서 필드를 편집 할 수 있습니다. SOP Solver의 장점은 SOP에서 할 수있는 일은 무엇이든 할 수 있다는 것입니다. Geometry VOP. Wrangle 등의 등장으로 활약의 장소는 이전보다 다소 줄어든 것도 사실이지만, 역시 SOP Solver 없어서는 안될 존재입니다. 생각했던 방법을 사용할 수 없을 때 등 만일의 경우에 의지합니다.


그림 좌 : SOP Solver를 사용하여 Surface Tension을 추가 surface 필드를 가져오고 VDB으로 변환 한 후 VDB Analysis에서 gradient와 curvature를 만듭니다. 마지막으로 Volume Wrangle를 사용하여 다른에서 가져왔다 vel 필드를 편집. 일반적으로 만지고있는 SOP에서 데이터를 편집 할 수있을뿐만 아니라 값의 시각화 등을 쉽게 할 수 있기 때문에 사용이 편리합니다




---


Topic 05. 수막 (물의 막) 을 만들자


간이 Sheeter 추가하여 원하는대로 막을 만들자

시뮬레이션을 행하고 있다고 막처럼 번지고 원하는 장소에 본래 싶지 않아 구멍이 뚫려 버리거나 근육처럼 뻗어 원하는 곳에이 분단되고, 레 솔루션을 아무리 올려도 해결 않은 문제가 나타납니다.

RealFlow는 Sheeter 데몬이라는 것이 있는데, 이것을 사용하면 얇은 막 같은 것 같은 얇은 근육을 만들거나 할 수 있습니다. Houdini는 기본적으로 Sheeter 같은 것은 존재하지 않습니다 만, Geometry VOP wrangle을 사용하여 자기 부담의 Sheeter을 만들 수 있습니다. 그러나 실제로 Sheeter 상당의 물건을 만드는 것은 매우 어렵 기 때문에 이번에는 간단한 구현 예를 소개합니다.

액체 표면에 구멍이 교련은 구멍을 채울 정도로 입자가 없기 때문입니다. 그러나 이것은 레졸루션을 올렸 더니에서 충돌 객체의 형상 등에 의해 어쩔 도리가없는 경우가 있습니다. 그래서 간단하게 구멍이 있으면 묻어 버리는 작전을 취합니다. 주위의 파티클을 찾고 일정거리 내에 파티클이 존재하지 않으면 그 중간에 새로운 파티클을 추가하는 아주 간단한 방법을 시도합니다.

이번 편집하는 것은 필드가 아닌 Geometry이므로 Geometry Wrangle을 사용합니다. 사용법은 Point Wrangle과 거의 동일합니다. 추가 한 Geometry Wrangle은 FLIP Solver의 Input에 연결합니다. 이번에는 맨 오른쪽 Input4 : Sourcing으로 이었고요.



그림 상 : 상단이 그대로 시뮬레이션을 행한 것, 하단이 간이 Sheeter을 추가 한 것입니다. 아주 간단한 방법이지만 잘 막이 생성되어 있습니다. 또한이 예제에서는 Reseeding를 OFF. Separation를 ON으로하고 있습니다 Separation를 사용함으로써 입자가 균등하게 배치되어 매끄러운 표면이 만들어집니다.

그림 하 : 파라미터는 정상에서 검색하는 파티클의 최대 수와 범위, 포인트를 추가하는 거리의 임계 ​​값 Max Radius는 FLIP Object의 Particle Separation의 4 배, Max Gap Distance는 1.5 배 정도가되도록 설정되어 있습니다.


---


Topic 06. Collision의 설정



두 가지 방법을 경우에 따라 구분


FLIP에서 충돌을하려면 Source Volume을 사용하는 방법과 Static Object를 사용하는 방법이 일반적입니다. 게다가 Source Volume을 사용하여 Collision 필드를 설정하는 방법도 있지만 이것이라고 파티클과 개체의 충돌이 가미되지 않기 때문에 또는 정밀도가 좋지 않습니다. Collision 같은 분위기가 나와 있으면 OK라고하는 것이면 충분히 사용할 수 있다고 생각 합니다만, 기본적으로 Static Object를 사용하는 것이 쉽게 정밀한 충돌이 될 수 있습니다.

일반적 FLIP Solver는 Particle Separation에서 지정한 값에서 각종 필드의 해상도가 결정되지만 Collision Separation를 ON으로하여 collision 필드의 해상도는 별도로 설정할 수 있습니다. 여기의 값을 충분히 작게 해 준다하여 FLIP의 해상도를 높일 수없이 충돌의 정확도를 높일 수 있습니다.

Source Volume에 충돌 할 때 FLIP Solver의 Particle Collision을 Move Outside Collision로 설정합니다. 기본 Particle은 실제로 존재하는 DOP Object에서만 의미가 없기 때문에 필드 만 충돌하는 경우에는 빠른 Move Outside Collision를 추천합니다.



그림A : 위가 Source Volume에서 collision을 가져온 경우, 아래가 Static Object를 작성한 결과입니다. 대략적인 충돌 판정은 할 수 있지만 엄격한 것을 다루는 것은 어려울 것

그림B : Collision Separation을 설정하면 Particle Separation와 관계없이 collision Field의 해상도를 결정 할 수 있습니다. 고해상도되면 시뮬레이션 시간은 늘어나므로 요주의





--


총괄

microsolver을 사용하여 자신이 만든 싶은 결과를 위해 매우 유연한 접근 방식을 취할 수있게됩니다. 이번에 소개 한 두 일례에 지나지 않지만 microsolver에 그다지 익숙하지 않은 분들이 도전하기에 좋은 소재가 아닌가 생각합니다. 사실 Surface Tension는 다음 버전의 Houdini에서 지원 예정임을 SIGGRAPH 2016 SideFX 부스 표명했습니다. 그래서 타이밍으로이 재료를 채택하는 것은 사실 미묘한 뻔 했습니다만, microsolver에 닿는 소재로 뛰어 때문에 다루기로했습니다.

microsolver 아무것도 FLIP 만의 것이 아닙니다. Pyro Solver 등으로도 사용 가능하며, 극단적 인 이야기 Pyro의 계산에 표면 장력을주는 것도 가능합니다. 자신이 얻고 싶은 결과를위한 방법이 생각 나면, 나머지는 구현하면됩니다. 기타 도구는 그렇게 간단한 이야기는 아닐지 모르지만, Houdini는 그 환경이 준비되어 있습니다. 꼭 요청에 따라 시뮬레이션을 사용자 정의하여보십시오. 만약 너무 해 버려서 결과에서 멀어져 버린 경우에도 Houdini는 바로 이전 상태로 돌아갈 수 있기 때문에 안심하고 시행 착오를 겪어봅시다.

1 2 3 4 5 6 7 8 9 10 다음