Programming/Houdini

[Houdini] Modular Building 1

와들S 2023. 7. 1. 13:45

※ 해당 모델링은 Udemy 강의를 참고하여 만들었습니다. 

더보기

 

Udemy - Game Asset Creation with Houdini (Richard Banks)

 

1. Attribute Wrangle and VEX

vex

먼저 int형 변수 iter (interator)를 생성하는데, 생성 시 detail이란 함수를 사용한다. 뒤에 +1를 붙인 이유는, 붙이지 않으면 계속 첫번째 부분의 모델이 고정되기 때문이다. 

다음으로 Attribute를 만든다. windowType이란 이름을 가진 Attribute는 rand함수를 사용하여 랜덤으로 값을 지정해준다. seed에 따라 랜덤값을 변경 할 수 있도록 seed란 채널을 만들어 곱하고, 거기에 또 채널 numInputs을 만들어 전체 인풋 수를 곱한다. floor를 하는 이유는 정수값만 출력하기 위함이다. 같은 방법으로 windowPropType이란 속성도 만드는데, 조금 더 다양히 하기 위해 랜덤 수 (나는 1211을 곱했다)를 곱한다. 

그 아래에 windows, windowProps, door라는 그룹을 만들어 값을 설정한다. (0이 없음, 1이 있음)

if문을 만들어 iter가 door인 경우 창문 관련 props들이 없도록 만들고, door를 1로 해 문을 설정한다. 또한 아래 if문은 1층일 경우 props를 없앤다는 코드이다. 

chi 채널들을 다 만든 이후에는 vex코드창 우측 상단의 톱니바퀴를 눌러 채널을 아래에 설정한다. 각 Numinputs, Numpropinputs에는 opninputs이라는 함수를 넣어 switch에 연결된 총 노드 개수를 출력하게 한다. 

 

2. Switch Random Algorithm and Vex

1) Set nodes of 'Attribute Wrangle' and 'Switch'

nodes

모든 부분에 foreach로 적용되도록, foreach primitive를 만들어 그 내부에서 작업한다. 이때 create meta import node를 만들어 옆에 생성해야 한다.

Subnet으로 만든 모델들을 Switch에 연결함. 그리고 해당 Attribute Wrangle 노드와 Switch 노드를 Copy to Points 노드에 연결한다. 이후 어떤 세팅들을 해줘야 한다.

windows 모델들을 연결한 copy to points 노드

copy to points노드의 target points에 windows를 설정시켜준다. 그래야 적용됨. 이 windows는 attribute wrangle에 설정한 부분이다. 

해당 switch 노드의 selete input

switch 노드에는 기본적으로 있던 selete Input에 저 값을 넣는다.
톱니바퀴를 눌러 add spare input을 클릭해 새 spare input을 생성한다. 그 안에는 위의 attribute wrangle을 드래그해 넣는다.

 

3. Parameters

type properties - parameters

Subnetwork 안에 넣은 후 digital Assets으로 만들었다면 변수를 설정해줘야 한다. 걍 드래그 해 끌어당겨 넣으면 된다.

 

4. Export to Unreal Engine 5

먼저 언리얼 엔진과 후디니를 연결시켜 두어야 한다. 언리얼&후디니 플러그인 폴더 속 해당 버전을 맞추어 언리얼 플러그인을 언리얼 폴더 Runtime 안에 복붙해 넣으면 된다. 이후 엔진의 플러그인 들어가 후디니 설치한다.
- D:\Epic Games\UE_5.2\Engine\Plugins\Runtime 이런 경로이다.

다음 중요한 사항은, 언리얼 엔진에 export 하기 전에, file 노드로 임포트한 거는 절대주소로 만들어야 한다. 언리얼 엔진이 바로 그 주소에 접속할 수 있도록.

절대 주소

언리얼 엔진으로 파일 드래그 해 가져왔다면 화면으로 드래그 해본다. 이게 제대로 출력되려면, 해당 디지털 에셋의 성격을 맞추어야 한다. input이 필요 없는 terrain 등은 그대로 바로 출력이 되나, 이 빌딩 에셋은 curve를 필요로 하므로 엔진에서 만들어줘야 한다.

materials을 테스트 중이라 엉망진창 양해 부탁

Sub network input에서 spline curve를 추가해 넣고 만들어 주면 그대로 화면에 생성된다. 

 

5. Etc

아직 오류가 좀 있긴 하다. 위의 모델들이 잘못 배치되었고 아직 메테리얼도 불안정하다. Udemy 인강에서는 유니티를 다루고 있기 때문에 언리얼을 다루는 나는 나 스스로 해결해야 한다.

유니티 메테리얼을 다룰 때 인강에서 Unity Material 노드를 사용하라기에 나도 Unreal Material 노드를 사용해봤지만 잘 되지 않는다. 대신 저 detail 안의 메테리얼 편집창을 이용했다. 이를 위해 후디니 파일 안에서 quick shade라든가 uv unwrap등을 잘 이용해야 한다. 아직 제대로 완전히 이해한 건 아니라서 천천히 잘 해보면 될 거 같다.

'Programming > Houdini' 카테고리의 다른 글

[Houdini] Terrain Handbook 3 (Dusty Biome - shaping)  (0) 2023.09.19
[Houdini] Terrain Handbook 1~2 (Basic)  (0) 2023.08.31
[Houdini] Organic Shapes  (0) 2023.07.17
[Houdini] Terrain Basic  (0) 2023.07.03