민족의 대명절 설날입니다!! 다들 떡국은 맛잇게 드시고 오셨나요??
저는 사정이 있어서 집에 내려가질 못했는데.. 이를 불상하게 여긴 여자친구가 김치찜을 사다줘서 김치찜과 함께 설을 보냈네요..
이번시간에는 아는 형의 부탁으로 만들어본 360도 로 촬영된 파노라마 이미지를 마치 돌려가면서 감상할 수 있는 일종의 뷰어를 소개하도록 하겠습니다. 아래는 완성된 결과물 동영상입니다. 언제나 그랫듯이 화잘이 영 맘에 들지 않네요... ㅠ_ㅠ
구글에서는 위와 같은 사진을 차로 돌아다니면서 전부 찍어서 마치 실제 거리를 돌아볼수 있는 듯한 느낌을 주는 Street View(http://maps.google.com/help/maps/streetview/)라는 서비스를 제공하고있습니다. 아직 한국은 서비스가 되고 있지 않아 많이 아쉬웠었는데 얼마전에 다음에서 로드뷰(http://local.daum.net/map/)라는 이름으로 서비스를 런칭 했습니다. 현재까지는 우리나라 주요 도시 주요 거리만 확인 할 수 있지만, 서비스가 확대되면 전국을 안방에서 돌아다닐수 있는 시대가 다가오지 않을가 생각해봅니다.. (다음에서 서비스하고있는 로드뷰가 구글에서 서비스 하는 StreetView보다 사진 화질이 좋네요 ㅎ)
자 그럼 지금부터 실제 구현에 필요한 내용을 이야기 하도록 하겠습니다. 360도 파노라마 이미지를 보여줘야 하니까 먼저 이미지가 필요하겠죠? 능력이 되시는분들은 직접 촬영을 하셔서 만드셔도 되겠지만.. 저는 여건이 안되기 때문에.. 인터넷에서 주워온 사진을 활용하도록 하겠습니다.. (구글에서 360 Panorama Image 라고 검색하니까 꽤 많이 나오네요..)
자 이제 사진은 준비를 했으니 실제 구현에 들어가 보겠습니다. 3D와 관련된 작업을 해보신 분들이시라면 아주 쉽게 이해하실 수 있으실 것입니다. (3D에 대한 경험이 없으시더라도 쉽게 이해하실수 있으니 너무 걱정은 하지 않으셔도 됩니다..) 보통 360도 파노라마 이미지를 촬영할때는 아래와 같이 특수한 카메라로 촬영을 합니다.
카메라는 위를 향해 있고 거기에 구 모형형으로 생긴 렌즈를 사용하여 촬영을 하는 방식이지요.. 이를 반대로 적용하면 간단하게 360 Panorama Image Viewer를 구현 할 수 있습니다. 3D공간에 구모형의 객체를 올리고 객체에 이미지를 입히기만 하면 되는것입니다. 그다음 3D카메라를 구의 중심에 놓고 상황에 따라 구를 회전시키면 Viewer가 완성되는 것이죠,
소스코드를 살펴보면 그렇게 어려운 부분은 없는데 아무래도 수식이 들어간 코드라 분량이 꾀 길어서 블로그에 올리기는 힘들것 같네요.. 소스코드는 첨부만 하도록 하겠습니다... 전체 소스코드를 요약하면 아래와 같은 과정을 거치게됩니다.
1. Viewport3D를 생성한다.
2. 원점(0,0,0)에 위치한 카메라를 생성한다.
3. 원점을 기준으로 뒤쪽에서 비추는 Light를 생성한다.
4. Sphere Model 을 생성한다.
5. Sphere Model에 Scale & Rotation Transform을 적용한다.
6. keyboard & mouse Event 에 따라 RotationTranfrom을 사용하여 구를 회전 시켜준다.
아래는 소스코드입니다. 기타 궁금하신사항은 리플이나 이메일로 문의해주세요!!

WPF360Panorama.zip
