3D 길찾기 구현중 #4 – voxel지형으로부터의 네비게이션 매시 생성

3D길찾기를 시도하면서 큰 목표중 하나가 복셀맵에서 길찾기를 하는것이었다. marching cube알고리즘으로 일단 voxel지형에서 삼각형을 생성할 수 있다. 이걸 네비게이션 매시로 사용해서 길찾기를 하면 되기는 하는데…..문제가 있다. 복셀 매시로부터 삼각형 매시를 생성. 삼각형이 미친듯이 많이 나온다. 복셀 매시로부터 생성한 삼각형을 최적화. 인접한 삼각형간에 엣지를 공유할 수 없게 된다. 엣지를 공유하지 않으므로 네비게이션 매시로 사용할 수 없게 된다. … More 3D 길찾기 구현중 #4 – voxel지형으로부터의 네비게이션 매시 생성

3D 길찾기 구현중 #3 – visibility 테스트와 유사한 Stupid Funnel 알고리즘 적용

Stupid Funnel 알고리즘을 적용했다. 알고리즘 내용은 아래 링크에서 참고. http://jceipek.com/Olin-Coding-Tutorials/pathing.html#funnel-algorithm 처음엔 명확하게 이해가 안됐다. 어떤 문서에선 실로 감싼다는 개념으로 설명하는데 이해가 되지 않았다. 일단 꺽이는 위치의 좌표를 구하는건 스킵하고 직선이동이 가능한 경로를 찾는데 촛점을 맞춰서 구현을 시작했다. 몇 일 작업을 하다보니 이 알고리즘의 기본 원리가 보였다. 이거 3D에서 가시성 검사할때 사용하는 Portal-Culling이랑 개념이 같다. Room/Portal방식에서 … More 3D 길찾기 구현중 #3 – visibility 테스트와 유사한 Stupid Funnel 알고리즘 적용

3D 길찾기 구현중 #2

‘복셀 데이터 -> 마칭큐브로 삼각형 변환 -> 네비게이션 매시 변환’ 을 해보고 나서서 인접한 엣지를 타고 삼각형들간의 그래프 자료구조를 만드는게 더럽게 느리다는 사실을 깨달았다. 코드를 왕창 뜯어고쳐서 50배쯤 빠르게 만들고나서 다시 테스트를 했다. 복셀맵으로부터 생성한 네비게이션 매시는 삼각형 분포가 너무 조밀하거나(최적화 안했을때), 혹은 엣지가 자료구조상 연결이 될 수 없거나(최적화 했을때) 복셀쪽은 생각을 좀더 해보기로 하고 … More 3D 길찾기 구현중 #2

3D 길찾기 구현중 #1

퀘이크3처럼 bot과의 전투를 넣으려고 한다. 그러기 위해선 bot이 알아서 길을 찾아야한다. 당초 기술기반을 구축할때 3D길찾기는 고려하지 않았다. 몬스터는 충분히 바보같아야하고 따라서 각자의 스폰 영역을 벗어날 필요가 없었다. 그런데 bot과의 1:1 전투를 하려면 bot이 똑똑할 필요가 있다. 물론 bot을 똑똑하게 만들 자신은 없다. 그래도 bot이 플레이어를 잡으러 돌아는 다녀야 한다. 그러려면 길찾기가 필요하다. 그래서 일단 길찾기는 … More 3D 길찾기 구현중 #1

굿스마일 모데로이드 그레이트 제오라이마(MODEROID グレートゼオライマー)

엄청 오랫만에 프라 킷을 하나 만들었다. 굿스마일 모데로이드 시리즈로 비교적 최근에 나온 나온 그레이트 제오라이마다.  그레이트 제오라이마는 명왕계획 제오라이마 애니에는  등장하지 않고 애니판 설정집에서만 스케치 한장으로 나온적이 있다. 그러다가 슈로대 J에서 처음이자 마지막으로 등장했다.  언젠가 원더 페스티벌에서 그레이트 제오라이마의 레진킷이 나왔던 적은 있지만 제오라이마의 미조립 프라킷으로는 이 녀석이 처음이다. 개인적으론 애니판 제오라이마를 선호하는 편이지만 조립 … More 굿스마일 모데로이드 그레이트 제오라이마(MODEROID グレートゼオライマー)

SW Rasterize 기법에 따른 효용성 요약

SW Occlusion Culling만들면서 CPU로 삼각형 찍는 방법으로 별 짓을 다 써봤다. SW Occlusion Culling을 수행하기 위해선 프레임버퍼에 삼각형의 depth를 출력해야한다. depth값이 아닌 color값이나 texture를 출력하는 경우도 기본 원리는 똑같다. 성분의 종류만 다르고 1/w로 보간하는것까지 똑같다. 즉 CPU로 삼각형 찍는 SW Rasterizer를 만드는 작업이다. 여러가지 기법들을 사용해봤는데 결론을 요약해본다. 1. Multi-Thread 사용 화면 구역을 나눠서 여러스레드가 … More SW Rasterize 기법에 따른 효용성 요약

Async S/W Hierarchical Occlusion Culling

S/W Occlusion Culling에 대한 미련을 못버리고 계속 튜닝하면서 사용해왔다. 다음번 프레임의 카메라 위치 예측 + 비동기 S/W Occlusion Culling으로 완료를 짓는가 싶었다. 성능도 만족스러웠다. 근데 생각해보니 어차피 비동기로 처리할거면 Hierarchical Z방식으로 처리하는게 더 낫지 않나? 그런 생각이 들었다. 512×512 -> 1×1까지 Down-sampling 비용이 항시 포함되어서 메인스레드에서 처리하긴 부담스러웠던것인데 어차피 비동기적으로 Raster스레드가 처리한다. 게다가 이 비용은 … More Async S/W Hierarchical Occlusion Culling

개인 장비들 SSD 벤치마크

내 개인 장비들의 ssd 벤치마크 스샷 찍어놓은게 있어서 엑셀 시트로 정리해봤다. 삼성 960 Pro가 남는데, 꽂을데가 없어서 Mac Mini에 꽂았다. Mac mini 2014 late는 Nvme PCI-E lane이 절반이라 SSD최대 성능 반토막도 안나옴. Mac Mini 스펙이 떨어지는거지 960Pro 성능이 떨어지는게 아님. ADATA는 쓸게 못된다. 2015년경에는 256GB SSD가 꽤 비쌌기 때문에 그 당시에 돈 아낀다고 Alienware15에 ADATA … More 개인 장비들 SSD 벤치마크

XDK없이 UWP+DX12로 XBOX ONE 게임 개발 #2

XDK없이 UWP + DX12로 XBOX용 게임을 개발하는 테스트를 진행하고 있다.Voxel맵에 이어 삼각형 베이스 맵을 띄웠다. UWP on XBOX에서의 각종 거지같은 제약사항을 뚫고 여기까지 왔지만 그래도 문제가 많다. 테스트 중인 장비가 1세대 XBOX ONE의 슬림 모델인 XBOX ONE S다. XBOX ONE X만 되어도 이보단 훨씬 나을거 같은데 현재로선 확인할 길이 없다. 화면에 나타나는 지저분한 점의 정체 … More XDK없이 UWP+DX12로 XBOX ONE 게임 개발 #2