폴리곤에 대한 삼각형 Mesh 생성(Triangulation)

2D GIS 데이터인 벡터 데이터(Shape)를 3D API를 이용해서 그리고자 할 경우에, 폴리곤은 볼록해야한다는 3D API의 전제조건으로 2D 도형 데이터를 쉽게 표시하기가 힘들다.

다행이 OpenGL의 경우는 Tessellation 기능을 이용해 폴리곤을 삼각형으로 구성된 Mesh로 재구성 해줄 수 있다. 하지만 Direct3D의 경우는 이러한 지원이 전혀 없으므로, 개발자가 직접 구현해서 적용해줘야 한다. 그러나 OpenGL 역시 매우 복잡한 폴리곤에 대해서는 삼각형 Mesh를 생성하지 못하는 경우가 많다.

이러한 문제로 인해, 회사에서 맡은 프로젝트 중에 폴리곤에 대한 삼각형 Mesh를 생성해주는 기능이 필요하여 작업한 결과물에 대한 화면이다.

[입력 데이터]

[위의 입력데이터에 대한 결과]

[Hole이 있는 폴리곤에 대한 결과]

[삼각형의 최대 넓이 제약 조건을 지정한 경우]

[삼각형의 최소 내각의 제약 조간을 지정한 경우]

폴리곤에 대한 삼각형으로 구성된 Mesh를 얻고자 할때, 구성 삼각형에 대한 제약 조건으로 최대 넓이와 최소 내각을 지정하여 더욱 다양한 Mesh를 구성할 수 있다. 이런 기능을 이용한다면 Surface Analysis도 가능하다고 생각된다.

GIS Korea 2006을 위해 담당한 시스템

회사(G-Inno Systems) 연구소(다차원공간연구소)에서 GIS Korea 2006을 위해 만든 시스템 중에 하나. 연구소 팀장님의 아이디어를 구현한 시스템이다. 실제와 동일한 가로등 시스템을 축소한 미니어쳐를 만들어 제어하는 유비쿼터스 시스템.

내가 맡은 부분은 시스템 구현을 위한 ActiveX 컨트롤 제작을 담당하였다. 컨트롤을 웹에 붙이는 작업은 다른 분들의 Power를 빌렸는데.. 아ㅡ! 웹. 이번 기회에 웹개발에 대해 쪼금 친근해줄 수 있는 발판이 마련된것 같은데, 이 웨이브를 타고 웹개발에 좀더 다가서 볼까 생각중이다.

미니어쳐는 처음에 조경학과 출신 분이 가닦을 크게 잡고 연구소에서 여기에 다시 이쁘게 데코레이션을 했다. 가로등 시스템 설치는 협력업체에서 해주었는데, 실제와 동일한 가로등 시스템인 분전함을 연결해서 가로등 환경을 구성하였다.

주요 기능은 분전함 단위로 가로등을 점등, 소등할 수 있고 가로등이 고장날 경우에 사용자에게 고장난 가로등을 보여주는 기능. 그리고 가로등에 대한 고장 이력을 다양한 차트로 나타냄.

일주일 동안 철야와 밤샘으로 만들었고, 전시회 첫날에 있는 힘을 다해 시연하고 두째날과 셋째날 체력의 한계로… ㅜ_ㅜ 미니어쳐는 참 이쁘게 잘만들었는데, 정작 시스템은 촌스럽다… 그래서 시스템 사진은 일단, 않올림.. ㅡ_ㅡV 웹시스템이라 디자이너와 협업이 필요했는데… 디자이너와의 티격태격이 나름대로 재미있었던것같다.. 바빠서 못해준데느니 하다가.. 못이기는 척.. 해주는 뭐 그런… ㅋ 아래는 위의 미니어처 장비와 커뮤티케이션해서 제어해주는 컴퓨터 시스템 실행화면..

Polyline 3D Symbolizing

라인이 교차하는 곳을 부드럽게 연결시켜 주기 위한 코드 작성 중에 얻은 중간 중간 결과물..




벡터, 내적, 외적, 임의축 회전 등.. 나름대로 많은 것을 다시금 배울 수 있었던 좋은 기회였다. 이제 코드 정리해서 프로젝트에 붙이기만 하면 될듯…

오렌지맵 예전의 2차배포자료

1) 공간격자(Spatial Grid) 적용
2) 수치지도의 도형 및 속성 편집 및 Undo, Redo 기능
3) Legend 컨트롤(레이어 관리 컨트롤) 추가
4) 좌표, 거리, 면적측정 기능
5) ESRI의 Shape의 가져오기
6) 그림 파일 및 높은 품질의 EMF 내보내기 기능
7) 개발자 지원 강화

다운로드