공부/Unreal Engine

[Unreal5] 언리얼에서 PCG를 활용한 아파트 단지 만들기 -2

굴러다니다니 2023. 12. 1. 17:57
728x90

앞부분 못 보신 분들은 보고 오기 저거에 이어서 진행

https://dani2344.tistory.com/93

 

[Unreal5] 언리얼에서 PCG를 활용한 아파트 단지 만들기 -1

https://www.youtube.com/watch?v=Rknnu16mrOw 1시간 21분짜리 유튜브,,, 두 번 다시는 풀로 안들을거 같아서 정리하는 용도 위에 강의를 끝까지 따라해서 아래와 같은 결과를 얻었다 / 한국식으로 수정 언리얼

dani2344.tistory.com

 

우리는 아파트 단지를 만드는 것이 목적이지 아파트 한 채가 목적인 그런 소소한 사람들이 아니다!

점들을 그리드 형태로 만들어 그 점마다 아파트를 생성하는 식으로 만들 것이다.

 

Create Points Grid를 만들어 Grid Extents를 (10000, 10000, 500) Cell Size를 (5000, 5000, 100)으로 바꾸고, Cull Points Outside Volume은 체크 꺼주자.

원래 Get Actor Data 이어서 층을 나눠주던 애를 Create Points Grid 쪽으로 둘 다 옮겨준다. (Ctrl 누른상태로 옮기면 편함)

요렇게만 하면 애가 고장날텐데 ㄱㅊㄱㅊ 일단 킵고잉

전체 노드 싹 잡고 (input, output, 위에서 만든 Create Points Grid 빼고) 우클릭 > 서브그래프로 접기 이럴거임 ㄱㄱ

알아서 저장할 곳 고르고 이름은 PCG_IndividualBuilding으로 해줌

 

다 하면 이케 축약되고 더블 클릭하면 크게 볼 수 있음

열린 그래프의 Input에서 오른쪽 세팅값 바꿔주자.

Input > Custom Pins > 인덱스 > 라벨 이름을 Points In으로, Index[1]은 삭제하자

 

이렇게 남겨진 Points In 친구는 Stories에 있는 Merge랑 Transform Points에 이어주자

이제는 Output을 찾아서 연결되어 있던거 끊어주고 Settings > Input > Custom Pins > Index[0] 삭제해서 Output을 망망대해로 만들어줬다.

 

Create Points Grid 뒤에 Copy Attribute 노드 만들어서 Input Source를 $Index로 Output Target을 Index로 설정하고 Attribute Partition 노드 만들어서 연결, Partition Attribute는 Index로 수정하자.

Loop Subgraph 노드도 만들어서 Instance Graph에 PCG_IndividualBuilding인지 그거 넣어주고 PCG_IndividualBuilding 노드 삭제하고 새로 만든 노드랑 이어주자 (환승연애)

그러면 Create Points Grid로 만든 포인트들마다 아파트가 생성된다. 

 

우리는 아파트 개수, 높이, 뭐시기 등등들을 변수로 설정할 수 있게 만들거라 이걸 베이스로 변형을 시작한다.

 

PCG_Buildings 블루프린트에 들어와 왼쪽 아래같이 변수들을 만들어 눈표시를 켜준다. (에디터 창에서 볼 수 있게끔)

그리고 기본 값을 (400, 400, 300), (10, 10, 1), (5, 5, 1), (3, 3, 1) 으로 지정해준다.

컴파일 + 저장은 필수

Get Actor Property로 변수에 접근하는데, Property Name과 Output Attribute Name을 변수 이름과 동일하게 설정해 불러오자

우리가 기존에 지정한 Grid의 Cellsize를 (BuildingSize + StreetSize) * GridSize의 값으로 설정할 것이고 이를 노드의 흐름으로 연결하면 3번째 그림과 같다.

 

그렇다면 간단한 변수의 기능이 추가된 간이 아파트 단지가 되었다.

 

아직 연결할 변수들이 산더미같이 남았다.

언제 포스팅 다하지,,,

728x90