FX/Houdini_Houdini 1

Starter - Ep 1: Group

Gamestonk118 2022. 12. 6. 20:15

Group - Base Group

Group Node는 본래 특정 Object에서 Group 안에서 선택된 Point 혹은 Primitives 들만 골라서 영향을 게끔 만들어 주는 Node이다. 이 때 Group Node는 다음과 같은 Base Group을 통해 각각의 Point/Primitive Number를 작성하여 원하는 Point 혹은 Primitive를 선택하여 Group에 할당하여 줄 수 있는데 이 때 칸 옆에 있는 Select Group 마우스 아이콘을 클릭하여 직접 Scene View에서 원하는 Point 혹은 Primitive를 설정해줄 수 있다. 

 

Group Node에 들어가면 다음과 같은 창이 뜨는 것을 알 수 있다.

 

Group - Keep in Bounding Regions

이 때 위에서 설명한 Base Group과 달리 Keep in Bounding Regions는 다음과 같이 어떤 Bounding Type을 선택하려는지 옵션들을 제공하는데 이들은 다음과 같다.

 

Bounding Box 임의적으로 Box를 생성하여 그 Box안에 들어가는 모든 Point혹은 Primitive를 선택하여 Group으로 할당하는 옵션
Bounding Sphere 임의적으로 Sphere를 생성하여 그 Sphere안에 들어가는 모든 Point혹은 Primitive를 선택하여 Group으로 할당하는 옵션
Bounding Objects (points or vertices only) Group Node의 두 번째 Input으로 들어온 Object (Referenced Object)과 맞닿은 Point 혹은 Verticies를 선택하여 Group으로 할당하는 옵션 (Primitive는 적용되지 않음)
Bounding Volume (points or vertices only) Isooffset Node로 구름화가 된 Object이 두 번째 Group Node Input으로 들어왔을 시에 맞닿은 Point 혹은 Verticies를 선택하여 Group으로 할당하는 옵션 (Primitive는 적용되지 않음). 이 때 Iso Surface 값을 0보다 높게 설정해야 적용된다. 또한 Isooffset Node의 Uniform Samping Divs 값을 높게 설정해야 더욱 디테일하고 정확한 Group을 얻을 수 있다.

 

Group Node 안에서 Keep in Bounding Regions를 Enable 선택해주면 다음과 같은 창이 뜨게 된다.

 

Isooffset Node: Isooffset은 특정 Object을 투명하고 안개가 끼도록 만들어주는 역할을 해주는 Node로써 더 높은 Iso Samping Divs값을 가질 수록 더욱 정확하고 선명한 Object의 형태를 띄게 된다.

 

Group - Keep by Normals

Keep by Normal 옵션은 Direction 파라미터로 조절된 Axis를 중심으로 Spread Angle 파라미터로 선택된 값의 각도 안에 범주하는 Normal 값만 선택되어 Group으로 할당하기 위해 만들어졌다.

 

Group Node 안에서 Keep by Normals를 Enable 선택해주면 다음과 같은 창이 뜨게 된다.

 

다음과 같이 x-Axis를 중심으로 하는 Spread Angle이 선택되었을 때에 이 각도 안에 해당하는 모든 각도를 가진 Normal들은 Group으로 할당되어지지만 그 이외는 할당되지 않는다. 그렇다는 말은 Spread Angle이 0도일때는 모든 Normal들이 선택되지 않게 되고 Spread Angle이 180도일 때는 모든 Normal들이 선택되게 된다.

 

예를들어 x방향의 Axis가 Direction으로 설정되었다고 가정할 때에 Spread Angle를 임의로 나타내어 보았다.

 

Include by Edges

Include by Edges는 특정 원하는 Edge들을 선택하여 Group으로 할당시켜주는 옵션으로써 유저가 Group Type을 Points, Primitivies 혹은 Edges로 바꿔주느냐에 따라 선택할 수 있는 파라미터들의 종류들이 달라지게 된다. 만약 Group Type을 Edges로 선택해둔 상황에서 Min Edge Angles 값 혹은 Max Edges Angle 값을 조절하게 되면 숫자가 커질 수록 Object에서 중간에 확 꺾이는 부분에 위치한 Edge들이 선택되어지게 된다. 값을 올리면 올릴 수록 더욱 적지만 확 꺾이는 정도가 큰 Edge들이 선택되게 되며 이는 Primitives로도 적용되어 그 Edge들이 속한 Primitive가 선택되게 된다. 

 

Group Node 안에서 Include by Edges를 Enable 선택해주면 다음과 같은 창이 뜨게 된다.

 

다음과 같이 중간에 흐름이 변하는 위치에 위치한 Edges들이 선택되어진 것을 알 수 있다.

 

Group by Range Node는 Range Filter라는 옵션 창을 가지고 있는데 이 때 Select Parameter는 몇개 중에 몇개라고 해석하면 됨으로써 만약 두 번째 값을 3으로 입력하면 순차적으로 모든 Primitive가 쪼개질 것이고 그 중에 몇 개를 선택할 건지 첫 번째 값으로 설정하면 된다.

 

Group Node 안에서 Group by Range를 Enable 선택해주면 다음과 같은 창이 뜨게 된다.

 

이 때 Offset 값을 조절하여 각기 패턴이 자연스레 옆으로 흘러가는 것처럼 표현하도록 Animation Keyframes들을 부여하여 Animation을 만들어 볼 수 있다.

 

Grid를 3개의 Prmitive씩 나누어 그 중에 하나의 Column 만을 각기 선택하도록 설정하였다.

 

Group Combine Node

Group Combine은 별도의 Node로써 다음과 같은 옵션을 제공하는데 이 때 Group을 어떠 한 다른 Group으로 만들어 주거나 Group을 다른 Group과 교집합인 형태로 만들어 합치거나 빼 주는 형태로써 만들어준다. 이 때 중요한 사실은 아래와 같은 Venn Diagram이 있을 시에 각각의 낱말들은 다음들을 의미한다. 이를 통해 Group들의 선택된 Point 혹은 Primitive들을 마음대로 바꿔줄 수 가 있고 이는 마치 어느 Object이 다른 Object과 닿았을 때에 그 부분만 Group으로 선택하여 할당하게끔 만들어줄 수 있다.

 

Group Combine Node를 실행하면 다음과 같은 창을 제공한다.

 

Union: 두 원들 안에 들어가는 모든 것들을 전부 포함하게끔 한다.

Intersect: 두 원들이 만났을 시에 겹치는 부분만 포함하게끔 한다.

Exclusive Or: 두 원들이 만늤을 시에 겹치는 부분만 제외하고 모두 포함하게끔 한다.

Subtract: 기존의 부분에서 겹쳐지는 부분을 포함 다른 부분까지 전부 제외하고 남겨지는 부분만 포함하게끔 한다.

 

Venn Diagram의 기본적인 형태는 다음과 같고 여기서 후디니는 총 네 가지의 경우의 수를 제공한다.

 

Group Copy Node

Group Copy는 Reference가 되는 Object에서 기본적으로 정보를 불러와 기존의 Object에서 Reference가 되는 Object의 Group을 적용하여 형태에 변화를 주게끔 만들어주는 Node이다. 이 때 기존 Object과 Reference가 되는 Object의 Row와 Column의 수는 동일해야 보다 정확하게 작동되며 그게 아니면 나중에 Blast Node로 특정 Group을 선택하여 그 부분을 지워버렸을 때 원하지 않는 부분을 지워버릴 수 있다. Point/Primitive Number들이 Row와 Column들이 달라지면서 전혀 다른 부분이 선택되어 Group으로 할당되어지기 때문이다.

 

Group Copy Node를 실행하면 다음과 같은 창을 제공한다.

 

Group Copy Node에서 만약 기존 Object에 또한 Group Node를 연결하고 Reference되는 Object에 또한 Group Node를 연결했을시 이름을 동일하게 설정하였을 시에 무엇이 우선시 될까? 이는 Group Name Conflict 옵션이 Skip Group으로 설정되었을 경우 기존 Object에 연결된 Group Node가 우선시 되고 Reference되는 Group Node의 선택들은 무시되게 된다. Overwrite으로 설정하게 되면 Referenced Object에 연결되는 Group Node의 선택들이 반대로 우선시 되며 만약 Add Suffix로 선택하면 Referenced Object의 중복되는 이름을 가진 Group의 이름 옆에 숫자가 붙게 된다. Primitive Group Prefix 옵션또한 비슷하게 만일 Group 이름이 같아 혼동이 올때를 대비하여 이름 옆에 유저가 직접 설정한 접두사를 작성하게 하여 특별하게 구분 가능케 만들어 줄 수 있다. 

 

다음과 같이 Group Copy Node로 C라는 Group의 Prefix를 get으로 설정하였을 시에 Group Copy Node 상에서 getC라는 이름으로 변경되어 진 것을 알 수 있다.

 

다음과 같이 Referenced Object의 Group 으로 선택된 Primitive들을 기존 Object에서 Blast Node로 없애버린 것을 알 수 있다. 이 때 두 Grid Object의 Row와 Column이 동일해야 정확한 결과가 나오게 된다.

 

Group Promote Node

Group Promote Node는 Group Node로 선택된 Group을 새롭게 바꿔주는 기능을 해 준다. 말 그대로 Group Type을 새로운 것으로 바꿔줄 수 있고 또한 Group Name을 다르게 만들어 줄 수 있다. 위에서 Group Node 안의 Bounding Object 옵션은 Primitive에 적용되지 않는 다는 사실을 기억 하였을 때 과연 Object들의 겹치는 Primitive는 과연 Group에 어떻게 할당할까 고민할 수 있을 것이다. 이는 Group Promote Node를 나중에 연결하여 기존의 흘러온 Group의 이름을 새롭게 바꾸어 주고 Convert From 옵션을 활용하여 Points혹은 Vertices에서 Primitives로 바꿔주면 가능하게 된다. 

 

Group Promote Node를 실행하면 다음과 같은 창을 제공한다.

 

Group Promote Node에는 다음과 같은 옵션들이 있는데 이들은 각각의 기능들을 담당한다. Keep Original Group은 Group Promote로 새로운 Group을 만들 때에 기존의 Group을 버리지 않고 그대로 가져오는 것을 뜻하게 된다. 다음과 같이 Group B에서 Points Group으로 바꾼 Group b를 새롭게 만들었을 시에 Node Info에는 Point Groups b와 Prim Groups B가 공존하게 되는 것을 알 수 있다.

 

Keep Original Group을 선택하게 되면 기존 Group을 버리지 않고 Group Promote에 그대로 가져오게 하는 것을 알 수 있다.

 

Include Only Elements on the Boundary는 다음과 같이 Group이 선택되었을 시에 테두리 부분에만 있는 부분의 Points 혹은 Primitives 선택하여 Group에 할당하는 것을 알 수 있다. 

 

기존에 선택된 Group에서 테두리 부분만 때어져서 Group으로 새롭게 할당된것을 알 수 있다.

 

이 때 Points Group을 Group Promote로 Prim Group으로 바꾸었을시에 Point가 있는 모든 Primitive 부분들이 전부 다 Group으로 선택되어 할당되어지는 것을 알 수 있는데 이는 Include Only Elements Entirely Contained in Original Group을 선택하여 Points 바깥에 있는 Primitive가 아닌 안쪽에 있는 Primitive만 선택되게끔 만들어 줄 수 있다.

 

Include Only Elements Entirely Contained in Original Group이 선택 해제되었을 시에 다음과 같이 나타난다.

 

Include Only Elements Entirely Contained in Original Group이 선택 되었을 시에 다음과 같이 나타난다.

 

마지막으로 Output as Integer Attribute을 클릭하면 다음과 같이 Group으로써 나오게 되는 것이 아닌 Integer Attribute로 새로운 Group이 생성되는 것을 알 수 있다. 그렇게 되면 이 Integer Attribute을 Wrangle Node를 Copy Promote Node와 연결하여 Vex상으로 코드로 불러올 수 있다는 사실을 알 수 있다. 

 

Output as Integer Attribute을 클릭하면 Group으로 Output이 생성되는 것이 아닌 대신 Integer Attribute의 형태로써 Output이 생성되게 된다. 예시에선 D라는 Group이 Integer Prim Attribute으로써 Output이 만들어져 Node Info에 작성된 것을 알 수 있다.

 

Conclusion

이번 시간에는 Houdini 1의 진정한 개막을 여는 Group에 대해 알아 보았다. 생각보다 이해가 안되거나 어려운 점은 없었던 것 같고 Group Node와 그와 관련된 모든 Node들의 성질을 알아보아 어느정도 어떻게 이들을 이용해야 할 지에 대해 조금은 감을 잡았던 것 같다. Object의 Topology 상에서 특정한 Points/Primitives/Edges/Vertices 들만 선택하여 Group으로 할당하여 그 Group을 어떻게 변형시키기 까지 아직 후디니로 본격적인 작업을 해본 적이 없어 디테일한 이용 방법은 아직은 모르겠지만 어느정도 큰 틀에서 어떠한 상황 혹은 어떻게 Group을 이용해야 할지는 어느정도는 알 것 같기도 하다. 다음 시간에는 Group을 이용한 본격적인 프로젝트를 한다고 하는데 보다 어떠한 상황, 어떠한 방식, 그리고 어떠하여 다른 Node들과 연결할지에 대해 대강 감을 잡아볼 수 있는 좋은 시간이 될 것 같다.

'FX > Houdini_Houdini 1' 카테고리의 다른 글

Starter - Ep 0: Summary of Open the Houdini & Joy of VEX  (0) 2022.12.05