언리얼엔진 PCG 연구_02 스플라인을 이용한 배치
Get Spline Data
Get Spline Data를 검색하여 꺼내준다.
이것도 이전의 Input 에서
Landscape 하이트값을 불러오는것처럼
이번엔 씬에 배치된 Spline 데이터를 가져와서 이를토대로 배치해줄때 사용된다
여기서 우측 세팅에 들어가 Actor Filter ( 자손포함 ) 을 바꿔준다.
우리는 씬에 배치된 모든 액터들을 인식하고 불필요한것들을
Tag를 달아 분류해 줄 것이기 떄문에 모든 액터를 인식하도록 바꿔주고
태그이름을 좀있다가 사용할 이름으로 작성해주자.
스플라인 데이터를 뽑아오도록 했으니
사용할 스플라인 데이터를 만들어주도록 하자
우클릭 - 블루프린트 - 액터 를 생성한 후
뷰포트 - 추가 - spline component 을 만들어주자
아까 스플라인의 태그를 이용해 스플라인을 분류한다고 했었다.
스플라인을 인식해주기위해 스플라인 부모 선택 - tag검색 태그추가 를 통해 태그를 넣어주고
아까 사용하기로 했던 태그 이름을 넣어주자
이걸 컨텐츠브라우저에서 뷰포트로 끌고오면 아까 만들었던 스플라인을 가져올 수 있다.
alt 좌클릭으로 더많은 포인트를 넣어줄 수 있고
Spline 디테일에 들어가 루프를 닫아줄 수도 있다.
Spline Sampler
데이터를 뽑아냈으니 이를 토대로 포인트를 배치할 때가 되었다.
Spline Sampler를 검색해서 꺼내주고 디버그D를 눌러 뷰포트에서 확인해보자
( 오른쪽처럼 끊기는 이유는 생성만 하고 아무것도 건들지 않았기때문 )
뷰포트까지 끌어오는데에 성공했으니
샘플러의 세팅에 대해서 알아보자
맨 처음 Dimension은
이 스플라인을 이용해 어떤 영역에 설치할 것인지를 정한다
Spline Sampler 설명
Dimension
Spline - 스플라인의 형태에 따라
Horizontal 과 vertical - 수평 , 수직 에 따라
( 바깥부분만 선택가능 )
Volume - 스플라인의 부피에 따라
Interior - 영역 내부에 따라
Mode
Subdivision - 경계 세분화에 따라
Distance - 길이에 따라
Spline Interior 영역 계산 & 노드
이번엔 Interior 내부영역을 통해 포인트를 배치해보려고 한다.
sampler에서 조금 내리다보면 그래프가 있는데
이를 통해 스플라인과 범위를 이용해 배치를 해줄 수 있다.
ctrl shift 우클릭 으로 그래프범위를 조절 가능하고
Shift 좌클릭으로 포인트를 넣어줄 수 있다.
다음과 같이 그래프를 넣었더니 스플라인쪽은 1 , 가장 안쪽이 0을 나타내는 것을 볼 수 있다.
이때 이 Density 값을 조절할 수 있는 기능들이 있는데
Density Remap
이전에 0~1까지 뽑은 데이터를 원하는 범위 내로 다시부여한다
0일때 0 1일떄 1 이였다면
0일때 1 , 1일때 0 으로 바꿀수도 있고
0일때 0.4 , 1일떄 0.7 로 되도록 바꿀수도 있다
Spline Interior 영역 거리 계산
위의 노드로 원하는 스플라인에서 멀어지는곳까지 데이터를 계산해 얻을 수 있었지만
그 범위가 어마무시하게 넓든 , 너무나도 작든
실제 크기를 계산하지 않고 현실성없이 0~1로 계산해준다는 점이 있다.
우린 이를 해결할 방법을 찾을것이다.
이번엔 아까만든 Sampler 노드를 복사해서
Interior 를 on Spline 으로 바꿔준다.
이를 통해 원하는 경계부분을 따낼 수 있다.
Distance 노드를 꺼내서
어디를 기준으로 거리를 계산할지 하는 타겟은 아래쪽으로
거리를 계산한걸 어떤 소스(범위)에 표현할지 하는 소스는 위쪽으로 연결해준다.
이제 계산한걸 Density 에 넣기위해 Set Density 또한 체크해준다.
이제 우측 Maximum Distance를 조절해 거리를 계산해주자
우린 이제 이걸 토대로
만약 저곳이 하나의 작은 식생들 지역이라면
가장 경계되는 부분에 가늘고 얇은 풀들을 랜덤하게 배치해 줄 수 있고
중심부가 되는곳에 사람의 손이 닿지않은 굵은 식생을 배치해 줄 수도 있다.
Spline Path 영역 교차
이번엔 길을 만들어주고 그 길 영역만큼
위의 영역에서 길 만큼을 빼줄것이다.
아까 만들었던 스플라인 ( 블루프린트 ) 를 똑같이 만들어서 (복사) 태그를 다른걸로 바꿔주자 ( Path_01)
똑같이 PCG에 넣어주고
Sampler에 Spline으로 연결해 라인을 추출해준다.
이제 Bounds Modifier 를 통해 길의 폭을 정해준다.
Difference 노드를 만들어
Source엔 영역 범위를 , Difference 에는 빼줄 경계를 넣어준다
그럼 위에 처럼 원래의 경계에서 길을 빼줄 수 있다.
이를통해 길목에만 식생을 줄인다던가
길목쪽 가운데에 마차 흔적 같은걸 남길 수 있을것이다.
테스트 용도로 제작한 PCG