본문 바로가기

Houdini

[Udemy] 25강. Dual Surface (Delaunay & Voronoi)

** 전체 과정을 전부 다 적어보겠다 **

 

이번 강의에서는 이런 형태의 Organic Shape를 만들었다. 거의 다 새롭게 알게된 것이기 때문에 만드는 과정을 쭈욱 적어보겠음! 길어질 것 같아서 벌써 짜증난다

 

 

 

<그물 형태 만들기>

저 그물형태의 모양을 만드는 방법을 간단하게 써보면,

 

1. 삼각형 모양의 메시로 이루어진 오브젝트 생성

2. 삼각형 메시의 density를 noise를 이용해 불균형하게 만듦 (어떤 부분은 삼각형 메시 작고 밀집, 어떤 부분은 삼각형 크고 적음)

3. 이 밀도가 다른 삼각형 모양에서 보로노이 패턴을 만듦

4. 보로노이를 Subdivide해서 위 사진과 같은 부드러운 그물 모양을 만든다

 

라고 할 수 있다!

여기서 우선 알아두면 좋을 정보가 있다.

 

++ Delaunay Triangulation (들로네 삼각분할) & Voronoi Diagram

더보기

Delaunay 삼각형을 이용해 보로노이 패턴을 만들면 그물 모양을 만들 수 있다!

Delaunay Triangulation(들러니라고 읽던데 우리나라에서는 들로네?라고 하는 듯)과 Voronoi Diagram은 서로 밀접한 관련이 있다.

 

평면 위의 점들이 랜덤하게 흩뿌려져 있다고 생각해보자. 여기서 Delaunay Triangulation을 이용해서 이 점들을 삼각형 모양의 메시로 만들어줄 수 있다! 그럼 이때 삼각형은 어떻게 만드는가? Vertex를 아무렇게나 삼각형 모양으로 연결할까?

삼각형을 만들 때 법칙이 있다.

삼각형을 만들었을 때 그 삼각형의 외접원 안에 어떠한 Vertex도 있어서는 안된다는 것이다.

이것을 이용해서 Bowyer-Watson Algorithm을 통해 Vertex를 삼각형 메시로 만들어준다. 저 알고리즘은 몰라도 되지 않을까. 궁금하면 아래 링크 참고

https://youtu.be/GctAunEuHt4?si=O-bxafPgn1BjTcTV

더보기

 

그래서 Delaunay 삼각형의 외접원의 중심끼리 서로 연결하면 보로노이 패턴이 나온다! 삼각형 → 보로노이로 바꿔주는 기능은 다행히 후디니에서 기본적으로 제공한다!! 나중에 다시 설명하겠지만 그냥 Divide 노드를 쓰면 된다.

 

 

1. 삼각형 모양의 메시로 이루어진 오브젝트 생성

Sphere를 생성하고 Primitive Type을 Polygon으로 바꿔준다. 그러면 삼각형으로 이루어진 sphere가 생성된다. 여기서 Frequency를 높여서 각지지 않게 해보자 (강의에서는 30으로 설정!)

 

 

2. 삼각형 메시에 Noise를 입혀보자

더보기

그다음 PointVOP을 생성하자! 이게 뭔지 찾아보니깐 앞으로 많이 사용하게될 중요한 노드인 듯 하다

이 노드를 이용하여 sphere에 노이즈 패턴을 쫙 깔아주고 블랙 부분에는 삼각형 메시의 밀도가 작게, 흰색 부분에는 삼각형 메시의 밀도를 크게 만들어줄 것이다.

일단 PointVOP 노드를 더블클릭해서 타고 들어가자. 그럼 새로운 노드들이 나온다! 여기서 Anti-Aliased Noise 노드를 생성하자. 안티 에일리어싱은 외곽부분 부드럽게 해주는 건줄로만 알았는데 이런 노이즈가 따로 있는지 몰랐네..

어쨋든 geometryVOPglobal에서 P(position을 의미함)을 Anti-Aliased Noise의 pos에 연결해주자. 그리고 output을 geometryVOPoutput의 Cd(Color를 의미함)에 연결해보자. 그러면 sphere에 노이즈 패턴이 생겼을 것이다.

(좌) 노이즈가 색(Cd)로 들어간 모습 / (우) fit 노드

여기서 중요한 것은 Anti-Aliased Noise의 Output 값이 -0.5 ~ 0.5라는 것이다! 그래서 이를 -1 ~ 1로 바꿔주기 위해 Fit 노드를 추가하자. 언리얼의 RemapValueRange와 같은 기능이다.

Source Min / Max에는 input값의 min과 max인 -0.5와 0.5를 넣어주면 되고, Destination Min / Max에는 -1과 1을 적으면 remap된다.

그다음 여기 부분은 강의에는 없는 내용이다. 유튜브를 참고했음. fit을 최종 ouput의 Cd에 넣어보면 너무 흐리멍텅하다는 생각이 들어서 Ramp Parameter 노드를 추가했다. 포토샵의 Level 비슷한 기능처럼 쓸 수 있다.

노드의 Ramp Type를 원래 RGB로 되어있는데 Spline Ramp (float)로 바꿔주자. 그러면 완전히 까매진다! 왜냐면 Ramp 설정을 안해줬기 때문. PointVop 노드를 나가서 기본 Network 창에서 PointVOP를 클릭해보자. 그러면 아래에 Ramp Parameter가 있다. 여기서 커브를 내가 원하는대로 조절해보자.

(좌) Ramp 적용 전 / (우) Ramp 적용 후

(참고) https://youtu.be/RLgwcmwHgMk?si=F-rImci4B32EorLr

더보기

 

그다음 또또 중요한게 있음. Bind Output라는 노드임.

Bind 노드는 어떤 값을 Attribute로 만들어주는 노드임! Parameter말고 Attribute로 만들어줌. 파라미터는 MMB 클릭해서 Promote Parameter 눌러주면 디테일 창에 뜨게 됌. Bind가 있고 Bind Output이 있는데 그냥 바인드는 Attribute를 import 해주는 것임. 

아무튼 noise라는 Attribute를 만들어줬음. PointVOP노드를 MMB 클릭해서 정보를 보고 추가되었는지 확인해보자.

최종 Point VOP

 

 

 

3. Noise 색(검,흰)에 맞게 삼각형 메시의 밀도를 조절하자

더보기

그다음 Poly Reduce 노드를 추가하자 (위의 유튜브에서는 Remesh를 썼다)

Percent to Keep을 줄여서 메시 수를 좀 줄여보자. 여기서 아까 노이즈를 바탕으로 흰색 부분은 삼각형 메시 작고 밀집, 검정 부분은 삼각형 크고 적게 만들 것이다. 그러기 위해서는 Retain Density by Attribute 노드를 체크해주면 된다. Attribute에는 아까 Bind에서 만든 Attribute 이름을 적어주면 된다. 그리고 Weight를 키우자. 이것은 기본 메시가 Sphere냐 Torus냐 등에 따라 달라지는 것이기 때문에 중간에 메시를 바꾸게 된다면 이 부분을 다시 수정해야 한다. 안그러면 다 찢어질 것^^

 

근데 sphere에 노이즈 색이 들어가있으니깐 polyReduce된게 잘 안보인다. 다시 Point VOP에 들어가서 output의 Cd에 연결된 선을 Y를 눌러서 잘라보자. 잘라도 상관없다! 그래도 Attribute가 사라지지 않는다! 여기선 노드를 꼭 Output에 연결할 필요가 없다!

 

 

4. 보로노이 패턴 만들기

더보기

간단하다. Divide 노드를 추가해서 Compute Dual에 체크해주면 된다!

 

 

그다음 보로노이의 내부는 뚫고 외곽선만 두께를 주기 위해 PolyExtrude를 추가하고, Output Front를 꺼준다.

엥 그러면 메시가 아예 사라진다. 놀라지 말고 Inset을 키우자. 근데 Inset이 어떤 값 부터는 값을 올려도 Inset이 두꺼워지지 않는다. 더 값을 조절하고 싶으면 Transform Extruded Front를 체크하고 Scale 부분을 조절해보자.

 

 

그리고 Subdivide를 해서 둥글둥글하게 만들자. 그런데 문제가 생겼다

 

원본 sphere와 모양이 맞지 않고 약간 찌그러졌다. 원본 모양과 맞춰주기 위해 Ray라는 노드를 추가하자. Morph Target같은 느낌의 노드임. 디테일 창에서 Method Ray를 Project Rays로 바꾸자. 이게 안된다면 Minimum Distance를 쓰자. 둘 중 어떤 것을 쓰더라도 상관없다. 그다음 파란 선이 거슬리니깐 null 노드를 추가하자.

그다음 PolyExtrude와 Subdivide를 각각 한번 더 해주자

 

 

그다음 원본 sphere와 merge해주자. 원본 sphere는 Color 노드를 이용해 색을 바꿔주었다.

 

** 완성