*언리얼엔진5를 배우는 과정을 기록하는 포스팅입니다.
아직 미숙하고 처음 글을 작성하는 만큼 미흡한 부분이 많은데 댓글로 피드백 부탁드립니다! 감사합니다.
https://www.youtube.com/watch?v=OjOxjaDYUQw&list=PLA03OHAaHgYpo0enf8p-2oEpja3grLOKZ&index=8
Density 값에 따라 Point의 Z축 크기가 달라지도록 설정하는 PCG 노드를 직접 만드는 과정이다.


최종적인 결과물이다.

Blueprint를 만들 때 PCGBlueprintElement를 상속받아 만들 수 있고,



만들어진 class를 PCG Graph로 끌어 사용하거나 Execute Blueprint 노드에서 Blueprint Element Type을 변경하여 사용할 수 있다.

먼저 PCGBlueprintElement를 상속받아 만든 StudyNode에 들어가면 Function이 비어있는데,
ExecuteWithContext를 오버라이드 해준다.


Execute With Context 함수에서 작성된 그래프이다.
유튜브 강의 영상에선 어쩔수 없이 들어가는 부분이라 기본적인 것이라고 하는데,
대략적으로 중간에 실행하는 Point Loop 에서 포인트에 가할 메인 로직이 발생하고,
그 전에는 해당 함수로 데이터를 보내기 위한 과정과 데이터를 묶어 리턴하는 과정이라고 생각하면 좋을 것 같다.
(또한 해당 노드는 PCG에 관련되어도 Blueprint Element기에 Print String 이라던가 Log Print 처럼 디버깅 할 때 쓰기도 좋고, C++이랑도 연관지을 수 있지 않을까 싶다.)
다음으로 함수에 PointLoopBody를 오버라이드 하여 메인 로직을 구현할 수 있다.

Set members in PCGPoint에서

다음과 같이 설정창을 확인할 수 있는데,
기존 사용하던 PCG 노드에서 볼 수 있던 것들인데,
PCG Point 의 위치, Density, 경계크기, 색 등을 바꿀 수 있는 기능인 것 같다.


다음으로 Break PCGPoint에서는
해당 Point의 위치, Density, 경계크기, 색 등등의 정보를 받을 수 있는 것 같았다.
해당 Point Loop Body에서는
Point의 Density 값을 받아와서 그 값의 * 1000만큼을 Z축의 경계면 크기로 지정하는 로직이므로,
Density값에 따라 Z축 방향으로 큰 형태가 될 것이다.
또한 여기서


다음과 같이 변수를 추가하여 Parameter로 사용할 수 있다.
어느정도 구현이 됐으므로, PCG Graph에서 보면


다음과 같이 변수로 설정한 MaxHeight값을 조절할 수 있으며,
Parameter 값으로도 넣어줄 수 있다.
(이제 여기서 Get Actor Property 등을 활용해 값을 넘겨주면 될 것 같다.)
최종적으로 StudyNode를 디버깅하면

다음과 같이 Density 값에 따라 높이가 다른 모습을 볼 수 있다.
자신이 원하는 결과물을 만들기 위해 커스텀 노드를 사용할 일이 많을 것이기에,
지금 배운 내용이 아주 중요한 내용 중 하나인 것 같다.
'Unreal5 > 절차적 콘텐츠 생성(PCG)' 카테고리의 다른 글
| PCG(5) - 정글 바이옴 PCG 만들기 (0) | 2023.09.03 |
|---|---|
| PCG(4) - Actor에 PCG 컴퍼넌트 붙이기 / Static Mesh에서 포인트 만들기 (0) | 2023.08.31 |
| PCG(2) - Spline(숲 / 길) (0) | 2023.08.30 |
| PCG(1) - 시작 (0) | 2023.08.29 |
| UE5 PCG(Procedual Content Generation)란? (0) | 2023.08.25 |