안녕하세요!

이번에는 버텍스 기반의 툴을 소개하려 합니다.


타일기반 툴은 빠르게 지형을 만들고 수정할 수 있지만 규격 외의 지형 대응이 힘듭니다.


그래서 최초에 이 툴을 만들게 된 계기는



39b4dc23e8d328b523add3a61fcb2139cf1ed03b2b848257b2572602231d1fe5


이런 지형에서 성벽 위로 올라갈 수 있도록 하기 위함이었습니다.


버텍스 툴 이전, 저 성벽은 그림 상 요철이 있지만 실제로는 그냥 장식입니다.


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce883fa1bd62531f5b245072a8b0293b27ab40378a0c6821b6b4f8f96ecb8daeb836bb9351d5051685980f9819fa961a4598a31c7bdf95a884cf01f85

그래서 3D카메라로 보면 벽 부분과 바닥 부분이 그냥 곧게 펴져 있습니다.



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce883fa1bd62531f5b245072a8b0293b27ab40378a0c6821b6b4f8f96ecb8daebc13eec3e7757566e60a8e066a6b1ec8d0fd4501ad1bfe6

또한 그림자가 렌더링되지도 않고, 울퉁불퉁한 그림에 따른 지형 상호작용도 일어나지 않습니다.


이런 요소들을 올바르게 렌더링하고, 캐릭터와 상호작용 가능하게 하기 위해 버텍스 기반의 지형 툴을 만들게 됐습니다.




22b1d432eadd34eb63f1c6bb11f11a3995d305f2a163cccac2


우선 폴리곤을 편집하는 기능부터 만들었습니다.


둠 빌더라는 레벨 디자인 툴을 참고하면서 최대한 단순하게 구현했습니다.




28b9d932b49f3da267ab9ba713c22d279cb01f0f1909a192d9b800b28ade27983c65


이렇게 구현된 지형을 타일맵에 매핑하면, 해당 타일맵은 연결된 메쉬 모양에 따라 3D공간상에서 올바르게 랜더링됩니다.




viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce883fa1bd62531f5b245072a8b0293b27ab40378a0c6821b6b4f8f96ecb8daeb836bb95876535c4c215299e67eb6ca66ddbb1497ae00b408c771bb


하지만 버텍스를 픽셀 단위로 디테일하게 다듬을 수 없기 때문에 단순히 그림을 매핑하니 그림이 잘리는 문제가 생겼습니다.




위의 세 케이스들의 문제 원인이 각각 다른데,


이 문제들을 해결하기 위해




28a5c423ebd66aeb7cbac5bc0cd42073446eef592bbc82c746ac259f7244


이미지가 잘리지 않도록 이미지 모양에 따라 매쉬를 자동으로 확장시키는 기능을 구현했고




28a5d32af0d63deb7cbac5bc0cd42073a91dbce77400c6d39ae21c2be1a486



특정 메쉬는 매핑에서 제외할 수 있도록 하였고





25bcdc20a8df76b660b8f68b12d21a1da7c47b7cec



땅속으로 이미지가 파고들지 않도록 땅과 접하는 부분을 접어주는 기능을 구현했습니다.


이외에도 개발하면서 여러 요구사항들이 생겼는데




2ca8c429e6de31b623add3a61fcb21398cc690b3cffbab09f108196280a2c42d




기존 타일 기반 지형과의 병합 처리




39b8c332e8d72bae23add3a61fcb213915a406b6576818da2fb69c9af28f8b


프로토타이핑을 위해 임시로 렌더링하는 기능





39b5d925eedc3db57df2c4b005d83e38c69ec3528a8be2316a95bb3faa9af25b



벽에 구멍을 내는 기능 등이 있습니다.


하지만 이 툴을 사용해 만든 지형들은 비교적 수정이 까다로워 지기 때문에 자주 쓰지는 않고, 가끔씩 타일 규격 외의 지형이 필요할 때 사용하고 있습니다.





3bb2dc2ae0cb69eb63f1dca511f11a398db721a9504a18f8e4


38b0c52aa8df76ac7eb8f68b12d21a1dd067fec1275c





읽어주셔서 감사합니다.



[개발 일지 링크 모음]


[스팀 페이지]