본문 바로가기

Binary Space Partitioning2

[Unity]BSP(Binary Space Partitioning)를 이용한 던전 룸 생성 - 02 이전 포스팅에서 공간을 나누어보았다. 이번에는 크게 설명할 게 없다. 목표는 다음과 같다. 분할된 공간 안에 임의의 사이즈의 직사각형 룸을 생성하는 것이다. 이해를 위해 먼저 결과물을 보면 사진과 같다. 미리 분할해놓은 공간 안에 임의의 위치, 임의의 사이즈의 룸을 생성한다. 이 부분은 각자 취향대로 구성할 수 있다. 하지만 나는 다른 사이트를 참고하여 만들었다. 다음과 같은 순서로 진행한다. 1. 공간의 중심좌표에서 랜덤하게 이동한 새로운 좌표를 구해준다. 2. 랜덤하게 길이, 높이를 빼주어 룸을 구성한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public void InitRoomSizeBySpace(int minPadding, int maxPadding) {.. 2023. 7. 13.
[Unity]BSP(Binary Space Partitioning)를 이용한 던전 룸 생성 - 01 Binary Space Partitioning(이하 BSP)를 먼저 간단하게 설명하자면 말 그래도 이진 공간 분할로 공간을 둘로 분할하며, 재귀적으로 나누어진 공간을 트리 형태로 구성하면 우리가 흔히 듣던 BSP Tree가 된다. 그럼 BSP를 이용해 던전을 구성해보자. 순서는 다음과 같다. 1. 한 공간을 수직 또는 수평으로 이분할 한다. 이 때, 분할된 공간을 노드로 취급하며, 이진 트리의 자식 노드로 추가한다. 2. 정해진 분할 개수만큼 1번을 반복한다. 3. 말단노드(Leaf Node)는 최종적으로 룸을 구성할 공간 노드가 되고, 나중에 이를 통해 룸을 구성한다. 1. 공간 분할하기 구현함에 있어 사람마다 다르게 구현한 걸 자주 볼 수 있었다. 예를 들면 노드의 순회 방식에 따라 깊이(depth).. 2023. 7. 12.