GameDev – Creating Voxels from Triangle Mesh.

기본적으로 플레이어가 구조물을 만드는 게임(?)이지만 역시 맵상에 아무것도 없으면 막연하겠지. 그리고 개발중에 테스트하려면 대량의 복셀이 배치된 맵이 필요하다. 하지만 그래픽 디자이너가 없으므로 맵 데이터 제작은 불가능. 그래서 기존의 삼각형 데이터로 이루어진 맵데이터로부터 복셀데이터를 생성하기로 했다. 1. 일단 기존 삼각형 매쉬 맵데이터로부터 복셀 데이터 생성하는 코드는 금방 만들었다. 2. 월드 전체를 50cm x 50cm x 50cm짜리 복셀 … More GameDev – Creating Voxels from Triangle Mesh.

Game Dev – Geometry Shader포기

처음 만들때 복셀 오브젝트의 디테일을 1x1x1부터 8x8x8까지 선택해가며 배치할 수 있게 했었다. 플레이어가 비교적 정밀한 구조물을 제작할 수 있게 하면서도 복셀의 구성 상태가 실제로 정밀하지 않다면 자동으로 1x1x1짜리 오브젝트로 변환하려고 이렇게 만들었다. 메모리를 아끼기 위해, 복셀의 구성상태는 bit-table을 사용한다. 8x8x8짜리 복셀오브젝트라면 복셀 한칸당 1비트를 할당해서 8x8x8 / 8 bytes의 bit-table을 만든다. 복셀의 컬러값은 따로 저장해두는데 … More Game Dev – Geometry Shader포기

Voxel오브젝트의 최적화된 삼각형 리스트 만들기.

복셀 오브젝트에 딱 맞는 최적화된 삼각형 리스트를 만들었다. 복셀 오브젝트를 그냥 삼각형으로 변환하면 복셀 한칸한칸마다 삼각형12개가 생긴다. 인접한 복셀이 있을 경우 면을 제거해도 최소 2개씩은 생긴다. 이걸 최적화해줘야 하는데 boolean연산으로 줄여야한다고 생각하고 있었다. 예전에 room/portal 에디터 만들때 N각형 boolean연산의 지랄같음을 맛보았기 때문에 다신 하고 싶지 않았다. 그런데 가만 생각해보니 이미 사용하는 방법을 조금 응용하면 boolean연산 … More Voxel오브젝트의 최적화된 삼각형 리스트 만들기.

Hololens개발 메모 #11 – Resource leak 체크

1. UWP on Hololens에서의 resource leak 체크 UWP App은 명시적인 종료가 없으므로 리소스에 대한 leak체크가 쉽지 않다. 그래서 suspend이벤트나 아니면 임의의 버튼같은걸 만들어서 가상의 종료처리를 하고 이 시점에 leak체크를 하도록 하고 있다. Hololens버전은 UWP앱이지만 일반적인 DirectX on UWP앱과는 차이가 있다. swapchain을 사용하지 않는다. 즉 일반적인 UWP앱은 swapChainPanel이라는 XAML 객체를 가지고 있고 이 녀석과 D3D가 연결된다. … More Hololens개발 메모 #11 – Resource leak 체크

Hololens개발메모 #10

Hololens의 웹포탈에서는 영상을 720p의 해상도로만 캡쳐할 수 있다. 코드에서 Windows::Media::Capture API를 직접 호출하면 1080p의 해상도로 캡쳐가능. 단 투영되는 3D그래픽스의 해상도는 프레임 버퍼의 해상도를 따르므로 그래픽스 영상 자체의 품질은 큰 차이 없음.

HoloLens 개발메모#9 – 충돌처리

Spatial Mapping을 이용한 데모 개발중 Spatial Mapping으로 삼각형 리스트를 얻어온다. 월드 영역을 Grid로 쪼개서 삼각형들을 담는다. 각 삼각형들은 Holographic API에서 제공하는 Surface Mesh로부터 얻어온다. 그리드의 각 Cell경계로 삼각형이 걸칠 수 있다. 따라서 Cell들은 여러개의 Surface Mesh와 연결될 수 있고 각 Surface Mesh는 여러개의 Cell과 연결될 수 있다. Surface Mesh는 시시각각 업데이트 된다. 삼각형 리스트가 갱신될 … More HoloLens 개발메모#9 – 충돌처리

HoloLens 개발메모 #8 – Spatial Mapping

HoloLens의 기능은 크게 3가지 영역으로 나눌 수 있다. 1. HoloLens에서 HUD부분. 다른 VR과 달리 HUD에 영상을 투영하므로서 바깥 사물을 여전히 볼 수 있다. 이 기능 자체는 프로그래머가 컨트롤 할 수 없는 하드웨어의 고유영역. 2. 입체영상을 출력해주는 부분. 다른 VR과 원리가 별로 다르지 않음. API사용법도 크게 다르지 않음. 3. 가장 다른 부분이 Spatial Mapping이라는 실시간으로 주변 공간을 … More HoloLens 개발메모 #8 – Spatial Mapping

HoloLens 개발메모 #7

“이미지 떨림을 줄이기 위해 60프레임을 유지하라.” 이게 문서에서 계속 강조하는 내용이다. 그런데 아무리 봐도 불가능해보인다. DirectX런타임이 데스크탑 OS와 다른것인가? 에뮬레이터에서의 렌더링 속도도 느리다. 실제 HoloLens 디바이스는 에뮬레이터보다 더 느리다. 현재 디버그 빌드 기준으로 캐릭터 선택 화면에서 9프레임 정도 나온다. 같은 상황 PC버전은 1500프레임 정도 나온다. GPU성능이 나쁘다고는 예상하고 있었지만 너무 차이가 많이 난다. 뭐가 문제인지 … More HoloLens 개발메모 #7

HoloLens 개발메모 #6

HoloLens의 카메라를 다루는 방법에 대해서 약간 감을 잡았다고 생각했다. 이제 뭘 어떻게 해야할지 알겠다…라고 생각하고 앞으로 어떻게 진행할지 계획을 잡았다. 그런데 현재 프레임 레이트가 너무 안나온다. 이상할 정도로 안나온다. 문서에 보면 60FPS를 유지하라고 나와있지만 현재 이미지만 띄우는 타이틀 화면에서조차 30프레임이 안나온다. 에뮬레이터쪽이 성능이 더 나오긴 한다. 하지만 에뮬레이터에서도 60프레임은 안나온다. 같은 상황 데스크탑에선 400프레임을 넘기고 … More HoloLens 개발메모 #6