Convert Voxel World To Planet

2018. 6. 29. 11:04프로그래밍/3D Graphics

Voxel 세계를 Planet화 하려면?


1. Torus Function을 이용한 정점 변환

Is a round Minecraft world possible?


위 영상에서는 Voxel Planet을 표현하기 위해 복셀을 라운딩화 할 수 밖에 없는 이유를 설명한다.


How to make the Minecraft world look spherical


그리고 위 영상에서는 Voxel 세계를 구면화 하는 방법을 제시하고 있다.

영상을 보면 구면화를 위해 torus 방정식을 응용하여 정점을 새로 계산한다.


유니티에서 제시된 이론을 바탕으로 적용해본 결과는 아래와 같다.



겹치는 부분을 조정하기 힘들다는 단점이 있지만 굉장히 흥미로운 방법이라 생각됩니다.



2. 구의 특성을 이용한 방법

  구는 모든 정점의 길이가 동일하다는 특성을 가진 모델입니다.

  격자 기반 Cube를 구면화 하는 내용은 이러한 특성을 이용한 대표적인 사례입니다.



  그리고 정육면체로 이루어진 큐브 복셀 월드는 복셀간의 거리가 일정하다는 특징이 있습니다.

  두가지 특성을 이용해 큐브 복셀 들의 모든 정점을 아래와 같이  다시 계산합니다.

    가. 정점의 x, y, z 성분을 절대값으로 비교하여 가장 큰 성분을 찾는다.

    나. 정점을 정규화하여 단위벡터로 만든다.

    다. '가'에서 구한 성분값을 곱한다. 



[변환 영상]


이 방법 또한 문제점이 있는데, 큐브와 같은 정육면체 조합이 아닌 모델의 경우 적용하기 어렵다.