'사진/360 파노라마'에 해당되는 글 91건

  1. 2018.04.20 기어360 파노라마 경험담
  2. 2018.04.06 360 파노라마 카메라의 시차(Parallax)
  3. 2018.04.02 360VR 액션캠 비교
  4. 2018.03.26 자동360VR 서비스 소개 - CUPIX.COM (3)
  5. 2018.03.11 기어360 파노라마를 PTGui로 편집하기
  6. 2018.02.19 기어360 (2016) 비디오 촬영 및 공유 방법
  7. 2018.02.08 기어360 설치-촬영-공유
  8. 2017.03.18 360*180 파노라마를 구글지도에 올리고 공유하기
  9. 2015.07.29 노키아, 실시간 360 VR 카메라 Ozo 개발
  10. 2015.07.17 GoPro 액션카메라로 360 VR 파노라마 촬영하기
  11. 2013.08.02 360*180 파노라마를 구글맵에 올리기 (5)
  12. 2013.03.27 전주-송광사-하동으로... 지오캐싱과 VR 파노라마 여행~~ (4)
  13. 2013.01.06 Facebook에 360*180 파노라마 투어 삽입하기 (8)
  14. 2013.01.03 벗꽃이 피기를 기다리며... (2)
  15. 2012.12.25 국립중앙박물관 파노라마 투어를 제작했습니다. (8)
  16. 2012.11.18 KRPANO 투어 기능 좀더 예쁘게 다듬는 방법 (8)
  17. 2012.09.09 KRPANO 액션 작성법
  18. 2012.09.06 VR 투어에 그림추가/리틀플래닛효과 추가 (12)
  19. 2012.08.29 krpano XML 레퍼런스
  20. 2012.08.29 딸래미 그림 전시회 VR 투어 (2)
  21. 2012.08.22 krpano 뷰어를 HTML 페이지에 삽입하기 (4)
  22. 2012.08.21 실내 파노라마 제작하기 - 바닥 자동 처리 (12)
  23. 2012.08.15 초간단 오브젝트VR 제작 (2)
  24. 2012.08.12 krpano - kmakemultires 도구 사용법 (4)
  25. 2012.08.07 krpano 제작 예제 (2)
  26. 2012.08.05 krpano의 개요 (4)
  27. 2012.01.18 무시차 점(無視差 點, Non parallax point) 찾는 방법 - 360*180 파노라마 (14)
  28. 2011.01.11 가우디의 도시 바르셀로나 - 360도 파노라마와 지오캐싱 (6)
  29. 2010.12.22 가우디의 도시 바르셀로나 - 360도 파노라마와 지오캐싱 (5)
  30. 2010.12.17 가우디의 도시 바르셀로나 - 360도 파노라마와 지오캐싱 (4)
사진/360 파노라마2018. 4. 20. 19:25

며칠전 집사람과 함께 결혼 30주년 기념으로 프라하에 다녀왔습니다. 원래 제가 360*180도 파노라마 사진을 좋아하기 때문에, 얼마전 구입한 기어360을 사용해서 파노라마 사진을 많이 촬영했습니다. 이 글은 그 과정에서 느낀 점입니다.

기어360을 사용하면 파노라마 사진을 쉽게 촬영할 수 있습니다. 스위치만 한번 눌러주면 되니까요. SNS로 공유하는 것도 쉽습니다. 제는 Theta360 사이트에 올리고 공유하는데, 이 글을 참고하시면 됩니다. 

제 기어360의 현재 상태

제가 촬영-공유가 쉽다고 말한 것은 기존의 360도 파노라마를 촬영하는 방법에 비해 쉽다는 것입니다. 즉 어안렌즈를 장착한 DSLR로 촬영하고, 컴퓨터에 다운로드 받아, PTGui 등으로 스티칭하고, 공유사이트에 올린 후, 링크를 받아서 공유하는 과정에 비하면 1/10 아니 1/100의 노력만으도 가능하기 때문입니다. 사실 혁명적 수준으로 간단해진 건 사실입니다.

하지만, 대부분의 사진은 그냥 핸드폰으로 촬영하고 공유하고 있는 현재, 기어360으로 파노라마를 촬영하고 공유하는 것은 여전히 많은 과정이 필요하고 번거롭습니다. 핸드폰으로 사진 촬영해서 공유하는 것과 비교하면? 한 20-30배 정도는 시간이 더 많이 걸리는 것 같네요. 

첫번째 촬영준비 과정. 카메라를 켜면 정상작동할 때까지 시간이 걸립니다. 모든 카메라가 시동시간이 필요하겠지만,  요즘 디카는 대부분 이런 과정이 극히 짧습니다. 스마트폰은 말할 것도 없구요. 기어360의 촬영과정은 1. 보호캡을 벗긴다. 2. 리모콘 스위치를 켠다. 3. 기어360 스위치를 켠다. 4. 기어360이 준비 완료되기까지 기다린다. 5. 셀카봉을 뽑니다. 6. 리모콘을 누른다. 

제가 스톱워치로 시간을 재보니, 여기까지 27초가 걸렸습니다. 상당히 걸리는 편이죠. 물론 리모콘이나 셀카봉 없이 촬영하는 방법도 있겠지만, 리모콘이 없으면 타이머를 이용하는 게 귀찮고, 셀카봉이 없으면 손이 크게 나와서 자세가 안나옵니다. 그래서 사실상 저에게는 필수입니다. 

또한, 리모콘이나 셀카봉을 생략한다고 하여 시간이 많이 줄어드는 것도 아닙니다. 리모콘에 전원을 넣어둔 상태에서 기어360이 완전히 준비되기까지는 18초 가량이 걸렸습니다. 겨우 5-10초 정도 단축된겁니다. 20초 걸리나 30초 걸리나, 사진을 찍는 입장에서는 별 차이를 느낄 것 같지 않습니다.

어쨌든, 사진 한장을 촬영하기 위해서 20초 이상 걸린다면 아무 곳에서나 촬영하기는 힘들게 됩니다. 제가 이번에 여행하면서 느낀 것도 기어360으로 촬영하려면 마눌님한테 잠시 기다려줘~~ 라고 하고선 한참 이리저리 조작한 후 촬영해야 해서, 마음껏 촬영하지 못했습니다. (익숙하지 않았던 이유도 있습니다. 이젠 꽤 익숙해졌으니 다시 여행을 가고싶네요. ㅎㅎㅎ)

그러다보니, 하루 종일 돌아다니면서 촬영해도 100컷 이상 촬영하기는 힘들었습니다. 물론 모든 곳에서 360 사진을 촬영하는 건 아니고 대부분 핸펀이나 일반 카메라로 촬영하다가 정말 마음에 드는 공간이 나타나면 기어 360을 꺼내는 거니까, 대부분의 경우 100장 이상 촬영할 필요는 없을 것 같지만 말이죠.

두번째 촬영 단계. 사실 촬영단계는 일반 카메라와 동일합니다. 스위치만 누르면 되니까요. 만약 SNS로 공유하지 않고 그냥 집에서 처리하겠다고 하면 여기서 끝내면 됩니다. 다른 곳으로 이동하여 좀 더 촬영할 수도 있고요.

그런데, 여기에서 지적할 것 하나. 배터리 용량이 너무 모자란다는 겁니다. 대충 느낌으로 제가 하루에 50장 ~ 100장 정도 촬영한 것 같은데, 배터리 한개로 부족했었습니다. 마침 제가 아래와 같은 배터리를 이베이에서 구입해서(사실은 제건 도착하지 않아서 빌려서. ㅠㅠ) 갔기에 망정이지 아니라면 중간중간 충전하느라 더욱 번거러웠을 뻔 했습니다. 게다가 저는 사진만 촬영해서 그렇지, 비디오까지 촬영했더라면 배터리 소모가 훨씬 더 컸을 겁니다.

세번째 핸펀으로 다운로드(스티칭)하는 단계. 사진을 공유하려면 일단 스마트폰으로 다운로드 받아야 합니다. 1. 스위치를 켠다. 2. 준비완료 연결음을 기다린다.(스마트폰에 자동연결됨) 3. 앱에서 Gear360 갤러리에 들어간다. 4. 원하는 사진을 선택한다. 5. 저장을 누른다. (스티칭이 되면서 저장됨) 7. 기기 갤러리에 들어간다. 8. 해당사진을 클릭하여 확인해본다.

여기까지 제가 스톱워치로 시간을 재보니 대략 1분 20초 정도 걸렸습니다. 여기에서 핵심 사항은 스티칭-저장하는 시간인데, 이외로 이 시간은 별로 걸리지 않습니다. 10초 정도에 불과합니다. 그런데, Gear360갤러리에 들어가면 기기에 있는 사진의 목록을 만드는 시간이 10초 정도, 또다시 스마트폰 갤러리에서 목록을 만드는 시간이 10초 정도씩 걸립니다. 

매번 스위치를 넣을 때마다 똑같이 반복되는 것으로 보아 갤러리에서 목록을 별도로 관리하지 않는 듯 합니다. 아무튼 이 단계는 조금 앱을 최적화시키기만 하면 속도가 빨라지지 않을까... 싶은데 좀 아쉽습니다.

네번째 SNS에 공유하는 단계. 가장 편한건 페이스북에 공유하는 것입니다. 페이스북에는 올리기만 하면 360도 파노라마를 인식하여 적당한 형태로 공유할 수 있습니다. Google 포토의 경우도 360*180 파노라마로 인식을 하기는 하지만, 공유시켜보면 여러번 클릭을 해야만 볼 수 있어서, 360파노라마 공유용으로 썩 적합하지 않습니다. 기타 다른 사이트에 올리면 거의 일반 사진으로 먹힙니다. 카카오톡등의 메신저로 보내도 그냥 사진 그대로만 전달되므로, 360도 파노라마의 느낌을 전달할 수 없습니다.

사실 이건 삼성이 해결해주어야 할 일입니다. 삼성 클라우드에 올릴 수 있도록 하고, 아주 공유하기 쉽도록 해줘야 하는 거죠. 하지만, 아주 더럽습니다. 아래는 Gear360앱에서 공유를 눌렀을 때 나타나는 화면인데, 보시는 것처럼 하루에 2GB까지만 공유할 수 있다고 나옵니다. 하루에 2GB면 쓸만하죠. 문제는 이게 딱 이틀뒤에는 사라진다는 겁니다. 임시공유가 목적이면 모르겠지만, 되도록이면 사용하지 마라... 넘들이 하니까 나도 하는 척은 하겠다... 하는 뜻으로만 보입니다. 또한 공유링크를 받아서 360파노라마를 보려면 여러번 클릭하는 것도 못마땅한데다가 드래그 하는 것만으로는 360*180 모두를 확인할 수 없습니다. 머리위쪽과 바닥쪽을 보려면 핸드폰을 기울여야만 보입니다. 한마디로 그냥 쓸만하지 못합니다.

그래서 저는 이 글에서 쓴 것처럼 Theta360 사이트를 이용하고 있습니다. 간단히 말하면 1. Theta360앱을 실행한다. 2. 원하는 사진을 고른다. 3. 적절한 제목/내용/태그를 입력한다. 4. Theta360 사이트에 업로드 한다. 5. Brouser로 확인을 누른다. 6. 주소를 복사한다. 7. 원하는 사이트들에 주소를 복사한다. 8. 원하는 SNS 사이트나 메신저에 주소를 붙인다. 이런 순서로 진행하면 됩니다.

제가 스톱워치로 체크한 시간은 대략 1분 30초 정도 걸립니다. 사실 이건 인터넷 연결속도에 따라 다르기 때문에 빠르다 늦다고 이야기할 것은 아니고, 만약 삼성에서 직접 지원을 하였다면 거의 이 과정들이 필요하지 않을 것이기 때문에 10-20초 이내로 해결될 수 있지 않을까 싶습니다. 아무튼 문제의 삼성입니다.

===

흠... 그러니까 기어 360이 꺼져 있는 상태에서 촬영하고 공유한다면 3분30초 정도 걸리는 셈이네요. 이건 최적화되었을 때의 이야기이고, 실제 사용하려다보면 실수도 하고 그러니까 더 늘어납니다. 제가 방금 테스트 해보니 4분 50초 걸렸습니다. 게다가... 단계를 세어보니 거의 25단계가 됩니다. 물론 제가 자세하게 쓰려다보니 늘어난 것도 사실입니다만, 사진 공유에 비하면 엄청 많은거죠.

그러니까 다른 사람들과 여행을 하던 중이라면, 기어360으로 360파노라마를 촬영하고 실시간으로 공유하는 것은 불가능하다고 봐야 합니다. 제가 여행중 약 150장의 사진을 촬영했고, 이중에서 5장 정도만 공유했는데, 이것들은 모두 레스토랑이나 카페에 가서 주문을 기다리면서 올렸던 겁니다. 박물관에서 멋진 그림을 봤다고 그 자리에서 촬영하고 올리려면 동행자가 짜증낼게 분명하니까요.

===

지금 삼성은 기어360 을 중심으로한 VR 사업을 거의 접은 걸로 압니다. LG는 일치감치 접었고, 고프로도 휘청거리고 있고... 아마도 다른 업체들도 그리 좋은 상태는 아닐거라고 봅니다. VR 자체가 제 생각엔 VR 헤드셋에서 볼 수 있는 것처럼 아직도 거추장스럽게 크고 불편하며, 360 카메라도 아직까지 품질과 편의성이 부족하기 때문입니다. 

360 VR 카메라가 대중적이 되려면... 

1. 카메라 시동시간이 대폭 단축되어야 한다. - 사실 이건 요즘 카메라기술로 보면 어렵지 않을 것 같습니다. 360카메라의 경우 전원을 켰다껏다 반복하게 되므로, 이를 줄이면 배터리 효율도 올라가게 되지 않을까 싶습니다.

2. 360VR 카메라에서 자동으로 스티칭을 해주면 좋다. - Richo Theta의 경우 사진을 촬영하면 바로 기기 내부에서 스티칭이 진행됩니다. 따라서 그냥 다운로드만 하면 사용할 수 있습니다. 그런데 기어 360의 경우 5초를 약간 넘는 수준이니 크게 문제되는 건 아닐 것 같습니다.

3. 360카메라에서 스마트폰으로의 다운로드가 투명하게 이루어져야 한다. - 옵션을 제공해야겠지만, 찍으면 바로 스마트폰으로 자동 다운로드 받도록 하는 것도 어렵지 않을 것 같습니다.

4. 클라우드 업로드가 쉽고 편하게 - 구글 Photo처럼 무한정의 공간을 제공하고, 어디든 쉽게 공유할 수 있도록. 그리고 360Photo 공유사이트처럼 다양한 기능을 추가제공....

머 이 정도가 생각납니다.  간단히 말하면 아주 쉽고 편하게 만들어야 한다는 겁니다. 특히 핵심은 클라우드 서비스와의 연동이 되어야 한다는 것. 스마트폰으로 사진촬영하는 만큼은 불가능하겠지만, 그래도 그 수준까지 좁힐 수 있도록 추구한다면 어느 정도는 만족스런 결과가 나오지 않을까 싶습니다.

사실 더 중요한 건 해상도 등 사진 품질입니다. 기어360 2016의 해상도는 7776x3888 로서 어느 정도 충족되긴 했지만, 사실 품질이 많이 떨어집니다. 사진을 확대해보면 잡음이 많거든요. 아마도 해상도를 강조하다보니 강제로 Edge Enhancement를 적용한 듯 합니다. 어쨌든 일반 사진정도에 해상도는 8000x4000 정도 이상이 되어야 왠만큼 감상하는 데 지장이 없을 겁니다. 하지만, 사진의 해상도는 지금 나와있는 기기들이 모두 1/2.3" CMOS 센서를 사용하는 것으로 보아, 쉽지는 않을 것 같아 일단 주요 리스트에서는 뺐습니다.

아무튼... 현재의 상황을 보았을 때 가까운 시간 이내에 이런 모든 것을 만족하는 360VR 카메라/사이트/서비스가 나올것 같지는 않을 것 같네요. 멍청한 삼성.... ㅠㅠ

민, 푸른하늘


Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

사진/360 파노라마2018. 4. 6. 11:50

파노라마 사진을 촬영할 때 반드시 고려해야 하는 것이 시차(Parallax) 문제입니다. 360*180 파노라마를 촬영하는 분들이 사용하는 Cubicpan과 같은 파노라마 헤드(Panorama head)는 이 시차를 없애기 위한 목적의 장비입니다.

Cubicpan 파노라마 헤드

이 글에는 시차를 없앨 수 있는 무시차점(NPP : Non Parallax Point)를 찾기위한 방법이 기술되어 있는데, 어렵지는 않아도 꽤나 귀찮은 작업입니다. 그럼에도 불구하고, 이와 같은 방법이 필요한 것은 파노라마 사진을 정확히 촬영하려면 아래 사진들과 같이 무시차점을 중심으로 사진을 촬영해야 하기 때문입니다. (참고 : 파노라마사진의 원리와 촬영방법

파노라마사진기파노라마 사진기의 원리

하지만, 요즘 나오는 Gear360과 같은 일체형 360 카메라의 경우, 이것이 불가능합니다. 어안렌즈가 달린 두개의 카메라로 동시에 촬영하기 때문에 무시차점을 일치시킬 수 없기 때문입니다. 로드뷰나 구글 스트릿뷰에서 가끔 머리와 몸통이 따로 놀거나 아래와 같이 겹쳐져 보이는 것도, 모두 동일한 문제 때문에 발생하는 것입니다. 

이러한 시차 오류는 거리에 따라 달라집니다. 거리가 멀다면 거의 눈에 띄지 않지만, 거리가 가까울수록 오류가 크게 나타납니다. 

그런데... 이런 시차 오류가 얼마나 크게 발생할까요? 사실 예전부터 궁금했는데, 이번에 기어360을 사용해서 Cupix.com의 자동360VR을 만드는 서비스를 테스트해보다 보니 좀더 정확히 파악하고 싶어졌습니다.

기어360 등의 360 액션캠은 모두 화각이 180도 이상되는 어안렌즈(fish-eye)를 사용하고 있습니다. 이 어안렌즈의 기하학적인 원리는 영문 위키백과 Fish-eye 문서중 Mapping Function을 보시면 되는데, 저는 그냥 이해하기 쉽도록 equidistant 모델을 사용하는 걸로 가정하겠습니다. equidistant 모델은 카메라 렌즈에서 물체를 바라볼 때의 각도 차이와 사진상에 촬영되는 이미지의 거리와 비례하는 것을 말합니다.

즉, 카메라 정면에서 1도 차이가 사진상에 10pixel 차이가 난다고 가정하면, 45도 위치에 있는 물체든, 90도 위치에 있는 물체든 모두 1도 차이는 사진상에 10pixel 차이가 난다고 가정한다는 것입니다. (물론 이런 Mapping Function을 사용하는 어안렌즈가 오히려 드물고, 대부분 equisolidangle 방식을 사용한다고 합니다만...)  

그리고, 어안렌즈의 화각은 정확히 180도 이고, 위의 오른쪽과 같이 CMOS에 꽉차도록 촬영한다고 가정하겠습니다. 물론 어안렌즈의 화각은 모두 180도보다 크고, 꽉 차게 촬영할 지 좀 벗어나게 촬영할지는 카메라 메이커에 따라 달라지지만, 그냥 계산이 편하도록 이렇게 가정합니다. 

CMOS는 SONY IMX 377의 스펙을 참조하여, 4000x3000 픽셀짜리를 사용한다고 가정하겠습니다. 따라서 180도가 3000픽셀이므로 1도 차이가 약 16.7 pixel을 차지하는 셈이네요. 센서의 크기는 1/2.3" 입니다. 6.16x4.62mm 라니, 4.62mm에 3000 픽셀이 들어 있습니다.

다음으로 어안렌즈가 아래와 같이 배치되어 있다고 가정하겠습니다. 아래쪽에 있는 위치는 무시차점의 위치입니다. 원래 여기에 배치해야 하지만, 카메라의 구조상 d 만큼 벗어나게(앞으로 튀어나오게) 배치했다고 생각하겠습니다. 여기에서 계산하고자 하는 것은 이 거리 d와 중심에서 벗어난 각도 θ에 따라, 촬영된 각도의 차이 δ가 얼마나 발생하느냐 하는 것입니다. (두 카메라에서 벗어난 각도는 약간씩 다르고, 카메라 중심에서 물체까지의 거리도 조금 다르지만, d 가 S에 비해 상당히 작다고 가정하고 무시합니다.)

여기에서 d 는 대략 2cm 에서 4cm 정도로 두면 될 것 같습니다. 제가 이번에 여러 기기들을 가져와서 대충 재어본 결과입니다. (정확하지는 않습니다.)

이제 계산을 해보겠습니다. 다음은 d=20mm  일때, 즉 렌즈간 간격이 20mm 일 때의 각도오류입니다. 예를 들어, 아래 주황색 0.88 이란, 정면에서 50도 벗어난 곳에 1미터 지점에 있는 물체는 원래 촬영되어야 할 위치에서 0.88 도 벗어난 곳에 촬영된다는 의미입니다.

d20
theta1002005001000200050001000050000
00.000.000.000.000.000.000.000.00
101.990.990.400.200.100.040.020.00
203.921.960.780.390.200.080.040.01
305.732.861.150.570.290.110.060.01
407.373.681.470.740.370.150.070.01
508.784.391.760.880.440.180.090.02
609.924.961.980.990.500.200.100.02
7010.775.382.151.080.540.220.110.02
8011.295.642.261.130.560.230.110.02
9011.465.732.291.150.570.230.110.02


이것을 pixel 수로 환산하면 아래와 같습니다. 예를 들어, 정면에서 90도 방향으로 1 미터 떨어져 있는 물체는 양쪽 센서에 약 20 픽셀정도 차이난 위치에 촬영된다는 뜻입니다. 더 가까운 곳에 있는 물체들은 당연히 볼 필요도 없고, 적어도 5미터는 떨어져 있어야만 스티칭하는데 별 문제가 발생하지 않는다고 보아야겠네요.

픽셀수3000각도180
1도당픽셀
16.67
theta1002005001000200050001000050000
00.000.000.000.000.000.000.000.00
1033.1616.586.633.321.660.660.330.07
2065.3232.6613.066.533.271.310.650.13
3095.4947.7519.109.554.771.910.950.19
40122.7661.3824.5512.286.142.461.230.25
50146.3073.1529.2614.637.322.931.460.29
60165.4082.7033.0816.548.273.311.650.33
70179.4789.7335.8917.958.973.591.790.36
80188.0894.0437.6218.819.403.761.880.38
90190.9995.4938.2019.109.553.821.910.38


d=40일 경우는 아래와 같습니다. 그냥 위의 표에 2배이니 구지 필요하지는 않겠지만요. ㅎㅎ

픽셀수3000각도180
1도당픽셀
16.67
theta1002005001000200050001000050000
00.000.000.000.000.000.000.000.00
1066.3333.1613.276.633.321.330.660.13
20130.6465.3226.1313.066.532.611.310.26
30190.9995.4938.2019.109.553.821.910.38
40245.53122.7649.1124.5512.284.912.460.49
50292.61146.3058.5229.2614.635.852.930.59
60330.80165.4066.1633.0816.546.623.310.66
70358.94179.4771.7935.8917.957.183.590.72
80376.17188.0875.2337.6218.817.523.760.75
90381.97190.9976.3938.2019.107.643.820.76

===

이상입니다. 흠... 계산은 계산이니까... 하긴 했습니다만, 이것말고도 고려할 요소가 많을 것 같은데... 싶네요~~ ㅠㅠ

민, 푸른하늘




Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

사진/360 파노라마2018. 4. 2. 17:03


요즘은 좀 잠잠해졌습니다만, 2-3년전 VR(Virtual Reality)에 관한 관심이 높아지면서 많은 회사들이 360 VR 카메라를 제작했습니다. 일부는 이미 사업을 정리했다는 소식도 들리지만, 몇몇 회사들은 계속 신제품을 내고 있습니다.

저는 오래전부터 360 파노라마 제작에 관심이 많았지만, 사실 최근의 360 카메라에는 별로 관심이 없었습니다. 일체형이면서 소형 카메라이기 때문이지만, 화질이 제 기준에는 너무 못미치는데다, 가격도 만만치 않았기 때문입니다.

그런데 우연치 않게 삼성 기어360 2016버전이 단종되면서 10만원 이하에 구할 수 있다는 걸 알고 하나 장만하고선 조금씩 만지다보니 꽤나 재미있는 물건이라는 걸 알게되었습니다. 어차피 화질이야 어쩔 수 없다고는 해도 그냥 리모콘 단추만 누르면 360 파노라마가 촬영되고, 스마트폰으로 몇번 조작만 하면 쉽게 친구들과 공유할 수 있다는 편리성 때문입니다. 요즘도 어디 나갈 때는 꼭 이녀석을 챙겨다닙니다. 기념할 만한 순간이 있으면 그냥 똑딱이 사진기 꺼내들 듯 기어360으로 한장 남기고 있습니다.

그러던 중 우연히 자동 360VR 서비스를 구현한 Cupix 의 기능을 테스트하던 중, 이 회사에서 보유한 여러가지 360 VR 카메라를 빌려줄 수 있다고 하여, 잘됐다 싶어 테스트해보기로 했습니다. 기어360보다 나은 기기도 있다고 알고 있으니 한번 비교해 보자고요.

일단 이번에 제가 만져본 VR 카메라들의 목록입니다. 여기에 나온 내용은 여기를 비롯해 여러군데에서 찾아서 비교해 본 것입니다. 이 표의 원본은 여기에 있으니 참고하세요.

원래 이 글의 목적은 이들 카메라의 사진 품질을 비교하는 것이었습니다. "camera lens resolution chart" 으로 검색해서 나온 여러가지 도안중 적당한 것을 붙여두고, 일정한 거리에서 촬영해서 비교하는 방식으로요. (물론 엄격하게 비교를 한다면 촬영환경도 동일하도록 유지해야 하고, 비교도 좀더 과학적으로 해야겠지만...ㅠㅠ_

그런데 사진의 품질은 그다지 차이가 많이 나지 않았습니다. 물론 해상도 차이가 있기는 해도, 원래 센서 사이즈가 동일하기 때문에 (고프로는 확인이 안되지만, 거의 1/2.3" 정도입니다.) 차이가 없는 게 아닌가 생각해봤습니다. 어쨌던 그러다보니 비교가 무의미해졌고, 그래서 동영상도 비교를 해보기로 했습니다.

위 표에서 보시면 동일한 센서를 사용하는데도 불구하고 사진해상도와 동영상 해상도가 다릅니다. 동영상의 경우, 많은 양의 자료를 처리하다보니 프로세서를 비롯한 하드웨어 구성에 따라 달라지는 게 아닌가 합니다. 그리고 사진품질의 경우에서도 보시는 것처럼, 단순 해상도로 비교할 수 없는 매우 다양한 비교인자가 필요합니다. 그러나, 저는 능력이 부족하여 그냥 동일한 지점에서 영상을 서로 비교해 보는 정도로민 진행했습니다.

그렇지만, 360VR의 경우 단순히 영상의 품질만으로는 비교할 수 없습니다. 사진이나 동영상은 워낙 오랫동안 사용되어 왔기때문에 누구나 쉽게 촬영하고 쉽게 감상하고 공유할 수 있지만, 360VR의 경우엔 사용법도 익숙하지 않고, 처리도 여러단계를 거쳐야 하며, 공유할 수 있는 플랫폼도 매우 제한적이기 때문에, 이 모든 것을 얼마나 쉽게 부드럽게, 투명하게 만들 수 있느냐 하는 것까지도 함께 평가되어야 할 요소입니다.

머... 그래도 저는 계속말하지만, 전문적인 평가를 할 수 있는 상태가 아닌만큼 사진촬영하고, 비디오 촬영해서 스티칭을 한 뒤 유튜브로 올리는 과정에서 느낀 점들만 썼습니다. 물론 이것도 겨우 몇시간 써본 정도라서 객관적이라고 보기는 힘들다는 것을 고려해서 읽어주시기 바랍니다.

GoPro Fusion

- GoPro 앱을 설치하려고 하였으나, 내가 가진 폰(A8)에서는 제어가 안된다고 나왔음. 보급형 모델이기 때문일 수도 있겠다 싶었으나, 최신 스마트폰에서도 동일한 문제 발생. 결국 앱이 잘못된 것일 가능성 높음.

- GoPro Fusion Studio를 PC에 깔아서 사용. 자동으로 연결하여 360 사진/비디오로 스티칭 해주는데, 사용방식이 직관적이어서 어렵지 않았음. 

- 하지만, PC에 USB로 연결하면 연결이 될때보다 안될 때가 많았음. GoPro Fusion쪽에 문제가 있는듯.

- 처리방법

- GoPro Fusion을 연결한뒤 Fusion Studio 실행. 아래와 같이... 여기서 왼쪽을 클릭하면 됨


- 이제 왼쪽에 리스트가 나타남. 여기에서 선택을 하고 [Add to Render Queue]를 눌러줌

- 선택끝나면 윗쪽에서 [RENDER(?)]를 누르고 아래쪽 [RENDER ALL]을 누르면 스티칭 완료.

- 사진 촬영 결과. 

- 다른 기종에 비해 아주 좋다고는 할 수 없으나, 깔끔한 편임. 

- 음성으로 촬영 가능. 하지만, 리모콘이 없다보니(앱이 설치되었다면...앱으로 제어가능 했을 듯.) 소리를 지를 수도 없고... 사진 타이머 촬영이 불가능해서 멀리 떨어져서 촬영하려면 애로가 있을 듯.

- 좌측우측 사진이 따로 따로 저장됨(별도의 SD 카드에 저장됨. 각각 Fusion Back, Fusion Front로 나타남). 별도의 스티칭 프로그램 사용한다면 맞는 걸 찾아서 넣어주어야 하기때문에 어려울 수 있음. 하지만, 고프로를 PC에 연결하면 Fusion Studio가 자동 작동되고, 고프로에서 촬영된 사진을 선택하면 직접 처리할 수 있어서 일반적으로는 어려울 이유가 없음.

- 처리된 비디오의 크기가 엄청나게 커짐. 원래 촬영한 원본은 각각 200MB 정도였는데, 처리 완료후 생성된 비디오는 2GB가 넘음. 5배 정도 커진 것. 이유를 모르겠음.

- 비디오의 품질은 타의 추종을 불허하는 정도. 해상도도 뛰어나고 색감도 좋음.

- 특히 Stabilizer의 위력이 대단함. 거의 자이로를 사용한 것 같은 느낌. (Stabilizer 적용모드에 2가지가 있는데, Full Stabilization으로 적용하면 카메라 방향이 항상 동일한 방향으로 유지되고,  Anti-shake를 적용하면 카메라를 기울였을 때 화면이 수평을 보지 못하는 문제가 있었음) 

Gear 360 2017

- 사용방법은 이전 글 참조 : 2016/2017버전은 거의 동일함

- 앱을 사용하여 제어 가능. 별도의 리모콘으로도 제어 가능.

- 사진 품질은 별로 좋지 않은 편임.

- 비디오 품질도 그냥 그런 정도. Stabilizer가 있다고는 되어 있으나, 별로 잘 적용된다는 느낌은 없었음.

- 최대해상도(4096x2048)일 때 24fps뿐이 안되는 것이 영향을 미쳤을 수도 있음.

- 라이브 스트리밍이 가능하다는 점 외에는 별로 2016버전보다 좋다는 느낌은 없었음.

- 다른 기기들보다, 핸드폰용 앱은 아주 좋은 편임. 특히 기기를 켜기만하면 핸폰에서 인식을 하여 자동으로 연결시켜주므로, 매우 편리함. (그래서 다른 기기들에는 앱이 안돌아가는 걸까?) 다만 갤러리 상태에서 기존 사진 리스트를 불러오는 시간이 너무 길어서 짜증스러움.

- 데스크탑용 프로그램은 ActionDirector라고 CyberLink라는 회사에서 제작한 프로그램을 사용하는데, 원래 비디오 편집용 프로그램이라서 360VR을 위한 최적화된 프로그램이 아니며 산만해 보임.

- 공유 플랫폼이라고 제작한 samsungvr.com은 거의 버려진 자식느낌.

Gear 360 2016

- 사용방법은 이전 글 참조 : 2016/2017버전은 거의 동일함

- 화질은 과하게 Sharpening을 한 느낌. 잡음이 무척 많음

- 화질이 그렇게 떨어진다는 느낌은 아님. 

- 그러나 Stabilization 기능이 전혀 없어서 비디오 보기는 불편함.

리코 쎄타 S

- Ricoh Theta S 앱을 사용하여 연결. Wifi로 연결하는데, 매번 기계를 켤 때마다 Wifi 설정을 바꿔주어야 해서 매우 불편함.

- 촬영하자마자 스티칭되어(기계에서) 스마트폰으로 전송됨. 전송되는 시간이 조금 걸리는 편(10초 정도) 성능이 떨어지는 기기에서 스티칭하기 때문에 발생하는 문제로 보임.

- 기기를 PC에 직접 연결해보면 촬영 원본은 없고 스티칭이 되어 있는 사진만 있음. (단, 비디오는 스티칭 되어 있지 않음)

- 따라서 앱을 연결하지 않고 기계만으로 촬영하려면, 셀프타이머 촬영이나 리모콘이 필요함. 

- 사진품질은 거기서 거기 정도.

- 앱에서 비디오를 다운로드 받고 스티칭하는 속도는 평균적인 정도임. 

- PC용 스티칭 프로그램은 가장 사용하기 편함. 그냥 사진/비디오를 끌어다 놓으면 됨.

- 비디오 품질은 예상처럼 가장 안좋음. 해상도가 너무 낮으며, Stabilization 기능이 없음.

- 데스크탑용 프로그램은 가장 편하다는데 직접해보지는 않았음. 특히, 방향 편집이 편하다고.

- 사진/비디오 공유사이트는 가장 편함. 현재도 잘 유지되고 있음. 

LG 360캠

- LG 360 캠 매니저 을 설치하여 사용. 기기에 전원을 넣고 앱을 실행하면 Wifi 를 자동으로 잡아주어 사용하기 어렵지 않음.

- 앱에서 다운로드/스티치. 속도는 평균정도.

- 사진품질은 비슷비슷

- 비디오 품질은 그냥 별로... Stabilzation 기능 없어서 불편.

샤오미 Mi Sphere

- 매뉴얼은 여기

- Mi Sphere Camera 앱을 설치하여 사용

- 사진 품질은 그냥 그런 정도.

- 비디오 다운로드가 아주 불편함. 폰으로 다운로드 받으면 완료되는 게 아니라, 설정을 바꾼 후 (Gyro Stabiliztion 등) Export 를 눌러주어야 함. More(...)를 눌러야 하기 때문에 어디에 위치하는지 알기 힘듦

- 한번 다운로드 받으면 이미 다운로드 받았다고 나옴. Export도 마찬가지.

- Full 해상도로 다운로드 되지 않음. 저장된 당시에는 210MB였으나, Export를 시키면 10MB(1440x720)로 줄어들고, 해상도가 으로 줄어듦. 

- 그래서 결국 PC용 스티칭 프로그램을 설치하여 작업함.

- 처리 속도가 매우 느림. (고프로 퓨전 스튜디오 작업에 비해 3-5배 정도 걸림)

- 비디오 품질은 별로 좋지 않은 편. 

- Stabilizer 가 적용되었으나, 흔들림이 많이 남아 있음.

샤오이 Yi 360 VR

- Yi 360을 설치하여 사용. 사용하기 편리. Wifi에 자동 접속해줌.

- 사진은 별도의 작업없이 기기에서 직접 스티칭됨

- 사진품질은 비슷비슷

- 비디오 촬영시에도 실시간 스티칭이 지원됨. (단, 3840x1920까지 지원) 최대해상도로 촬영을 위해서는 실시간 스티칭을 꺼야 함.

- 데스크탑용 앱은 직관적. 바로 Drag/Drop 한 뒤 Stitch를 눌러주면 됨. 

- 화질은 좋은 편. 

- PC용 스티칭 소프트웨어의 속도가 아주 느림. Stabilize 모드 적용여부를 선택할 수 있음.

- 아래는 Stabilize(EIS) 모드 적용한 버전. 맨 마지막에 한바퀴 돌았는데도 동일한 방향을 유지하고 있음. (이건 Gopro Fusion에서 Full Stabilization 을 적용한 것과 동일)

- 그런데... 데스크탑 버전에서 스티칭을 해보면 속도가 너무 느림. 테스트해본 기기중 가장 느린 듯. (샤오미 Mi Sphere 도 만만치 않게 느림) 스티칭을 할 때 영상매칭까지 고려한다면 이해가 안되는 건 아니지만, 그런지 아닌지는 아무런 근거가 없음)

===

아래는 4개의 비디오를 비교해 본 것입니다. 좌측아래 GoPro Fusion 이 제일 품질이 좋고... 시계방향으로 Yi 360VR, Gear360 2016, Gear360 1017 순서로 품질이 좋은 것 같습니다. (LG 360CAM과 Ricoh Theta S는 의미가 없어서 생략했습니다.)

이 그림 한장으로 비교하기는 힘들겠지만, 전체적으로 비디오의 품질은 고프로가 확실히 뛰어납니다. 색감도 괜찮고요. (색감은 촬영조건에 따라 달라질 수 있습니다.) 

Ricoh Theta S나 LG 360CAM 의 경우엔 해상도가 너무 낮아서 비교하기도 민망할 정도이지만, 다른 종류들은 거의 비슷비슷한 것 같습니다. 

이에 비해, 사진의 품질은 정말로 비슷합니다. 해상도만으로는 Ricoh Theta S 가 제일 낮고(15M(5376 x 2688), Gear 360 2016이 가장 좋은데(30M(7776x3888)) Resolution Chart상으로는 별로 차이가 많지 않은 것 같습니다. (다만 Gear360 2016은 해상도가 높고 구분도 잘되긴 하지만, 과하게 Sharpening을 적용한 것 같은 느낌이라서... 아마도 다른 사진들도 Sharpening을 더 적용하면 나아질 것 같아서 비슷하다고 말씀드렸습니다.)

전반적으로 볼때... 제가 테스트해본 느낌으로는 아직 360VR이 보편화되기는 힘들겠다는 생각입니다. 일단 기기 자체도 만만치 않게 비싼데다가(GoPro Fusion은 80만원대이고, 왠만한 제품들은 다 40만원대) 앱과 데스크탑처리 소프트웨어, 그리고 공유플랫폼 등이 (제품에 따라 다르기는 하지만,) 아직 정말 누구나 편하게 사용할 수 있는 정도는 아닙니다. 아니 아직도 너무 복잡한 것 같다는 게 결론입니다.

그리고 만약 360VR에 관심이 있다면, 현재 10만원대 이하로 구입할 수 있는 Gear360 2016버전이 꽤 괜찮은 선택이라는 생각도 드네요. 데스크탑용 처리소프트웨어와 공유플랫폼은 엉망이지만요.

좀 더 쉽게 접근할 수 있을 때가 오겠죠. 다음번 물결에는. ㅎㅎ

민, 푸른하늘

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

사진/360 파노라마2018. 3. 26. 16:07

며칠전 360 파노라마를 사용해서 재미있는 사업을 하는 분을 만났습니다. cupix.com 이라는 회사에서 근무하시는 분입니다. 알고보니 이 회사의 창업주가 제가 예전에 알던 소프트웨어를 개발하신 분이라 하더군요. RapidForm 이라고 Laser Scanning data로부터 3D 모델을 만들어내는 소프트웨어였는데, 그 사업은 성공적으로 다른 회사에 넘기고 이 서비스를 개발중이라고 해서... 많이 반가웠습니다. (실제로는 한번도 뵙지는 못했습니다. ㅎㅎ)

cupix.com에서 지원되는 서비스를 한마디로 하면... 연속해서 촬영한 360 파노라마 사진을 올리면, 360 파노라마 간의 상호위치를 자동 계산해서 투어로 제작해주는 서비스입니다. 서로 인접한 360 파노라마 사진에서 공통으로 촬영된 부분을 사용하여 포인트 클라우드를 만들고, 이 과정에서 각 파노라마 사진의 촬영위치를 계산하는 것이죠. 촬영위치만 알아내면 투어로 제작하는 것 자체는 간단하고요.

먼저 제작된 360VR 투어는 여기에서 보실 수 있습니다. 크롬 브라우저에서만 보인다고 하니 참고하세요.

제가 테스트한 과정은 다음과 같습니다.

먼저 촬영장소는 제가 현재 다니고 있는 R-Camp 라는 곳입니다. 강남구 역삼로에 있는 팁스타운 S2라는 곳으로, 아래는 입구에 있는 안내도입니다. 상호와 이름은 삭제했고 일부러 회전을 시켰습니다. 파노라마는 아래 그림에서 빨간선을 따라서 대략 2-3미터 정도 간격으로 촬영했습니다. 

360 파노라마를 촬영한 기기는 기어360입니다. 아래 그림처럼 간이 삼각대를 이용했고, 아직 리모콘이 없어서 제 스마트폰으로 촬영했습니다.

촬영한 파노라마 사진들은 기어360앱에서 자동스티칭을 했습니다. 그냥 저장만 하면 자동 스티칭되기때문에 편합니다. 총 38장을 촬영했습니다.

이렇게 파일이 준비되면 Cupix.com에 사진을 올리기만 하면 됩니다. 가입 안했다면 가입을 하시고... 아래 같은 Workspace 화면에서 [New 3D Tour] 라는 파란 버튼을 누르시고... 

화면에서 시키는 대로 제목넣고, 촬영지역이 몇군데 인지 지정하면 아래 화일이 나오는데, 여기에 촬영된 360도 파노라마를 끌어다 놓기만 하면 됩니다.

그러면 열심히 계산을 시작합니다. 계산이 상당히 오래 걸리는 편인데요, 정확히 시간을 체크하지는 않았지만, 38장의 파노라마를 한시간 반정도 걸려 처리한 것 같습니다. 처리가 완료되면 등록한 이메일로 통지가 옵니다.

처리된 360VR 투어는 여기서 볼 수 있습니다. 물론 인터랙티브 합니다. 아래는 한 부분을 캡쳐한 것입니다. (구글 크롬에서만 볼 수 있습니다.)

아래는 처리된 결과중에서 Floor Plan 화면을 본 것입니다. 좌측엔 계산된 촬영지점이 표시되고, 오른쪽은 현재 클릭한 사진에 대한 360도 파노라마가 표시가 됩니다. 사진에서 동그랗게 표시된 지점들은 파노라마 촬영지점입니다. 물론 좌측이든 우측이든 동그라미를 클릭하면 그 사진으로 이동됩니다. 좌측에서 선으로 연결된 사진은 우측에서도 선으로 연결되어 있고, 이것이 파노라마 뷰에서 볼때도 화살표로 연결됩니다.

한가지 특이한 점은 아무 것도 입력하지 않았는데, 거리/크기를 표시해준다는 것입니다. 그런데 안타깝게도 그게 정확하지는 않더군요. (아무런 기준도 입력하지 않았으니 정확하지 않은게 당연하겠죠. 예를 들어 위에서는 대략 빨간선 위쪽으로 10미터, 아래쪽으로 20미터쯤으로 총 30미터가 넘는 걸로 나오는데, 실제로 재보면 23미터 정도가 되니 한 30퍼센트 정도 크게 계산된 것 같네요.

===

cupix.com 서비스에서 이렇게 자동으로 촬영위치를 계산해 내는 것은 마이크로소프트 PhotoSynth와 비슷한 원리입니다. 포토신스는 하나의 대상을 여러 각도로 사진을 촬영해서 올리면 사진의 상호위치를 판별해서 부드럽게 인접사진을 볼 수 있는 서비스입니다. 물론 전경사진과 근접사진도 비교해볼 수도 있어 획기적인 기술이었고, 지금 봐도 정말 멋진 서비스인데... 아쉽게도 서비스가 종료되었다네요. 기술은 좋아도 별로 돈이 안되는 서비스이기 때문이겠죠. ㅠㅠ

아무튼... cupix.com도 기본적으로 사진을 사용해서 3D 모델을 만들게 됩니다. 포토신스와는 달리 360파노라마를 사용한다는 점에서 독특하지만요. 어쨌든 이렇게 내부적으로 3D 모델이 만들어져 있다보니, 아래처럼 파노라마내에 3D 객체를 쉽게 만들 수 있습니다.

아래는 반대방향쪽으로 가서 이 3D 객체를 확인해 본 모습입니다. 보시는 것처럼 box는 책상위... 동일한 지점에 잘 올라가 있습니다. 벽에 붙어있어야 할 액자는 좀 다른 위치에 보이네요.

아직 제가 cupix.com 서비스 기능에 익숙하지 않기 때문에 아직 파악하지 못한 점도 있겠지만, 그래도 아주 재미있는 서비스 같습니다. 현재 모 부동산앱과 함께 작업 중이라고 하던데, 기타 다양한 분야에서 활용할 수 있을 것 같네요.

===

그런데, 기존 360도 파노라마 서비스와는 제작방식이 좀 다릅니다. 기존 360VR 파노라마의 경우 촬영지점이 몇개 안됩니다. 제가 촬영한 이곳도 아마도 4-5 노드 정도면 충분할 겁니다. 그런데, 이 서비스를 사용하려면 촬영지점이 엄청 많아야 합니다. 저처럼 30-40노드를 촬영하지 않으면 아얘 인접사진과 연결이 안되거든요. 이렇게 많은 사진을 수작업으로 처리한다면 아주 복잡하겠지만, 4-5노드 정도면 수작업으로 처리해도 그다지 부담은 안되니까요. 

그래도... 360도VR 파노라마를 제작하는 입장에서는 위에서 설명하는 내용들이 자동적으로 해결되면 매우 편리합니다. 특히 3D Object를 넣는 일을 매 사진마다 수작업으로 처리하려면 거의 불가능에 가깝죠. 아무튼 개선할 점도 좀 눈에 띄기는 하지만, 많이 기대되는 서비스네요. 

민, 푸른하늘

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

  1. 360VR

    안녕하세요 푸른하늘님,
    처리된 360VR 링크가 연결이 안되어있는 것 같습니다.

    2018.03.27 17:30 [ ADDR : EDIT/ DEL : REPLY ]

사진/360 파노라마2018. 3. 11. 00:16

요즘 기어360을 잘 사용하고 있습니다. 아직까지 셀카봉이 도착하지 않아서 손으로 들고만 촬영하기 때문에 손이 이상하게 나온다는 것, 화질이 약간 안좋다는 것 빼놓고는 대체로 만족스럽습니다.

그냥 버튼 하나만 누르면 파노라마 촬영이 끝나고, 약간 번거롭기는 하지만, 쉽게 공유할 수 있기 때문입니다.

하지만, 촬영한 파노라마가 꼭 마음에 드는 건 아닙니다. 원래 기어360의 경우 자이로스코프가 내장되어 있어서 촬영 자세에 관계 없이 수평을 유지시켜준다고는 하지만, 아래와 같이 엉뚱하게 스트칭되는 경우가 있습니다. 360 파노라마 사진에서도 수직선은 유지되어야 하는데, 아래처럼 기울어져 나오면 보기가 부담스러워지거든요.

또한 스티칭과정에서 약간 어긋난다던지 색감이 마음에 안든다던지 하는 경우도 있습니다. 이럴 경우, 어쩔 수 없이 수동으로 스티칭해야 합니다. 

아래는 기어360으로 촬영한 사진 원본입니다. 이 사진을 그대로 PTGui에서 입력해서 자동으로 스티칭해주면 좋겠지만, 아직까지는 그런 방법은 없습니다. 

(추가 :: PTGui 11 beta 판을 테스트해 보니, 이 사진만 읽어들여도 직접 스티칭이 가능해졌습니다. 그러면 아래와 같이 이미지를 두개로 분리하는 번거러운 작업이 필요 없습니다. 나중에 정식판이 나오면 새로 테스트해봐야겠습니다.)

그래서 이 사진을 두장으로 분할해야 합니다. 일단 포토샵으로 이 파일을 읽어들인 후, 좌측과 우측 사진을 별도로 저장합니다. 

참고로 이때 Rectangular Marquee Tool을 사용하되, 고정크기(Fixed Size)로 3888x3888로 만들어 둔 뒤 클릭만 하면 쉽게 범위를 선택할 수 있습니다.

좌우측 사진을 별도로 저장한 뒤에는 PTGui로 이 두장의 사진을 불러들입니다. 그러면 사진에 대한 정보가 없다면서 아래와 같은 화면이 뜹니다. 여기에 아래와 같이 설정하고 OK를 누릅니다.

Focal Length -> 1.2
Crop factor   -> 1

다음은 File -> Apply Template -> Other를 선택하고, 나타나는 폴더에 아래의 파일을 복사해서 넣어줍니다. 참고로 이 template 파일은 구글에서 검색해서 찾았습니다. 

360_template.pts

이렇게 복사해 넣어주면 다음부터 File -> Apply Template -> 360_template으로 선택할 수 있습니다.

그 다음부터는 일반적인 스티칭 방법과 마찬가지로 작업해 주면 됩니다.

===

흠... 그런데... 이 방식으로 Align을 해보면 Matching Point를 제대로 찾아주지 못하네요. 스티칭이 오히려 나쁜 경우도 발생하는 것 같습니다. 

기본적으로 이 방식은 두 개의 이미지의 회전량을 미리 계산하여, template  파일에 저장해 둔 겁니다. 그래서 Align을 시키면 기준점이 없는데도 불구하고 적절한 위치로 찾아가는 거죠. 그런데 기어 360 하드웨어는 기기마다 렌즈의 배치가 조금씩 달라질 수 밖에 없습니다. 따라서 적절한 방식으로 최적의 이미지 회전량을 계산해서 적용해야 하는데, 그냥 다른 사람들이 만들어 둔 값으로는 에러가 발생할 수 밖에 없을 것 같습니다.

일단 방법은... 기준점을 적절히 배치할 수 있는 넓은 장소에서 (가까운 곳에는 아무 것도 없을 수록 좋고, 가능하면 하늘 쪽까지 채워지는 곳) 촬영을 하여 PTGui로 스티칭을 하고, 그 결과를 template 파일로 저장하면 될 것 같습니다. 나중에 한번 시도해 봐야겠네요.

===

(추가 : 새로운 template를 만들어 테스트)

어떤 장소가 좋을지... 많이 고민을 했습니다만, 일단 코스트코 매장에서 촬영한 사진으로 테스트해보기로 했습니다. 매장의 층고가 매우 높아서 어느 정도 시차(parallax) 문제에서 자유로울 것 같아서입니다.

이번에 사용한 영상입니다. 360도 전체가 촬영되니 일단은 만족스럽습니다.

원본 파일을 위에서 설명한 것과 동일한 방식으로 일단 원본파일을 읽어들였습니다. 그 다음 Align을 한번 돌려준 후, 사방을 돌아가며 기준점을 새로 추가했습니다. 아래는 그리고 나서 Align을 돌린 결과입니다.

이 기준점 중에서 반구 위쪽은 제가 입력한 것이고, 아래쪽은 PTGui에서 자동 연결시켜준 기준점입니다. 사실 아래쪽에 있는 기준점들은 카메라와의 거리가 상대적으로 가까운 편이라서 일부러 기준점을 잡지 않았는데, PTGui에서 자동으로 매칭시켜줬습니다.

아래는 기준점 테이블에서 거리를 기준으로 정렬해본 결과입니다. 0-15 까지는 제가 입력한 것이고, 16부터 34까지는 자동으로 생성된 기준점입니다. 따라서 아래에서 아래쪽에는 모두 16번 이상이 나타나리라 생각했는데, 제가 입력한 것과, 자동 생성된 것들이 섞여 나오네요. ㅠㅠ


그래서 이 기준점들을 모두 사용하는 방법과, 제가 입력한 것들만 사용하는 방법 두가지로 나누어 테스트해보기로 했습니다. 

이제 이렇게 기준점을 잡아둔 상태에서 File -> Save As Template를 누르고 적당한 이름으로 저장해줍니다. (기준점을 일부 편집 또는 삭제했다면 반드시 F5를 눌러 Optimize를 수행해야 합니다.) 위에 올려져 있는  360_template.pts이런 방식으로 저장한 것입니다. 

아래는 이 두가지 방식의 Template 파일을 저장한 후, Apply Template을 살펴본 것입니다. gear360_all은 모든 기준점을 사용한 경우, gear360_man은 수작업으로 입력한 기준점만 사용한 경우입니다. 맨위에 있는 360_template는 물론 인터넷에서 입수한 것이고요.

아래는 360_template (인터넷에서 구한 것)으로 테스트한 결과입니다. 1/4쯤과 3/4쯤 되는 곳을 보시면 스티칭 에러가 많이 발생한 것을 보실 수 있습니다. 특히 3/4쪽이 에러가 많네요.

두번째는 gear360_all(제가 입력한 기준점과 자동생성 기준점을 모두 사용)로 테스트한 결과입니다. 위와 비교를 해보면, 확실하게 스티칭 오류가 줄어들었습니다.

세번쨰는 gear360_man(제가 입력한 기준점만 사용)로 테스트한 결과 머... 바로 위와 비교를 했을 때 좋아진건지 아닌지 구분하기 힘들 정도네요. 자세히 확대를 해보셔도 비슷하다는 걸 아실 수 있을 겁니다.

마지막으로... 아래는 Gear360 ActionDirector를 사용해 스티칭한 결과입니다. 다소 충격적인데, PTGui로 열심히 작업한 것보다, 기어360 자체적으로 스티칭한 게 가장 성능이 좋네요. ㅠㅠ

===

결론적으로... 현재까지는... 좀더 좋은 방법을 알게되기까지는 그냥 스마트폰에서 스티칭하거나, ActionDirector를 사용해서 스티칭하는 게 가장 좋은 것 같습니다. (단, ActionDirector를 사용해서 스티칭을 하면 뭔가 알수없는 에러... 라는 게 발생하면서 제대로 360VR로 처리해주지 못하는 것 같습니다. 적어도 구글 포토에서는 지원이 안되네요. ㅠㅠ)

결국... 돌아돌아서 아무 소득도 거두지 못한 셈이네요.. ㅠㅠ

민, 푸른하늘


Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

사진/360 파노라마2018. 2. 19. 23:41

얼마전 아마존에서 주문했던 삼성 기어 360이 드디어 도착했습니다. 원래 가격은 350 달러정도. 현재 절판되어서겠지만, 68 달러에 운송료 8 달러 정도에 구입할 수 있었습니다. 약 8만원 정도니까 거의 거져죠. ㅎㅎ

사실 저는 신형보다는 이 구형이 더 좋습니다. 신형이 작고 간단하며, 비디오 품질도 좋다고는 하지만, 구형에 비해 센서 크기가 작아서 파노라마 사진의 품질은 구형이 더 좋기 때문입니다.  그리고 저는 비디오 보다는 사진을 좋아합니다.

스마트폰과 연결하고 설정하려면 먼저 스마트폰에 기어360 전용 앱을 깔아야 합니다. 그렇지만, 제 폰은 저성능이라서 깔리지 않아 편법으로 설치했습니다. 이 글을 읽어보시면 됩니다. 기어360 앱은 두가지가 있는데, 제 폰에는 현재 기어360(New) 를 설치했으며 문제없이 동작합니다.

일단 앱을 깐 후에는 기어360과 스마트폰을 연결하는 것은 어렵지 않습니다. 일반 블루투스 기기 연결과 대동소이하죠. 기기와 앱에 따라 약간 다를 수 있지만, 매뉴얼에 따라 연결하면 됩니다.

SM-C200_UM_Kor_Rev.1.0_160428a.pdf

360 파노라마 사진을 업로드 및 공유하는 방법까지는 이전글에 설명하였으니 참고하세요.

Gear 360 VR 동영상 공유방법

이번엔 360 VR 동영상을 업로드 및 공유하는 방법입니다. (촬영하는 방법은 생략합니다.) 사실 저는 동영상을 촬영하고 공유하는 것을 그다지 즐기지 않습니다. 동영상은 적절하게 편집하지 않으면 너무 "잡음"이 많이 들어가서, 제가 보기에도 민망할 정도가 되고, 반대로 괜찮게 편집하려면 정말 많은 노력이 필요하기 때문입니다. 그래도 일단 구입을 했으니까 실험해 봐야죠.

일단 그냥 사진을 공유하려면 아래 좌측사진과 같이 촬영한 사진 또는 동영상을 선택한 후 "저장"합니다. 그러면 휴대폰으로 저장되는데, 저장하는 과정에서 자동으로 스티칭이 되어 360도 VR 사진 또는 동영상이 됩니다. 다음으로 그 사진을 선택하면 아래 가운데 사진처럼 나옵니다. 여기에서 "공유"를 누르고, 마지막으로 오른쪽처럼 공유할 서비스를 선택하면 됩니다. 

참고로 페이스북에 올리면 바로 나타나지 않고 3-5분 정도 후에 나타납니다. ㅎ

페이스북이나 구글포토처럼 360 파노라마를 인식하는 사이트에서는 자동으로 360도 파노라마 동영상 형태로 올라가지만, 카카오톡이나 일반 사이트에선 일반 동영상으로 올라갑니다.

Samsung VR 앱을 사용하여 Samsung VR 사이트에 올리기

그런데... 사실 제일 좋은좋아야 하는 사이트는 samsungvr.com 일 겁니다. 하지만, 아래를 계속 읽어보시면 알겠지만, 정말 추천하고 싶지 않습니다. 어쨌든... 

먼저 앱스토어에서 Samsung VR Mobile을 설치합니다. 그러면 위에서 설명한 동영상 공유방법에서 이 앱이 나타납니다. 다음으로 적절한 제목과 설명을 추가하고... 아래 마지막 사진처럼 필요하다면 trim을 한 후 삼각형 표시를 눌러주면 삼성 사이트로 올려집니다.

이렇게 올린 사진은 "Samsung VR Mobile" 앱에서 확인할 수 있습니다. 앱을 실행한 후, "프로필"을 누르면 가운데 처럼 자신의 공간이 나타나는데, 여기에서 게시된 동영상을 누르면 자신이 올린 동영상을 볼 수 있습니다. 물론 여기에서 다른 서비스로 공유하는 것도 가능하고요. 

또한 samsungvr.com에 같은 계정으로 들어가보면, 스마트폰에서 올린 파노라마가 그대로 들어 있습니다. 삼성에서 제공하는 공간으로 올라가는 건데, 용량은 거의 무제한으로 사용할 수 있을 듯 합니다.

당연히 웹사이트에서도 페이스북에 공유하거나, 링크를 공유하는 등의 작업이 가능합니다.

그런데, 이렇게 올린 비디오를 공유해보면 정말 큰 문제가 있습니다. 화질이 엉망이라는 겁니다. 물론 원본 그대로 업로드해도 마찬가지입니다. 심지어는 samsungvr.com 에서 직접 플레이해봐도 그렇습니다. 아마도 동영상이 전송량이 크기 때문에 제대로 전송이 안되기 때문이 아닐까 합니다.

아래는 삼성에서 공유한 것

아래는 유튜브에서 공유한 것 (같은 장소는 아니네요. 죄송)

유튜브로 Gear 360 동영상 공유하기

그래서 저는 그냥 유튜브에 전송하기로 했습니다. 제가 본격적으로 유투브 비디오를 올리는 건 아니지만, 가끔씩 이용하고 있거든요. 그런데 문제는 gear 360 앱에서 직접 유투브로 공유를 하면 360파노라마 형식으로 인식하지 못한다는 것입니다. 아래 처럼요. "Gear 360 Manager"앱을 사용할 경우에도, "Samsung VR Mobile" 앱을 사용해서 올려도 마찬가지입니다.

360도 파노라마 형식으로 올리려면 일단 다운로드 받아서 여기에 있는 정보에 따라 Youtube에서 제작한 360 파노라마 메타데이터 앱을 사용하여 한번 처리를 한 후 올려야 합니다. 

그러면 아래 그림과 같은 형태로 360 VR 포맷으로 잘 디스플레이됩니다.

360 Gear ActionDirector 이용하여 편집하고 공유하기

360 Gear ActionDirector은 삼성에서 (외주를 주어) 제작한 360 사진/비디오 편집프로그램입니다. 비디오의 경우 비디오를 자르고 합치고, 제목을 넣고, 음악 넣고 등등... 제법 고급 기능을 가지고 있습니다. Adobe Premire를 대체할 정도는 아니지만, 그냥 쓸만한 정도는 되는 것 같습니다. 이 프로그램은 기어360을 구입한 사람만 사용할 수 있습니다. Gear 360을 구입하면 따라나오는 "ActionDirector Product Key"를 입력해야 하거든요.

ActionDirector를 설치하고 기어360을 USB로 연결하면, 다음과 같이 탐색기에 Gear360이 나타납니다. (반드시 기어 360의 전원을 넣은 후 USB에 연결해야 합니다.) 아쉽게도 드라이버가 MTP(Media Transfer Protocol)을 사용하여 c: d: 와 같은 일반 드라이버로 잡히지 않습니다. 

그 다음 ActionDirector를 실행하고 좌측 버튼을 클릭합니다.

그 다음 파일->가져오기->미디어파일 (또는 아래 그림의 버튼)을 선택해서 원하는 비디오를 불러들입니다. 파일을 불러들이면 자동적으로 스티칭이 됩니다.

그 다음 이 파일을 아래쪽에 있는 공간에 미디어, 타이틀, 효과등을 끌어다 놓고 적당히 편집한 뒤, File->제작을 선택하고 [시작]버튼을 눌러주면 새로운 비디오로 제작합니다.

아래는 이렇게 편집해서 유투브에 올린 비디오입니다.


참고로 "Gear 360 ActionDirector"에 비디오를 읽어들이면 비디오 정면에 아래와 같이 검은 6각형 형태가 나타나는 경우가 있습니다. 구글링해보면 이런 문제가 많이 발생하는 모양이네요.

이 문제는 아래 그림과 같이 메뉴 오른쪽에 있는 태양모양의 도구 -> 사용 환경 설정 -> 편집으로 들어가서 "자동 각도 보정"을 켜주면 해결됩니다. 물론 기존 에러났던 파일은 모두 지우고 새로 읽어들여야 합니다.

===

민, 푸른하늘

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

사진/360 파노라마2018. 2. 8. 18:07

오늘 기어360을 테스트해봤습니다. 예전에 처음 나왔을 때만 해도 (제 기억에) 화질도 별로 좋지 않고 특히 사진 연결부위가 매끄럽지 않아 느낌이 별로 였던 기억이 있습니다. 게다가 가격도 40만원 정도하니 구지 필요한가 싶었구요.


그런데, 엊그제 Cubicpan에서 주최하는 360 파노라마 동호회에 참석하였다가, 기어360을 잘 쓰는 분을 보게되었고, 사진 품질 등이 꽤 괜찮아졌다는 것을 알게되었습니다. 그리고 단종된 제품이라서 싼 가격에 살 수 있다고 해서 찾아보니, 아마존에서 66.95 달러, 운송비까지 합쳐도 8만 몇천원 정도 수준이라서 하나 장만하기로 했습니다.


그런데... 문제가 있었습니다. 이 기어360이 제가 가진 보급형 스마트폰인 A8에는 기어360 제어앱이 설치가 안된다는 것이었습니다. 갤럭시 S6 이상, 갤럭시 노트 5 이상에서만 설치가 됩니다. 물론 그냥 카메라에서 촬영만 하고, 나중에 집에와서 다운로드 받는 방법도 있습니다만, 아무래도 활용성이 떨어져서 망설여졌습니다.


1. 스마트스위치를 사용하여 Gear 360 앱 설치하기


그런데... (세번째 그런데로군요. ㅎㅎ) 나무위키의 글을 읽고 희망을 발견했습니다. 직접 설치는 불가능하지만, 스마트폰의 통화목록 등을 옮길 수 있는 스마트 스위치라는 앱을 사용하면 이미 설치된 스마트폰에서 전달받는 방법이 있다는 것입니다. (여기 참조)


그래서... 기어360을 사용중인 지인께 오늘 달려가서 직접 테스트해봤습니다. 물론 잘 되었습니다. ㅎㅎ 


  • 이미 기어360앱이 설치되어 있는 기기와, 설치되지 않는 기기에 각각 스마트스위치를 설치한다. (여기 또는 구글플레이를 이용)
  • 기어360앱이 설치된 기기에서는 보내기 모드를 선택하고, 설치되지 않은 기기에서는 받기 모드를 선택한다.
  • 서로 연결을 시킨다.
  • 기어360앱이 설치된 기기에서 전송할 항목을 선택한다. 다른 건 다 지우고, 앱 목록에 들어가 "Samsung Gear 360" 앱만을 선택한다.
  • 전송을 누르면 다운로드되고 자동 설치된다.

작동과정을 별도로 기록해둔 것이 없어 정확하지는 않을 수 있으나, 설치하는 건 어렵지 않을 겁니다. 참고로, 기어360 앱은 아래와 같이 두개가 있는데, 기능이 어떤 차이가 있는지는 잘 모르겠고, 저는 위에 있는 것을 설치한 상태입니다.



2. 기어360으로 360 파노라마 촬영하기

처음 연결할 때는 기기에 전원을 넣은 후 연결 버튼을 길게 눌러줍니다. 사용하는 스마트폰에 따라 "Connect to Android" 혹은 "Connect to iOS"를 선택합니다.

그다음 앱을 실행하고 "기어360에 연결" 버튼을 눌러주면 간단히 연결됩니다. 블루투스를 사용해서 연결하는데, 필요하면 기기에서 연결/메뉴 버튼을 눌러주면 되고요. (자세한 내용은 매뉴얼을 확인하세요.) 그 다음부터는 기어360을 켜면 자동으로 연결됩니다.



촬영하는 것은 어렵지 않습니다. 전원 버튼을 꾹~~ 누르면 켜지고, 메뉴버튼을 눌러서 비디오/사진 등의 모드를 결정한 후, 촬영/OK 버튼을 눌러주면 끝입니다. 


스마트폰에서 제어를 할 수도 있습니다. 기어 360을 적당한 위치에 세워둔 후, 아래 화면에서 카메라를 누르면 카메라 앱과 비슷한 상태가 되는데, 모드를 조절한 후 버튼을 눌러주면 됩니다.



촬영한 사진은 갤러리에 들어가면 확인할 수 있습니다. 휴대전화/Gear 360 탭을 누르면 저장된 사진과 기기에 있는 사진들을 각각 확인할 수 있습니다. 


3. Theta360 사이트를 이용하여 공유하기

기어360 앱에서 공유하는 방법도 있고, 구글포토를 사용해서 공유하는 방법도 있지만, Theta360 사이트를 이용하는게 여러군데로 공유하는데는 가장 좋은 것 같습니다. 원래 이 사이트는 Ricoh Theta라는 360카메라를 제어하는 용도이지만, 기어360으로 촬영한 사진도 공유할 수 있습니다.


ricoh theta에 대한 이미지 검색결과


1. 구글플레이에서 Ricoh Theta S라는 앱을 설치하고 회원가입을 합니다.


Cover art


2. 오른쪽 위 메뉴(점3개)를 누르고 앨범 -> 사진 선택을 선택합니다.



3. 다음으로 "현재 오리엔테이션과 공유"를 누른 후, 페이스북이나 트위터 공유는 끈 상태에서 마침을 누르면 사진이 전송되고, 마지막에 "마침:브라우저로 확인"을 누르면 올라간 사진의 주소가 잠깐 나타나는데, 이 주소를 공유하면 됩니다.


이상입니다. 좀 복잡합니다. 아니 많이 복잡합니다. 그냥 삼성에서 직접 올리고 공유하도록 해주면 될 걸 그게 안되서 이런 잡스런 짓을 하게 되네요. 참 정이 안가는 삼성입니다.


민, 푸른하늘




Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

사진/360 파노라마2017. 3. 18. 23:21

오늘 DJI 인스파이어를 사용해 360 파노라마를 촬영했습니다. HDVR을 운영하시는 박제성님의 도움을 많이 받았습니다. 이 글을 빌어 다시 한 번 감사드립니다.

360 파노라마를 촬영하는 분들은 드론에 관심이 많습니다. 지상에서 촬영하는 파노라마 사진도 멋지지만, 오래전 부터 5미터 10미터짜리 고공봉을 이용해 고공파노라마를 촬영해왔는데, 훨씬 높은 곳에서 멀리까지 보이는 파노라마를 찍는다니 끌리기 마련이죠.

일단 먼저 오늘 촬영한 파노라마부터 보여드리겠습니다. 인천 송도 건너편 배곧 생명공원에서 촬영한 사진입니다. 카메라를 맨 윗방향(약+30도)에서 8컷을 촬영하고, 0도와 30도에서도 8장, 60도 정도에서 4장, 마지막으로 수직방향으로 한장 더 촬영해서 합성했습니다.

다만... 박제성님이 촬영한 파노라마와 비교했을 때, 제가 촬영한 파노라마는 너무 고도가 낮은 것 같습니다. 드론 파노라마 특유의 탁 트인, 시원한 느낌이 전혀 없습니다. ㅠㅠ

===

예전에 구글에서 Photo Sphere란 이름으로 360도 파노라마를 관리할 때에는 PC에서도 쉽게 360 파노라마를 올릴 수 있었습니다. 아래가 그때 올렸던 사진중 하나입니다.

https://goo.gl/photos/Ad6TYhPuuGU15tdt8

그런데, 이제는 Photo Sphere가 사려졌고, 360도 파노라마 사진을 올리기가 무척 까다로워졌습니다. 스마트폰에서 올리는 게 기본이 되었기 때문입니다. 아무튼 간략히 정리해 보겠습니다.

1. 360 파노라마 사진을 구글포토에 올리기

일반 사진과 동일한 방법으로 구글포토(https://photos.google.com/)에 올립니다. 가장 간단하게는 구글포토 사이트에 들어간 후, 사진을 드래그&드롭으로 끌어다 놓기만 하면 됩니다. 다만, 이 상태는 그냥 일반사진과 동일하게 처리됩니다. 정확하게 2:1로 맞춰 촬영하더라도 그냥 일반사진으로 보여지고, 일반사진으로 공유됩니다. 

이제 잠시 대기합니다. 그러면 구글에서 이 사진을 처리하여 파노라마 사진으로 만들어 줍니다. 아래에서 오른쪽은 제가 원래 올린 사진이고, 왼쪽은 처리된 결과입니다. 

2. 구글지도에 올리기

이제 파노라마를 구글지도에 올릴 차례입니다. 이것도 스마트폰에서 해야 합니다. 먼저 스트리트뷰 앱을 설치합니다.  스트리트뷰 앱을 실행하면 왼쪽 아래와 같이 됩니다. 메뉴에서 [비공개]를 클릭하고 오른쪽 아래에 있는 사진추가 버튼을 누르면 가운데 화면이 뜨는데, 여기에서 360도 파노라마 사진 가져오기를 선택합니다. 사진은 구글포토에서 가져오면 되는데, 맨오른쪽의 사진 목록을 보면서 오른쪽 위에 돌아가는 표시가 있는 사진을 선택하면 됩니다.

그 다음에... 선택한 사진의 위치를 지정하고... 지도목록에 추가하고... 등등의 작업이 필요한데 생략하겠습니다. 해 봐야 압니다. ㅎㅎ

3. 구글지도를 이용해 공유하기

이제 구글지도에 들어가서, 방금전 지정한 장소를 검색해 보면 아래 그림처럼 파노라마가 추가된 게 보이실 겁니다.

이 파노라마를 클릭해서 들어가면 아래와 같은 화면을 볼 수 있는데,

주소창을 눌러 공유할 수도 있지만, 아래처럼 메뉴를 눌러 [이미지 공유 또는 삽입]을 통해 공유하면 됩니다. 

마지막으로... 삽입(embed) 코드를 이용하면, http://www.geocaching.co.kr/VR/baegot_ins.html 와 같이 깔끔하게... 구글주소를 감추고 자신의 사이트에 올리는 것처럼 위장도 가능합니다. ㅎㅎ

민, 푸른하늘

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

사진/360 파노라마2015. 7. 29. 15:41

노키아에서 가상현실(VR) 촬영용 새로운 카메라, Ozo 를 출시 - 소비자용이 아닌 Hollywood 용


마이크로소프트가 2013년 노키아의 핸드폰 사업부문을 인수했을 때, 두가지 큰 의문이 들었다. 첫번째는 그 "이유". 마이크로소프트는 확실한 답을 하지 않았고, 이번달 노키아 관련 비용중 76억 달러를 손비처리 했다. (인수 금액은 72억 달러) 두번째 의문은 노키아 나머지 부분은 어떻게 될 것인가였는데, 한때 1등이었던 사업부분에서 즉시 철수하였다. 노키아에 따르면 지도, 네트워크 인프라, 그리고 "최신기술"에 집중할 예정이라고 했지만, 어떤 최신기술인지에 대해서는 밝히지 않았다.


오늘 노키아는 비전을 보여주기 시작하였다. 오늘 밤(7월 28일) 로스엔젤레스에서 열린 엔터테인먼트 산업 이벤트에서, 노키아는 360도 전방향으로 영상과 음향을 잡을 수 있는 차세대 카메라인 Ozo를 발표하였다. 이 장비는 현재 대량생산 전단계로서, 노키아의 의도는 영화, 미디어, 광고 분야를 위한 가상현실 경험을 촬영할 수 있는 기본 장비가 되려는 것이다. 정식 발표 및 가격정보는 올 가을로 예정되어 있다. 그러나 Ozo는 소비자용 카메라가 아니다. 이 장비의 가격은 5만불 정도가 될 것이라고 한다.



영화산업 쪽에서 볼때 Ozo에는 여러가지 강점을 가지고 있다. Ozo는 두가지 핵심기능에 힘입어 VR를 실시간으로 사용할 수 있는 카메라이다. 첫번째 실시간 모니터링이 가능하다. 즉 감독은 현재 촬영중인 장면을 헤드셋을 통해 볼 수 있다. 두번째는 신속한 재생기능이다. 과거 VR로 촬영된 장면은 장시간 소요되는 디지털 스티칭 작업이 필요하였다. 노키아에 따르면, Ozo는 몇 분이내에 저해상도 재생용 비디오를 생성할 수 있다고 한다.


Ozo가 등장하면, 현재 초기 단계지만, 빠르게 성장하는 VR 생성 도구가 될 것으로 보인다. 지난 5월 GoPro는 VR 회사를 인수한 후, 몰입형 비디오를 녹화할 수 있는 구면카메라를 제작중이라고 발표하였다. 또 5월 말에는 Google Jump에 사용할 수 있는 별도의 16 카메라 시스템을 발표하였다. 구글 Jump는 개발자 컨퍼런스인 Google I/O에서 발표되었는데, VR 영화제작을 위한 완벽한 생태계를 의도하고 있다. 삼성에서도 카메라 결합장비를 제작중이다.


오조는 가장 진보된 VR 영화촬영 플랫폼이 될 것이라고 노키아에서는 말한다. 확실히 멋지다. 큰 멜론정도의 크기에 무게는 약 2.7 kg, 사람의 눈 간격정도로 떨어져 있는 8개의 광학 센서로 구성된다. 음향은 카메라에 내장된 8개의 마이크를 사용해 3차원으로 취득되므로, 음향을 이용해 위치를 잡는 데 도움이 될 것이다. 오조로 생산된 VR을 보다가 뒷쪽에서 개가 짖는 소리가 들릴 때, 고개를 돌리면 개가 있다는 것이다.


오조는 표준 삼각대에 장착할 수 있고, 결과물은 표준 포맷의 비디오이다. 오큘러스와 같은 헤드셋이나, 유튜브 3D 사이트 같은 곳에서 볼 수 있을 것이다. 목표는 영화제작자들의 현재의 작업과정에 통합되는 시스템을 만드는 것이라고 말하고 있으며, 독점 파일 포맷으로 가둘 생각은 없다고 한다.



시장을 선도하는 VR 스튜디오로서 자체적인 카메라를 제작중인 Jaunt VR가 이 장비에 대한 최초의 고객이 될 것이라는데 동의하였다. 현재는 Conde Nast와 같은 장비를 이용하여 VR 영화를 제작중이지만, 이 장비를 사용하게 될 것이라고 한다.


오늘밤의 행사에 앞서 노키아는 나에게 여러가지 오조의 성능을 알수 있는 예제를 보여주었다. 첫번째는 비디오 단편으로서, 여러가지 다른 경험을 담고 있다. 첫번째는 뉴스로서, 리포터가 데모중인 사람과 인터뷰를 하는 장면과 미국에서 합법화된 동성결혼에 대해 인터뷰하는 장면을 담고 있다. 두번째는 코메디 극으로서, 친구의 결혼에서 자기가 신부를 사랑하고 있다고 방해하는 장면이며, 세번째는 가수가 로프를 끌어서 시청자가 점점 가수와 가까워 지는 모습의 뮤직 비디오이다.


이 데모는 오큘러스 리프트와 HTC Vive 헤드셋으로 이루어졌는데, 일부장면은 흐릿하거나 초점이 안맞는 것처럼 보였다. 노키아에 따르면 이는 데모에 사용된 영상이 디지털 스티칭을 거쳐 후처리된 영상이 아니라, 카메라에서 녹화된 원시자료로부터 실시간으로 렌터링된 것 때문이라고 한다.때로는 한 지점에서 다른 지점으로 쳐다볼 때 화면 전환이 이상했던 것도 이 때문이라고 설명할 수 있다. 노키아의 연구 개발실장인 Vesa Rantanen에 따르면. 이 "불연속"은 카메라의 배치에 따른 결과라고 한다. 하지만, 후처리에서는 제거될 수 있다고 한다.


하지만, 음향은 완전히 달랐다. 비디오들을 볼때 나는 자주 주위를 둘러보게 되었는데, 소리가 내 위치를 따라다니는 것 같았기 때문이다. 내 바로 뒤에서 뭔가가 들리는 듯하였으며, 내가 돌아보자 다른 사람이 이야기하는 입의 모양을 볼 수 있었다. 이는 노키아의 음향 렌더링 기술이 바라보는 방향에 따라 입체음향(binaural audio)을 만들기 때문이다. 아주 생경한 느낌이었지만, 오늘밤 최고의 경험이었다.


VR은 노키아의 큰 도약인것처럼 보이지만, 그냥 사라지지 않겠다는 명확한 표시이다. Ozo를 개발한 부분인 Nokia Technologies는 폭스콘에서 제작한 Nokia N1 태블릿도 설계하였다. Nokia Technologies는 또한 안드로이드 폰도 제작할 것으로 기대되고 있다. Recode에 따르면 이들의 계획은 작년 4월의 휴대폰 사업으로 돌아가는 것이라고 한다.


확실히 고가의 전문가용 VR 장비 시장은 Nokia가 한때 호령을 했던 소비자용 휴대폰 사업에 비하면 아주 작다. 그러나, 노키아의 방향전환은 처음이 아니다. 노키아는 올해 150주년을 맞았으며, 종이공장에서 출발하였다. 오늘날 스마트 자금이 가상현실에서 길을 찾고 있다. 노키아는 오조를 통해 좋은 방향을 잡은 것일 수도 있다.










민, 푸른하늘


원문 : http://www.theverge.com/2015/7/28/9064499/nokia-vr-camera-ozo

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

사진/360 파노라마2015. 7. 17. 11:26

고프로 액션카메라가 방송등... 수많은 곳에서 사용되고 있습니다. 스포츠 좋아하시는 분들에게는 거의 필수가 된 것 같습니다.


제가 가지고 있는 모델은 Hero4 Black. 아마 제일 고급기종인 걸로 알고 있습니다. DJI F450 에 장착할 계획으로 구입한 것입니다. 


현재까지 F450은 Quadcopter 그 자체로서는 아주 잘 조립이 된 상태입니다. 며칠전엔 시험비행도 했습니다. 아래가 시험비행 영상입니다. 집에서 장난감 드론으로 호버링 연습 착륙연습을 조금 해봤다고, 날리는데 겁은 안나더군요.




하지만, 아직까지 FPV 시스템은 달고 있지 않습니다. 자료를 검토해 봤는데, 조립하는 것 자체는 전혀 어려울 것 같지 않지만, 일단 좀더 비행연습을 하고 나서 다는 게 낫지 않을까 생각하고 있습니다.


===

각설하고... 고프로에는 어안렌즈가 달려있습니다. 360도 파노라마 촬영이 쉽다는 뜻입니다. 마침 꿈꾸는 사진가님께서 고프로로 360도 VR 파노라마 촬영하는 방법에 대해 문의해오신 김에 처리해봤습니다. 물론 저도 F450을 날리게 되면 360 파노라마를 촬영할테니 미리 연습하는 의미도 있겠네요.


촬영방법


모든 360*180 VR 파노라마 촬영과 마찬가지로, 고프로 카메라도 무시차점을 기준으로 촬영해야 합니다. 완벽하게 촬영하려면, 별도의 로테이터가 필요하겠습니다만, 고프로용 로테이터는 아직 못봤습니다. 어안렌즈의 무시차점은 대략 렌즈 제일 앞쪽에 있다고 보시면 됩니다. 따라서 볼록한 렌즈의 가장 튀어나와 있는 점을 기준으로 돌려가며 촬영하시면 됩니다. 물론 대충 돌려도 붙기는 하지만, 대충촬영할수록 결과물이 나빠집니다. 


저는 일단 아래처럼 7장을 촬영했습니다. 수평방향으로 60도 간격으로 6장을 촬영하고 수직방향으로 한장 촬영했습니다. 그런데 고프로의 수평 화각은 145도 정도 되므로... 구지 6장까지 촬영할 필요없이 4장만 촬영하면 됩니다. 그리고... 저는 아래 사진처럼 수평방향으로 촬영했는데, 수직으로 세워서 촬영하는 게 좀더 낫겠네요.







파노라마 사진처리


다음 이 사진들을 모아서 360도 파노라마 사진으로 합성하는 방법입니다. 제가 사용하는 소프트웨어는 PTGui 입니다. 아주 많은 기능들이 있으면서도 이런 종류의 파노라마 사진이라면 단추 서너번만 누르면 알아서 잘 처리해줍니다. 


PTGui에서 고프로 영상을 촬영하려면, 고프로 렌즈 데이터가 있어야 합니다. 제가 검색해서 찾은 값 + 자동 수정된 값은 아래와 같습니다.



이렇게 설정하기도 귀찮으시면 아래 파일을 다운로드 받은 후, File->Apply Templates 로 읽어들이면 됩니다. 


GOPR8025 Panorama.pts


그 다음엔 PTGui에 촬영된 사진들을 불러들입니다. 그냥 Drag & Drop을 해도 됩니다. 그다음 Align images, 그다음 Create Panorama를 눌러주고요.



아래는 이렇게 해서 만들어진 360*180 VR 파노라마를 360cities.net 에 올린 겁니다. 좀 많이 지저분하죠? 조립된 F450 쿼드곱터와 관련 부속품 그리고 공부들이 널브러져 있넹. ㅎㅎ 마우스로 드래그를 해보세요. 우측 위에 바깥쪽 화살표 네개가 있는 아이콘을 누르시면 전체화면에서 보실 수 있습니다. 


Quadcopter assembly desk by Gopro


중간중간 어긋난 게 보이실 겁니다. 무시차점을 정확하게 고정시키지 못했기 때문에 발생한 것입니다. 그래도 이 정도면... 로테이터도 없이, 후처리를 전혀 하지 않은 걸 감안했을 때 아주 잘 나온 것 같네요. ㅎㅎ


민, 푸른하늘


Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

사진/360 파노라마2013. 8. 2. 09:07

제가 촬영한 360*180 파노라마 사진은 지금까지 대부분 360cities.net 에 올리고 있습니다. 360*180 파노라마는 용량이 크고 형식도 독특해서 일반적인 방법으로 공유하기는 힘드는데, 360cities를 이용하면 비교적 간단하게 올릴 수 있고, 내가 원하는 곳에 삽입(embed)하는 등의 공유 작업이 간편하기 때문입니다. 물론 용량이 무제한이고 사용료가 무료라는 점도 매력적이고요.


또한, 360cities.net 에 올리기만 하면 구글어스에도 자동적으로 올라갑니다. 한마디로 신경쓸 필요가 별로 없는 거죠. 아래는 구글어스(Google Earth)에 올라가 있는 제 360도 구면 파노라마를 확인해 본 것입니다. 좌측 아래에 있는 화살표처럼 설정하면 됩니다.



그런데 작년 10월 구글에서 안드로이드 Jellybean 4.2를 발표하면서 사진기 어플에 Photo-sphere 라는 재미있는 기능을 추가했습니다. 포토스피어를 이용하면 누구라도 쉽게 360도 파노라마를 제작할 수 있게 되었습니다. 아래는 포토스피어 기능을 소개하는 유투브입니다. 여기에 들어가보시면 포토스피어가 무엇인지 대략적인지 알 수 있습니다.




아이폰이든 안드로이드든 파노라마를 촬영할 수 있는 앱은 많이 있습니다만, 포토스피어는 머리위나 바닥까지 포함한 360도*180도 전체를 촬영할 수 있기 때문에 훨씬도 몰입도가 높은 현장감있는 사진을 촬영할 수 있는 것입니다.


====

오른쪽은 안드로이드 포토스피어 아이콘입니다. 아쉽게도 제가 가진 갤럭시 S3 3G 전용은 아직도 4.1 버전이라서 포토스피어 기능을 직접 만져볼 수 없습니다. 하지만 제가 예전에 촬영해둔 360도 파노라마 사진은 포토스피어용 파노라마 사진으로 변환하여 공유할 수 있습니다. 


일단 여기 들어가 보시면 제가 올려둔 포토스피어 파노라마를 보실 수 있습니다. 아래처럼 파노라마 사진 한가운데 아이콘이 있는 게 포토스피어용 360도 파노라마라는 표시입니다. 



제 구글플러스 앨범에서 이런 표시가 있는 사진을 눌러보면 자동으로 회전되는 파노라마 사진을 보실 수 있습니다.


=====

저처럼 360도 파노라마를 가지고 있는 분들은, 이 파노라마들을 비교적 간단하게 포토스피어용으로 변환할 수 있습니다. 자세한 내용은 여기에서 읽어보시면 됩니다.


1. http://photo-sphere.appspot.com/ 에 들어가서 파일선택 단추를 누르고, 원하는 360*180 파노라마를 선택합니다.


단!!! 사이즈가 큰 파노라마(8000x4000) 등은 올라가긴 하는데, 제대로 보여지지 않습니다. 저는 4000x2000으로 테스트를 했는데, 어쨌든 사이즈를 좀 줄여야 원할하게 이용할 수 있습니다.


2. 사진이 다 올라가면 아래와 같은 화면이 뜨는데, 사진을 촬영한 위치와 방향을 입력합니다. 윗쪽 화살표는 촬영방향으로 설정하지 않아도 큰문제가 없지만, 아래쪽 위치는 가급적 정확하게 입력하시는 게 좋습니다. 먼저 빨간화살표가 있는 입력란에서 대략적인 주소를 입력해서 검색한 후, 지도를 확대축소하면서 사진을 촬영한 지점에 아이콘을 가져다 놓으면 됩니다.



3. 그 다음 아래와 같은 화면이 나타나는데, "Download" 버튼을 눌러서 별도로 저장합니다.



여기까지가 일반 360*180 구면 파노라마를 포토스피어(photo sphere)용 파노라마로 변환하는 과정입니다. 포토스피어용 파노라마라고 하여 특별한 형식이 있는 게 아니라, 사진의 메타데이터에 방금 입력한 정보 및 기타 여러가지 정보를 XMP 형식으로 넣어주는 작업입니다. 외관상으로는 전혀 변한게 없습니다.


=====

그 다음에는 자신의 구글계정에 사진을 업로드 시켜줍니다. 물론 이를 위해서는 미리 구글 계정을 만들어두어야 합니다. 구글 계정을 만드는 방법은 여기를 보시면 됩니다. 


아래가 제 구글계정 프로필이자 구글플러스인데, 화살표가 있는 사진을 누르고 아까 다운로드 받은 사진을 올리기만 하면 됩니다. 사진을 올리는 방법은 너무 쉽기도 하고, 아주 여러가지 방법이 있어서 별도로 설명을 드리지 않겠습니다.



사진을 올리면 아래처럼 사진 한가운데 조그만 아이콘이 생겨서 포토스피어용 360도 파노라마임을 표시합니다.



이렇게 올린 포토스피어용 파노라마는 구글플러스 등을 통해 다른 분들과 공유할 수 있습니다. 제가 위에서 올린 파노라마는 여기에서 확인하실 수 있습니다.


=====

이렇게 추가한 포토스피어 사진은 구글지도/지도뷰(Views)를 통해서도 공유할 수 있습니다. 지도뷰(Views)에 들어가 보시면 아래와 비슷한 화면이 나타납니다. 이곳은 전세계 사용자들이 올린 포토스피어 사진들을 볼 수 있는 곳입니다.



여기에서 자신의 아이콘을 누르면 아래와 같이 현재까지 자신이 추가한 포토스피어 파노라마를 볼 수 있습니다.



카메라모양의 아이콘을 누르면 새로운 포토스피어를 추가할 수 있습니다.



추가하고 나서 잠시 기다리면... 아래와 같이 방금 올린 포토스피어가 추가됩니다.



그리고 아래는 현재 우리나라 지역에 올려진 포토스피어를 확인해 본 것입니다. 휑하네요~



=====

어떠신가요? 지금까지 작업은... 한마디로 이게 뭐지? 하는 수준. 전혀 매력적이지 않습니다. 사진을 올리는 과정도 아주 번거럽고요, 사진을 공유하는 것도 구글플러스에서는 약간 편하지만, 페이스북이나 트위터 등은 물론이고 다른 웹페이지에 삽입하는 것도 쉽지 않습니다. 


구글지도를 기반으로 해서 포토스피어 파노라마를 공유하는 건 일견 멋져보이지만, 사실 제가 처음 360cities 에서 설명드린 것처럼 왠만한 파노라마 공유사이트는 모두 가지고 있는 기능입니다.


(추가) 그리고 치명적으로... 아무리 큰 사진을 올려도 지도뷰 에서는 2508x1254로 추소된 사진만 서비스되네요. 게다가 압축도 많이 했는지 사진 연결부위(좌측끝과 우측쯕이 만나는 부분)에서 줄이 나타나고요. 전문적으로 360도 구면파노라마를 찍는 분들은 전혀 올리고 싶은 마음이 안들게 생겼습니다.


그런데, 안드로이드 4.2를 사용하는 사람이라면 완전히 상황이 다를 수 있습니다. 사진기 어플을 켜고, 포토스피어(photo sphere)를 선택하고, 화면을 보면서 빈곳이 없도록 촬영하고... 마지막으로 Share > Share to Google Maps > Submit 만 눌러주면 끝입니다. 중간에 파일을 올렸다 내렸다하거나, 좌표를 입력하는 과정이 전혀 필요없습니다. 한마디로 클라우드를 기반으로 360도 파노라마의 촬영-제작-공유를 한꺼번해 해결해주는 서비스라고 볼 수 있는 겁니다. 


다만 손으로 들고 찍을 경우 여기저기 에러가 발생하는 건 어쩔 수가 없습니다. 예를 들어... 아래 사진을 보면, 멀리있는 건 좀 괜찮은데, 가까운 것들은 완전 난리죠? 이 정도의 에러는 항상 있다고 보면 됩니다. 



이러한 한계는 피할 수 없고 현재까지는 그다지 사용자가 많지 않기 때문에 그다지 볼만한 파노라마가 많지 않습니다. 하지만, 포토스피어가 아주 많아지면 현재 길을 중심으로 서비스가 이루어지고 있는 스트리트뷰를 보완할 수 있는 괜찮은 대안이 될 수 있지 않을까 하는 생각이 드네요. 오늘 제가 불편하다고 말씀드린 방법도 나아질테고, 여타 문제점도 해결될 수 있겠죠.


결론적으로... 현재는 보잘 것 없지만, 계속 지켜봐야할 것 같다... 는 생각입니다. 


민, 푸른하늘



Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

  1. 정태호

    굉장합니다.
    허민님의 구글플러스에 올린 사진들도 보았습니다.
    어떤 사진들은 포토스피어 아이콘이 있고 어떤 것들은 아이콘이 없습니다.
    아이콘이 있는 것들은 스마트폰에서 아이콘을 누른 후 사진 우하측의 원형 화살표를 누르면 스마트폰을 위아래 좌우로 움직임에 따라 장면이 따라 바뀌는 것을 알 수 있습니다.
    근데, 아이콘이 없는 것들은 단순히 스마트폰의 화면을 계속 스크롤 해 줘야 합니다.
    말씀하신 지도뷰에도 들어가 봤는데, 멋진 360도 사진들이 많았습니다. 근데, 모두 아이콘이 없는 사진들 뿐입니다. 어떻게 하면 아이콘이 나타나게 할 수 있나요? 방법이 없나요?

    2013.11.22 13:49 [ ADDR : EDIT/ DEL : REPLY ]
    • 제일 쉬운건 그냥 안드로이드 최신모델로 360도 사진을 촬영하는 겁니다. 제건 좀 오래된 모델이라 없는데, 최신모델에선 바로 촬영하고 바로 공유할 수 있습니다. 단, 품질은 별로 안좋습니다.

      2013.11.22 23:54 신고 [ ADDR : EDIT/ DEL ]
  2. 정태호 ( 청기누설)

    http://m.cafe.naver.com/ArticleRead.nhn?clubid=25095150&articleid=3293&page=1&boardtype=L
    저도 스마트폰으로 photo sphere 사진을 찍어 보았습니다.
    물론 신기 하고 재미있었습니다 근데 말씀하신지도 ql 가보니 멋진 사진들이 아주 많았습니다photo sphere 사진을 스마트폰으로 볼 때 스마트포네 트랙킹 기능이 있어

    2013.11.24 01:55 [ ADDR : EDIT/ DEL : REPLY ]
  3. 정태호 ( 청기누설)

    스마트폰으로 입력 하려니 조금 버벅대는 점이 있습니다. 죄송합니다.
    지도 뷰에 photo sphere 사진이 많이있던데 스마트폰으로 트레킹이 되지 않습니다.
    올려주신 바르셀로나 핀란드 등의 사진들은 스마트폰으로 잘 감상했습니다.
    근데지도 뷰에 있는 사진들은 모두 스마트폰으로 트레킹이 되지 않았습니다.
    지도 표시 있는 사진들도 올려주신 사진들처럼 스마트폰으로 제대로 감상할 수는 없는지요?

    2013.11.24 02:04 [ ADDR : EDIT/ DEL : REPLY ]
    • 스마트폰으로 트레킹을 한다는 게 무슨 뜻인지 잘 이해가 안되네요.
      제가 촬영하는 360도 파노라마는 대부분 360cities.net 에 올립니다.

      https://www.360cities.net/profile/min-heo 에서 한번 보세요.

      2013.11.26 23:25 신고 [ ADDR : EDIT/ DEL ]

사진/360 파노라마2013. 3. 27. 16:17

지난 주말, 지오캐싱도 할 겸, 파노라마도 촬영할 겸, 꽃구경도 할 겸... 겸사겸사 남쪽 동네에 다녀왔습니다.


첫날은 전주에서 지오캐싱하고, 아는 분들과 술한잔 했습니다. 사실 전주에는 지오캐싱으로 친해진 분들도 많고, 파노라마로 친해진 분들도 많아서 내려갈 때마다 약간 부담스러웠는데, 이번엔 함께 만났습니다. 오래전에 써둔 글처럼, 지오캐싱과 파노라마는 상당히 어울리는 취미라서, 함께 술한잔 하다보니 서로들 잘 통하더군요~ ㅎㅎ


아래는 전주 수목원입니다. 도로공사에서 운영하는 곳인데 무료네요. 아직까지 추워서 군데군데 싹만 나와서 그렇지 날이 좀 더 풀리면 정말 예쁘겠다 싶었습니다. 물론 이곳에도 지오캐시가 있습니다. 왼쪽에 서 계시는 분이 주인장이십니다. ㅎㅎ



Jeonju Arboretum, Hydrophyte in 대한민국


다음은 진북사입니다. 전주성의 동서남북 사방에 절을 짓고 전주를 수호했다는 사고사(四固寺)중의 하나로, 촬영지는 가장위에 있는 산신각입니다. 아기가 없는 부부가 소원을 빌면 아기가 생긴다는 영험이 있기로 유명한 곳이라네요.



JinBukSa (North Defense Temple) in 대한민국


다음날 아침엔 6시에 출발했습니다. 마침 때가 매화철이라서 그동네가 엄청 밀릴 수 있기 때문에 작정하고 일찍 출발한 겁니다. 


먼저 송광사로 향했습니다. 이곳에는 우리나라에서 3번째로 오래된 캐시인 Path to Enlightenment (Songkwangsa Temple) : GCHBGB 가 있는 곳입니다. 사실 이 캐시가 이번 여행의 중요한 목적중의 하나였습니다. 우리나라에서 가장 오래된 캐시 10개를 모두 찾는 것을 장기 목표로 설정하고 있거든요. 


아래가 송광사입니다. 이 곳이 사진찍는 포인트라고 하더군요. 



Songkwangsa Temple in 대한민국


캐시가 숨겨진 곳은 송광사를 지나서 좀 더 올라간 거의 아무도 안다니는 듯한 곳이었습니다. 거의 10년 전에 설치된 캐시가 지금까지도 유지되려면 좀 접근성이 떨어질 수 밖에 없죠. 같이 동행한 분이 이 캐시를 찾았는데, 캐시통이 깨진 상태였습니다. 아래 사진에서 오른쪽 아래에 동그란 통 보이시죠? 아마도 맷돼지던... 야생동물이 깨뜨린 것 같았습니다. 그래서 제가 가지고 간 락앤락통으로 교체를 했습니다. 


현재 이 캐시의 주인장은 오래전부터 접속하지 않는 것으로 보아 지오캐싱을 그만 둔 것으로 보이는데, 이럴 경우에는 지오캐싱하는 사람들이 공동으로 관리하게 됩니다.



다음엔 하동으로 강굴을 먹으러 갔습니다. 사실 이번 여행은 홍의님이 Facebook에 강굴 사진을 올리면서 시작되었더랬습니다. 언제든지 내려가면 안내를 해 주신다고 해서 그날로 날을 잡았죠. ㅎㅎ 


아래 보이는 게 강굴입니다. 강에서 자란다고 강굴이라고 하고, 벚꽃 필때쯤이 제일 맛있다고 벚굴이라고도 한답니다. 다른 계절에는 거의 안먹는다고 하더군요. 맛은 그냥 일반 굴과 비슷했습니다. 그래도 손바닥보다 훨씬 큰 굴을 구워먹었다는 추억은 평생가져갈 수 있겠죠~~



아래는 그 인근에서 촬영한 사진입니다. 섬진강을 내려다보는 풍경이 멋지네요. 마침 이곳 땅주인께서 밭을 갈고 있었는데, 참 부럽더군요.



Seomjin River from Hadong in 대한민국


그다음으로는 하동 평사리로 갔습니다. 토지의 주 무대가 된 곳이죠. 사실 이동네는 그 전에는 거의 아무 것도 없는 촌동네였는데, 드라마 토지를 촬영한 이후로 주요 관광지가 된 곳이라고 합니다. 원래 99간 짜리 한옥은 좀 더 들어가야 있다고 하고요.


아래는 평사리 벌판 한가운데 있는 부부송(夫婦松)의 모습입니다. 물론 바로 옆에 지오캐시가 숨겨져 있죠. 원래 지오캐시는 이렇게 멋진 곳을 안내하는 목적이 되는 게 우선입니다. 


정말 근래들어 본 가장 멋진 소나무다 싶었습니다. 게다가 그 주변엔 매화꽃이 심어져 있어서, 시간이 흐를수록 멋진 곳으로 변해갈 것 같았습니다. 그런데.... 아쉽게도 이곳이 사유지인 모양이더군요. 들어오는 입구에 주인 이외에 출입금지라고 되어 있던데... ㅠㅠ



Couple Pine Tree in 대한민국


아래는 평사리 윗쪽 도로에 있는 전망대입니다. 섬진강도 보이고, 부부송도 보이고, 최참판댁도 보이고... 정말 절경이었습니다.



800 4818 Panorama in 대한민국


마지막으로 들른 곳은 곡전재입니다. 홈페이지를 보면 현재 숙박시설로 이용되고 있는 듯 한데, 구례군 향토문화유산으로 지정되어 있는, 멋드러진 한옥입니다. 특히 정원이 참 예쁘게 만들어져 있네요.



Gokjeonjae Pension in 대한민국


아래도 곡전재... 연못쪽입니다.



Gokjeonjae Pension 2 in 대한민국


이렇게 해서 오랜만에 다녀온 나들이 여행기를 마칩니다. 안내해주신 하얀곰님과 홍의님께 깊은 감사를 드립니다. 함께 다녀오신 고선생님께도 감사드리고요.


민, 푸른하늘


Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

  1. 강에서나는 강굴..
    굴이 강에서 나는지 처음 알았습니다...
    제 눈길은 강굴에게만 가네요...
    좋은 시간 보내고 오셔서 부럽습니다...
    지오캐싱의 목적....좋은 곳을 안내하기 위한 이정표라는 말씀에 왠지 관심이 끌립니다...
    저도 어딘가에서 멋진 풍경을 보게되면 누군가에게 안내해 주고 싶어 안달이 나는 스타일이거든요....
    음..
    지오캐싱 입문을 해야 되나요...^^;;

    2013.03.28 09:45 [ ADDR : EDIT/ DEL : REPLY ]
  2. 하얀곰

    덕분에 저도 송광사 캐시 찾았습니다.
    혼자였으면 갈 수 없는 그런 곳은 역시 여럿이 어울려야만 가게 됩니다.
    군산에 2개가 있으니 언제 한번 더 오셔야지요?

    2013.05.16 16:38 [ ADDR : EDIT/ DEL : REPLY ]

사진/360 파노라마2013. 1. 6. 15:33

요즘 제가 파노라마 투어를 제작하는데 열을 올리고 있습니다. 일반 사진도 마찬가지겠지만, 파노라마 사진도 일반적으로 한군데에서 여러개를 찍게 됩니다. 이러한 파노라마들을 잘 연계시켜서 보여주도록 만든 게 파노라마 투어입니다. 


이렇게 만들어진 파노라마 투어를 페이스북에 삽입시키는 방법을 찾아봤습니다. 그러니까... 파노라마의 링크나 작은 아이콘만 보이는 게 아니라, 아래 그림과 같이 직접 플레이를 시킬 수 있는 형태로 삽입하는 방법말입니다. 


원래 링크를 공유하는 것이니까 클릭하면 볼 수는 있지만, 유튜브 영상을 보는 것처럼 페이스북을 떠나지 않고 파노라마를 볼 수 있는 방법이 있으면 더 좋겠죠. 



krpano 포럼을 뒤적거려보니 마침 별도로 만들어진 Facebook Panorama Embed Tutorial라는 문서가 있었습니다. 저도 아직까지 해본 건 아니지만, 그다지 까다로운 것 같지는 않아서, 그냥 직접 해보면서 문서를 작성하기로 했습니다. 물론, 파노라마 투어를 페이스북에 embed 시키기 위해서는 해당 파노라마가 별도의 서버에 올려진 상태여야 합니다. 


먼저 자신의 파노라마페이지 (html 파일)을 수정하여 <head> </head> 사이에 다음과 같은 metatag 를 삽입시켜주어야 합니다. 물론 각 항목의 내용은 자신의 파노라마의 실제 내용과 맞도록 수정해야 하고요.


<meta property="og:site_name" content="SITE TITLE" />

<meta property="og:url" content="PAGE URL" />

<meta property="og:title" content="PAGE TITLE" />

<meta property="og:type" content="article" />

<meta property="og:image" content="PREVIEW IMAGE URL" /> 

<meta property="og:video" content="PANO SWF URL" /> 

<meta property="og:video:height" content="300" /> 

<meta property="og:video:width" content="400" /> 

<meta property="og:video:type" content="application/x-shockwave-flash" />


이게 끝입니다. 각 항목에 대한 자세한 내용은 여기여기를 읽어보시기 바랍니다.이렇게 다 편집이 끝나면 해당 html 파일을 원하는 사이트에 올린 후, 그 주소를 사용해 페북에 공유하면 됩니다. 하지만 에러가 발생할 수 있으므로 먼저 아래와 같이 "나만 보기"로 올린 뒤에 나중에 전체공개로 바꿔주면 됩니다.



무언가 에러가 발생했을 경우, html 파일을 수정하고 다시 시행하면 될 것 같지만, 그렇지 않습니다. 아무리 내용을 수정해도 처음 그 상태대로 남아있는데, 이는 페이스북에서 자체적으로 약 1주일정도 cache 데이터를 가지고 있기 때문입니다. 


이때 페이스북 디버거 페이지 (http://developers.facebook.com/tools/debug) 에 들어가서 해당 페이지 주소를 입력하고 디버그 버튼을 눌러주시면 됩니다.



==================================

이상은 일반적인 내용이고... 페이스북에 파노라마를 embed 시킨다는 것이 표준적인 것이 아니기 때문에 환경에 따라 여러가지 편집이 필요할 수 있습니다. 일단 저는 제가 사용하는 tistory에 올린 파노라마를 삽입시키는 방법부터 찾기로 했습니다. 그런데.... 처음에는 아주 쉬울 것 같았는데, 쉽지가 않았습니다. 한 열댓번을 바꾸면서 테스트 한 것 같네요.


일단 제가 성공한 방법은 티스토리에 플래시(swf)로 만들어진 파노라마 파일을 올리고, 다른 서버(저의 경우 http://360vr.kr)에 html 파일과 thumbnail image만 올리는 방식입니다.


참고로 제가 이번에 올린 벚꽃나무 날리는 파노라마 파일(fb_flower.html)에는 다음과 같이 넣었습니다. 그 다음 이 파일과 아이콘으로 이용할 작은 사진(fb_flower.jpg)를 제가 운영중인 서버(http://360.vr/)에 적당히 올렸습니다.


<!DOCTYPE html>

<html>

<head>

<title>krpano.com - kyeongju_esplanade_modify</title>

<meta name="viewport" content="target-densitydpi=device-dpi, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0" />

<meta name="apple-mobile-web-app-capable" content="yes" />

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />


<meta property="fb:page_id" content="********" />

<meta property="og:site_name" content="Bluesky's 360vr panoramas" />

<meta property="og:url" content="http://360vr.kr/panoramas/flowers/fb_flower.html" />

<meta property="og:title" content="Flowers in Kyeongju" />

<meta property="og:type" content="article" />

<meta property="og:image" content="http://360vr.kr/panoramas/flowers/fb_flower.jpg" /> 

<meta property="og:video" content="https://t1.daumcdn.net/cfile/tistory/1945EA4550E5718D2B?original" /> 

<meta property="og:video:type" content="application/x-shockwave-flash" />

<meta property="og:video:height" content="398" /> 

<meta property="og:video:width" content="460" /> 


<style>

@media only screen and (min-device-width: 800px) { html { overflow:hidden; } }

html { height:100%; }

body { height:100%; overflow: hidden; margin:0; padding:0; font-family:Arial, Helvetica, sans-serif; font-size:16px; color:#FFFFFF; background-color:#000000; }

a{ color:#AAAAAA; text-decoration:underline; }

a:hover{ color:#FFFFFF; text-decoration:underline; }

</style>

<script language = javascript>

<!--


window.location.replace('http://www.internetmap.kr/entry/Waiting-for-the-blossom-VR-panorama');

window.location.href = "http://www.internetmap.kr/entry/Waiting-for-the-blossom-VR-panorama";


//--> 

</script>


</head>


<body>

<script src="tour.js"></script>


<div id="pano" style="width:100%; height:100%;">

<noscript><table style="width:100%;height:100%;"><tr style="valign:middle;"><td><div style="text-align:center;">ERROR:<br/><br/>Javascript not activated<br/><br/></div></td></tr></table></noscript>

<script>

embedpano({swf:"tour.swf", xml:"tour.xml", target:"pano", html5:"auto", passQueryParameters:true});

</script>

</div>


</body>

====
여기에서 까만색은 krpano tools를 이용해 파노라마 투어를 만들었을 때 원래 생긴 코드입니다. 두번째 초록색으로 되어 있는 부분은 위에서 설명한 내용입니다. 

마지막으로 파란색 부분이 제가 해결이 안되어서 고민하다가 임의로 삽입한 부분입니다. 즉, 원래 이 부분이 없이 그냥 페이스북에 링크를 올리면, 파노라마가 embed 되기는 하는데, 링크를 클릭하면 이 파일이 시행되게 됩니다. 그런데, 사실 이 파일의 아랫부분에 있는 내용은 krpano로 만든 다른 파노라마를 실행시키기 위한 코드로서 이것만으로는 에러가 발생하게 됩니다. 그래서 이 파일을 실행시키면 제가 적어둔 블로그로 연결되도록 redirect하는 코드입니다.

어쨌든 그 결과... 제 페이스북에 이 파일(fb_flower.html)의 링크릴 올리는 순간, 아래처럼 작은 사진과 함께 삼각형 표시가 나타나고요~




이 플레이버튼을 누르면 아래처럼 직접 보이게 되었습니다.



===
기타 별도의 웹페이지에 따로 올렸을 경우, swf 만 독립적으로 있는 게 아니라, swf+xml 파일이 있는 경우, wordpress 에 올라간 경우 등등에 따라서 약간씩 손을 봐야 하는 것 같은데, 오늘은 이만 여기까지.!!!

민, 푸른하늘

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

  1. 우와, 정말 아름답습니다.

    2013.02.10 04:05 [ ADDR : EDIT/ DEL : REPLY ]
  2. 올댓

    하..어렵네요...저도 올리고 싶어요,.,ㅜ

    2015.02.27 09:56 [ ADDR : EDIT/ DEL : REPLY ]
  3. 파노투어

    허허.. Panotour로 제작한 html 을 수정 해봤는데도 되지가 않네요 아쉽아쉽ㅠㅠㅠ.

    2015.10.30 17:46 [ ADDR : EDIT/ DEL : REPLY ]
  4. 롱키

    swf 파일1개로 만들면 모바일에서 안보이지 않나요?

    2016.04.15 18:33 [ ADDR : EDIT/ DEL : REPLY ]
    • 옙. 이글을 쓸때쯤부터... 스마트폰에서 플래시 지원을 줄여갔습니다. 플래시 뷰어가 포함된 브라우저를 찾아 따로 설치해야만 보실 수 있습니다.

      2016.04.15 20:41 신고 [ ADDR : EDIT/ DEL ]

사진/360 파노라마2013. 1. 3. 18:07

오늘이 가장 추운 날이랍니다. 온 시내가 꽁꽁 얼어붙고, 지나다니는 아가씨들 걸음이 종종...


다들 꽁꽁 얼어있을 때 저는 따뜻한 봄날을 그리면서 krpano tool을 이용해 파노라마 투어를 하나 만들어 봤습니다. 


요즘같으면 벚꽃이 흐드러지는 저런 날을 전혀 상상치도 못하겠지만, 이제 겨우 100일만 기다리면 됩니다. 하늘은 우리를 속이지 않죠. ㅎㅎ


사실 아래 파노라마는 제 작품이 아닙니다. 저는 벚꽃을 찍은 파노라마가 없어서 하나 빌렸고요, 벗꽃이 흩날리는 플러그인도 krpano 포럼에 올라온 걸 참고로 해서 만들었습니다.


아무튼 먼저 감상하시고... 자세한 설명은 아래에 있습니다. 감상하실 때는 아래 도구막대 가운데 부분에 화살표 4개가 모여있는 걸 클릭하시면 전체화면으로 볼 수 있습니다.



이 플러그인 구현에서 가장 중요한 부분은 layer 정의와, 이걸 움직이게 하는 <action> 부분입니다. 먼저 layer 정의는 아래와 같습니다.


<layer name="flower1" url="snow.swf" alturl="snow.js" imageurl="pink1.png"  mode="image" 

imagescale="1" flag1="0" flakes="30" speed="0.07" speedvariance="100.0" 

spreading="15" shake="300" wind="2" winddir="0" />


여기에서 url="snow.swf" alturl="snow.js" 는 krpano에서 제공하는 플러그인입니다. 이름에서 알 수 있는 것처럼 원래 눈 내리는 모습에 사용하는 플러그인이죠. 몇몇 변수의 의미는 아래와 같습니다.


flakes="30" --- 꽃잎의 수

speed="0.07"  --- 꽃잎이 내려오는 속도

speedvariance="100.0" ---- 속도를 다르게 하는 정도. 모든 꽃잎이 똑같은 속도로 내려오면 안되니까.

spreading="15" shake="300" --- 흩어지는 정도

wind="2" winddir="0"  --- 바람의 속도와 바람의 방향


여기에서 imageurl을 적당한 그림으로 바꿔주기만 하면 눈내리는 효과도 만들어 볼 수 있고, 애인 얼굴이 가득 날려내려오도록 만들 수 있습니다. 원래 여기까지가 snow plugin이 해주는 일입니다.


그런데... 이 꽃잎 플러그인은 그냥 그림이 내려오는 게 아니라, 꽃잎 그림이 팔랑팔랑 거리면서 바뀌고 있습니다. 이걸 구현한게 가장 핵심이겠죠. 그게 아래 <action> 부분입니다.


<action name="fchange1">

switch(layer[flower1].flag1,0,1);

if(layer[flower1].flag1 != 1 ,set(plugin[flower1].imageurl,pink1.png);,

set(plugin[flower1].imageurl,pink1b.png);;

);


tween(layer[flower1].alpha,0.3,0.01,default,

tween(layer[flower1].alpha,0.8,0.01); delayedcall(0.1,fchange1());

);

</action>


윗부분(switch/if)은 꽃잎의 모양을 바꿔주는 겁니다. 이 action은 아랫부분에 의해 무한 반복되는데, 한번 들어올 때마다 다른 형태로 바꿔주게 됩니다.


아랫부분에 있는 tween 은 krpano에서 애니메이션 효과를 위해서 가장 많이 사용되는 action입니다.

set(A, 0) 라면 A를 0로 즉시 바꿔주는데, 

tween(A, 0) 이라고 두면 A에서 주어진 시간(default 는 0.5초)동안 단계적으로 바꿔주게 됩니다. 조금씩 바뀔 때마다 화면에 표현되면 애니메이션 효과가 발생하는 거죠.


여기에서는 꽃잎(layer[flower1]) 의 투명도(alpha)를 현재상태에서 0.3으로 바꾸고, 이게 끝나면 다시 0.8로 단계적으로 바꾼 후, 다시 처음으로 되돌아가서 같은 함수를 호출하도록 되어 있습니다.


결과적으로 pink1.png 라는 그림을 읽어들여와서 투명도를 0.8 -> 0.3 -> 0.8 로 단계적으로 바꾸고, 다음으로 pink1b.png 라는 그림을 읽어들여와서 투명도를 바꾸는... 이런 과정을 계속해서 반복하게 됩니다. 


그런데 이렇게 하더라도 꽃잎이 무작위하게 떨어진다기 보다는 너무 규칙적으로 떨어져 보이기 때문에 layer를 3개 만들고 약간씩 속도나 형태 등을 달리해 두었습니다. 물론 꽃잎모양도 다양하게 만들고, 파라미터 들을 좀더 세세하게 조정하면 더 이쁘게 만들 수도 있지 않을까... 싶습니다만, 저는 여기까지.

파노라마 원본 및 xml 파일 등은 모두 cubicpan cafe에 있으니 직접 확인하세요.

민, 푸른하늘

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

  1. 이경춘

    멈추어진 사진에서 360도 카메라까지 보았는데 이젠 동적 자연물까지...아... 멋있습니다.
    바라만 보아야 하다니...ㅎㅎㅎ 그래도 눈이 즐겁네요.. 글에 설명이 있어 감사합니다.

    2013.01.04 10:45 [ ADDR : EDIT/ DEL : REPLY ]

사진/360 파노라마2012. 12. 25. 15:13

그냥 몇줄 수정한 정도가 아니라, 완전히 Professional 하게 제작한 본격 VR 파노라마 투어입니다. 먼저 아래는 주요화면을 스크린샷으로 뜬 겁니다. 구경한번 하시고~~~


직접 보실 수 있는 주소는 아래와 같습니다. 이 글에 직접 삽입할까 했는데, 디자인이 맞지 않네요... ㅠ


http://360vr.kr/panoramas/NMus/tour.html



물론 이 파노라마도 krpano tools 를 이용하여 제작했습니다. 이전 글에서는 krpano의 droplet으로 만들어진 투어를 간단하게 몇줄만 수정하면 왠만큼 쓸만한 투어를 제작할 수 있다는 내용이었는데, 이번 작품은 아얘 거의 손이 안간 부분이 없을 정도로 뜯어 고쳤습니다.


먼저 왼쪽 위에 있는 지도부분에 대해서...



VR 투어는 여러장의 360*180 파노라마를 묶어서 보여주게 되므로, 이런 지도가 필요합니다. 이 투어처럼 파노라마 장수가 많아질 수록 반드시 필요하다고 할 수 있죠. 


이 지도 부분은 많은 신경을 썼습니다. 현재 보고 있는 파노라마의 위치 및 방향을 보여주는 것은 물론 클릭을 하면 원하는 파노라마로 직접 이동이 되며, 확대/축소/좌우이동 등도 가능하도록 만들어져 있습니다. 물론 지도 자체를 크게/작게 만들 수도 있구요. 


그 다음은 화살표와 사람 아이콘...



대개의 경우, VR 파노라마는 방향을 가르키는 화살표 등으로 핫스팟(hotspot)을 만듭니다. 그런데 이번 프로젝트의 경우 전체적인 씬이 널찍하고 시원해서 그런 화살표를 배치하는 게 마음에 안들었습니다. 


그래서 맨처음 고려했던 것이 화살표 아이콘. 이것은 구글 스트리트뷰나 다음 로드뷰처럼 공중에 떠다니는 기분이 드는 화살표로서, 여러가지 소스를 참고로 해서 겨우 겨우 만들어 냈습니다. 두번째 사람 아이콘은 구현한 것은 그렇게 까다로운 것은 아니지만, 거리를 기준으로 아이콘의 크기를 변경시키도록 해서 마치 사람이 그곳에 서 있는 듯한 모습을 구현해 이쁘다는 평을 많이 받았습니다.


다음은 그림과 연계된 사진 보여주기 기능...



이것도 사실 현재의 파노라마와 사진이 연동될 수 있도록 만들기 위해 아주 골머리를 많이 썩혔던 부분이었습니다. 즉, 다른 파노라마가 선택되면, 빨간색 화살표를 클릭했을 때 뜨는 사진이 달라지고, 사진을 이리저리 돌려보다가 그 사진에 해당되는 파노라마로 직접 들어갈 수 있습니다. 그런데, 파노라마와 사진이 1:1로 매칭되는 게 아니라서 골머리를 많이 알아야 했던 것이죠. 만져보면 별거 아닌데, 실제 구현할 때는 많이 고생했었습니다.


다음으로 오른쪽에 있는 안내부분...



이 부분은 기술적으로는 그다지 까다로울 게 없는 부분입니다. 클릭을 하면 자연스럽게 미끄러져 나오고 글씨를 클릭하면 해당되는 이미지가 뜨고... 등등 아주 간단한 액션들로 구성되어 있습니다. 


다음으로 자동투어...



아래쪽에 있는 콘트롤 바 위쪽에 Auto Tour라고 되어 있는 부분을 누르면 자동 투어를 볼 수 있습니다. 하나의 씬을 불러들인 후, 일정 동작을 하고 다시 다음 씬을 불러오는 방식으로 구성되어 있습니다. 다만, 이 투어의 경우 모든 지점에서 전체의 모습이 보이기 때문에 특별한 동작은 거의 없이 순서대로 하나씩만 불러들이도록 구성이 되어 있습니다.


물론 위에서 설명한 것 외에도 인트로 구성방법이라든지... 여러가지로 신경을 쓴 부분이 많습니다만, 생략... 


사실 제일 중요한 건 전체적인 구성이겠죠. 여러가지 기능을 보여주면서도 전체적으로 깔끔한 디자인이 되어야 한다는 것. 저는 그런 점에서 미술이나 음악, 글쓰기 등 창조적인 일을 하는 분들을 존경합니다. 이렇게 깔끔한 디자인을 만들어주신 김태은씨에게 그래서 특별히 감사를 드립니다.


아무튼 이 투어를 만들면서 여러가지로 골치도 많이 썩혔지만, 이것저것 만지면서 새로운 것들을 완성해 나갈 수 있어 보람을 느꼈습니다. 그런 점에서 멋진 파노라마를 제공해 주시고, 제작할 수 있는 기회를 만들어주신 픽스뷰 관계자분께 감사를 드립니다.


민, 푸른하늘


참고: 이 파노라마 투어는 cafe24 서버에 올라가 있는데, 제가 실험용으로 사용하는지라 하루 사용 가능한 트래픽용량이 800MB 에 불과합니다. 몇분만 자동투어를 돌리면 용량초과될 수 있으니 양해해 주시길 부탁드립니다.


Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

  1. 이경춘

    정말 하고싶은 기능들이 잘 되어 있네요..
    작성해 주시는 글들이 궁금함을 더하게 합니다. ㅎㅎㅎ 아 제 갈길이 힘드네요..ㅠ,.ㅠ

    2012.12.28 16:58 [ ADDR : EDIT/ DEL : REPLY ]
  2. VRMania

    깔끔한 디자인, 구현하고자 하는 뷰어.
    보면서 감탄했습니다.

    누군가의 도움을 받으셨다니 의외네요.. 잘보고 갑니다.

    2013.01.04 00:27 [ ADDR : EDIT/ DEL : REPLY ]
  3. 김하나

    안녕하세요 vr에 들어가는 핫스팟? 화살표를 젲가하는 방법에 대해 알아보다가 들어오게 되었는데요.. 질문드릴게 있어서 이렇게 글을 남깁니다. 제가 화살표를 커스터마이징해서 적용을 하고싶은데 (움직이는 화살표) 아실 것같아서 여쭤봅니다..gif로 만들었다가 적용이 되지를 않아서 혼란스러운 상태입니다..도움 부탁드려요

    2018.07.27 15:46 [ ADDR : EDIT/ DEL : REPLY ]
    • 요즘 제가 krpano를 만지지 않아서 잘 모르겠습니다만, gif 를 지원해주지 않으면 당연히 불가능합니다. 플래시로 만드는 방법이 있겠지만, 별로 추천드리진 않고요. 꼭 움직이는 화살표를 사용하겠다고하면 mp4 비디오를 사용하는 방법이 있을 듯 싶은데, 동영상은 제한이 많아서 어떨지 모르겠습니다.

      2018.08.06 12:27 신고 [ ADDR : EDIT/ DEL ]
  4. 비밀댓글입니다

    2021.09.09 19:47 [ ADDR : EDIT/ DEL : REPLY ]
    • 불가능합니다. 제가 손을 끊은지도 오래되었고, 지식을 얻는 것은 비용이 드는 일이라는 걸 알아주시는 게 좋을 것 같네요.

      2021.09.13 03:02 신고 [ ADDR : EDIT/ DEL ]

사진/360 파노라마2012. 11. 18. 20:30

krpano를 이용하면 360*180 파노라마 투어를 쉽게 제작할 수 있습니다. 파노라마 투어란 여러장의 파노라마를 묶어서 서로 연결시키고 여러가지 부가 기능을 넣어 사용자들이 보다 쉽게, 편하게 만들어 주는 것을 말합니다.


krpano를 사용하려면 http://krpano.com/download/ 에 들어가 다운로드 받으면 됩니다. 원래 라이센스를 구입해야 하지만, 라이센스가 없더라도 모든 기능을 다 테스트해볼 수 있습니다. 다만 데모버전이라는 표시가 남고, 온라인 서비스는 불가능합니다. 참고로, 이 글에 있는 기능은 최신버전에서만 돌아갑니다. 제가 사용하는 버전은 krpanotools-1.0.8.15-win-2012-10-05  입니다. 


혹시 이 글을 테스트해보고 싶으신데, 360파노라마가 없으시다면, 구글에서 검색해서 사용하시면 됩니다. 아래는 제가 오래전에 촬영해둔 사진을 사용하여 테스트하였습니다. 


1. 제작 기본


제일 먼저 할 일은 투어를 제작할 파노라마를 적당한 배치파일에 끌어다 놓는 것입니다. 아래는 오른쪽에 있는 3개의 파노라마를 MAKE VTOUR (NORMAL) droplet.bat 파일 위에 떨어뜨리는 모습입니다. 그러면 도스창이 뜨고 뭔가 한참 돌아갑니다. 작업이 완료된 후 원래 파노라마가 있던 폴더에 새로 vtour라는 폴더가 생깁니다.




이 vtour 디렉토리에는 아래처럼 여러가지 파일과 폴더가 들어있습니다. 여기에서 tour.html을 더블클릭하면 투어가 실행됩니다.



2. 플래시파일로 만들기


이렇게 만들어진 투어를 다른 사람들에게 보여주려면 인터넷 어딘가에 올려야 합니다. 하지만, 자신만의 호스팅 서비스가 없는 일반인들은 이게 쉽지가 않습니다. 투어가 여러개의 파일과 폴더로 구성되어 있기 때문입니다. 


이 파일들을 모두 모아 하나의 플래시 파일로 만들면 카페나 블로그등에 첨부해서 서비스할 수 있습니다. 플래시 파일로 결합하는 방법은 아래 글 아랫부분을 읽어보시면 됩니다.


http://www.internetmap.kr/entry/초간단 오브젝트VR 제작


이렇게 만들어진 플래시 파일을, 그 파일의 절대주소를 알아내어 embed 코드를 만드는 방법은 HDVR의 글을 참고하시기 바랍니다. 아래는 이와 같은 과정을 통해 작성된 결과입니다.




3. 파노라마에 제목 달기


이 정도로도 사실 왠만큼은 충분합니다만, 좀더 편리하게 만들려면 약간의 편집이 필요합니다. 원래 krpano로 제작한 투어의 구성, 형태, 작동방법은 xml 파일로 저장되어 있습니다. 이 내용을 편집하면 얼마든지 자유롭게 형태를 구성할 수 있습니다. 


일단 제일 먼저 할 일은 각각의 파노라마에 대해 제목을 지정하는 것입니다. 이를 위해서는 vtour.xml을 적당한 에디터로 연 뒤, 맨 아래쪽으로 내려가서 아래처럼 편집을 합니다. title="..." 이라고 되어 있는 부분을 적당한 제목으로 바꿔주는 것입니다. 이렇게 하면 투어 왼쪽 밑에 이 제목이 표시되게 됩니다. 



파일명이 깨져나타날 경우가 발생할 때에는,아래와 같이 이 파일의 인코딩 방식을 UTF-8로 저장하면 됩니다.



4. 파노라마에 핫스팟 추가하기


tour를 제작하면 vtour_editor.html 이라는 파일이 함께 생성됩니다. 이 파일을 사용하면 가장 기초적인 편집이 가능합니다. 아래는 위에서 만든 vtour_editor.html을 실행시켜본 모습입니다. 

여기에서 맨 왼쪽 빨간화살표부분을 클릭하면, 이 파노라마를 불러올 때, 현재의 화면상태 (방향 및 확대상태)대로 불러오게 됩니다. 

두번째 화살표가 가장 중요한 것으로서 핫스팟(hotspot)을 추가하는 버튼입니다. 이걸 누르고, 적당한 위치로 이동시킨 후 [done]을 누르고 마지막으로 이 화살표를 누를 때 어떤 파노라마가 뜰지를 지정하면 끝납니다.

이상의 작업이 끝나면 맨 오른쪽에 있는 [save tour.xml]을 눌러 저장하면 됩니다.


아래는 그 결과입니다. 





5. 툴팁 표시하기


위에 있는 투어를 돌려보시면 아시겠지만, 화살표가 어떤 파노라마와 연결되어 있는지는 실제 클릭해 보기 전까지는 알 수 없습니다. 화살표에 뭔가 표시가 있으면 좋겠다 싶으실 겁니다. 이렇게 만드는 것도 무척 쉽습니다.


또다시 vtour.xml 파일을 editor 로 열어 맨 윗부분을 보시면 아래와 같은 부분이 있습니다. 빨간 사각형이 둘러친 부분을 false에서 true로 바꾸어주시면 됩니다. 




이중에서 맨 왼쪽 것은 썸네일 이미지에 마우스를 올릴때 제목이 표시되도록 하는 것이고, 두번째는 핫스팟(화살표)에 마우스를 올릴 때 제목이 표시되도록 하는 것, 마지막 것은 지도에 표시된 핫스팟에 마우스를 올릴 때 제목이 표시되도록 하는 옵션입니다. (물론 지도부분은 별도로 설정을 해주기 전까지 아무 의미도 없습니다.)

아래는 그 결과입니다.



참고로, VR 투어를 만들때 마다 이렇게 설정하고 싶으시다면, krpanotools 디렉토리 밑에 있는 templete/xml 디렉토리에 들어가서, vtour.xml 파일을 위와 같은 방식으로 편집해 두시면 다음부터는 매번 편집하지 않아도 툴팁이 표시됩니다.


민, 푸른하늘



Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

  1. 유창열

    친절하고 상세한 설명에 감사드립니다..~^^

    제가 테스트해 본결과
    krpanotools-1.0.8.15-win-2012-10-05 이전에 받으신 분은 업그레이드 한후 실행하셔야 합니다...

    이전 버전에는 위의 "5번 툴팁 표시하기"에 있는 vtour.xml 파일의
    8,9,10 번 줄이 아예 없습니다.

    에디터로 연후 title="...." 에 글자 하나만 넣으면 핫스팟 화살표 및 섬네일이미지에 동시 적용되니 이전버전보다 간편해 졌네요~^^

    2012.11.19 16:44 [ ADDR : EDIT/ DEL : REPLY ]
  2. 이경춘

    덕분에 이거 하는것까지 성공했습니다. 감사합니다.

    2012.12.28 17:00 [ ADDR : EDIT/ DEL : REPLY ]
  3. 예 당

    허민 박사님 좋은 정보 감사 드립니다~~^^

    2013.01.09 22:02 [ ADDR : EDIT/ DEL : REPLY ]
  4. 도움이필요해요

    안녕하세요 ㅠ.ㅠ 도움이 필요해요. 이 프로그램을 잘 쓰고 싶은데, 처음부터 제대로 끝까지 배울 수 있는 곳이 없을까요? ㅠ.ㅠ

    2013.11.17 02:22 [ ADDR : EDIT/ DEL : REPLY ]

사진/360 파노라마2012. 9. 9. 00:22

krpano에는 작고 간단하면서도 동적인 스크립트 언어가 있습니다. 이를 사용하면 krpano를 여러가지 방법으로 변경할 수 있습니다. krpano의 명령 혹은 함수는 action이라고 합니다. 기존의 액션을 사용하여 새로운 액션을 제작하는 것도 가능합니다. 


스크립트 언어는 동적이며, 기본적으로 일부 기정의된 변수를 제외하면 무유형(untyped)이지만, 액션 내부에서 타입이 자동 변환되기 때문에 거의 대부분 문제가 없습니다.


KRPANO 전역변수


  • version(RO)(예: "1.0.8.15", xmlversion(RO), build(RO) (예: "2012-8-10")
  • mouse.x, mouse.y, mouse.stagex, mouse.stagey  /(RO)* mouse.x/y는 현 area에 대한 상대좌표. */
  • keycode(RO)  /* onkeydown, onkeyup 이벤트에서 설정됨. 
  • wheeldelta(RO) /* 마우스휠 돌아간 양, onmousewheel 이벤트에서 설정됨 
  • fullscreen  /* 풀스크린상태. 설정하면 상태가 바뀜. 단, 마우스/키보드 액션이 있을때만 가능. 즉, onclick="set(fullscreen, true);" onkeydown="swtich(fullscree);" 등만 가능.
  • stagex, stagey(RO) /* 현재 윈도의 크기. onresize 때 크기를 알아낼때 사용
  • browser.useragent
  • isflash, ishtml5, ismobile, istablet, isdesktop(RO), ... 
  • timertick(RO)       /* 뷰어가 시작된 이후의 시간. miliseconds. */
  • random(RO) /* 0.0-1.0사이. 1-10까지 만들려면, mul(val, random, 9); add(val, 1); roundval(val);
  • hlookat_moveforce, vlookat_moveforce, fov_moveforce /* 0이 아닌 값으로 설정하면, 가속(keybaccelerate) 되어 최고속도(keybspeed)가 되면 다시 0.0으로 설정되고 감속(keybfriction)됨 */
  • multireslevel(RO)  /* 현재의 level */
  • lockmultireslevel   /* "current"이면 현재의 레벨로, "3"이면 3레벨로 고정. "-1"이면 고정 해제 */
  • downloadlockedlevel 
  • xml.url(RO)          /* 현재 xml파일의 경로 */
  • xml.content(RO)   /* xml 파일에 들어있는 전체 내용 */
  • xml.scene(RO)    /* 현재 scene의 이름 */
  • lasterror             /* 마지막 에러 */
  • haveexternalinterface  /* local에서 Flash/javascript를 실행시킬 수 있는지? */
  • havenetworkaccess  /* 


Actions


  • set(variable, value) /* variable :=value. variable이 없으면 만들어짐. 다른 변수를 복사해 넣으려면 set(variable1, get(variable2)); 로 써야 함.
  • get(variable)          /* 다른 action에 variable을 넘겨줄때나, array[]에서 사용해야 할 때
  • copy(dest, source)  /* set(dest, get(source)); 와 동일함
  • delete(...variables...) 
  • if (condition, then_action, else_action) ifnot (condition, then_action, else_action)      /* condition이 true, not 0, not null 이면 then_action 실행됨.   cond1 OPERATOR cond2. 관계연산자로는 ==, !=, </LT, GT, LE, GE, ===,!== (존재할 때만 비교)
  • action(actionname, parameters...) / actionname(parameters...)로 써도 가능. 매개변수는 'parameter'도 가능하고 "parameter" 도 가능
  • delayedcall(delay, action)  /* delay 초 후에 action 실행
  • for(startaction, condition, nextaction, loopaction), asyncfor(startaction, condition, nextaction, loopaction) /* startaction -> condition 체크 -> loopaction -> nextaction -> condition 체크 ->... 일반 for의 경우에는 for가 완료되어야 그 다음 문장이 실행됨. async의 경우 for를 한번 통과하고나서 다음문장을 계속실행. for의 loop action은 한 frame에 한번씩 수행됨*/
  • loop(condition, loopaction), asyncloop(condition, loopaction) /* condition check -> loopaction */
  • switch(variable, valueA*, valueB*,..) /* switch(variable)이면, 실행될때마다 variable이 true/false를 반복함. switch(variable, 3, 4, 7) 이라면 첫번째는 3 두번째는 4, 세번째는 7, 네번째는 3 등으로 계속 반복 */
  • push(variable), pop(variable) /* variable을 stack에 저장/불러옴 */
  • stopall() /* 현재 수행중인 actions, tween 정지. queueed action 제거 */
  • breakall() /* 현재 수행중인 actions, tween 정지. queued action 수행 */
  • add/sub/mul/div/mod/pow(variable, valueA, valueB) /* 파라미터가 두개일 경우, sub(A, B)는 A=A-B 임. 3개일 경우 mul(A,B,C)는 A=B+C 임. B/C는 자동 변환되므로 get()을 사용할 필요 없음 */
  • inc(variable, byvalue, max, min), dec(variable, byvalue, max, min) /* 최초 min. 한번실행될 때마다 byvalue만큼 증가. max에 도달하면 다시 min으로 설정. byvalue 디폴트 1. */
  • Math.PI, Math.abs(var), acos, asin, atan, atan2, ceil, cos, exp, floor, log, max, min, pow, round, sin, sqrt, tan
  • roundval(variable, decimalplaces*) /* 반올림. */
  • txtadd(destination, txt1, txt2*, txt3*,...)  /* dest와 txt1 만 있을 경우에는 dest= dest+txt1, 여러개일 경우, dest=txt1+txt2+... 반드시 get()을 사용해야 함 */
  • subtxt(dstvar, srcvar, startpos, len) /* 일부를 추출 */
  • indexoftxt(dstvar, srctxt, searchtxt, startindex*)  /* startindex는 처음 찾기 시작하는 위치 */
  • tween(variable, destinationvalue, time*, tweentype*, donecall*, updatecall*) /* tween 액션은 시간을 제어하는 애니메이션에 사용됨. 변수의 현재값을 목표값으로 동적으로 변경시킴. 주어진 시간(디폴트 0.5)동안. tweentype 매개변수에는 내삽의 형태를 지정. tween 이 완료되고 변수의 값이 목표값에 도달하면 donecall이 수행됨. variable:변하는 변수, time: 목표값에 도달하는 시간. distance를 사용하면 짧은 거리에는 짧은시간, 긴거리에는 긴사간이 되도록 할 수 있음. tweentype: 내삽유형(디폴트 easeOutQuad), donecall:목표값에 도달한 뒤 수행되는 액션. "WAIT"로 지정하면 사용자의 간섭필요. updatecall:값이 변경될 때마다 수행되는 액션. */
  • stoptween(variable,...) tween action에 사용되는 변수(variable)을 중지시킴.
  • loadpano(xmlpath, vars*, flags*, blend*), loadxml(xmlstring, vars*, flags*, blend*), loadscene(scenename, vars*, flags*, blend*) /* 새로운 파노라마를 불러들임. keep="true"로 지정된 플러그인, 핫스팟, 이벤트, 렌즈플레어만 보존됨. loadpano 뒤에 추가적인 action 이 있으면, onstart 이벤트가 실행되지 않음. xmlpath:불러들일 파노라마의 경로. 지정하지 않으면 %FIRSTXML%이 기본으로 사용됨. xmlstring:수행될 xml. scenename:불러들일 <scene>의 이름. blend:NOBLEND/BLEND(n) n초에 걸쳐 블렌딩/ZOOMBLEND(n,z) n초동안 z배율로 */
  • reloadpano() /*"image.sphere.url"이나 "image.type" 같은 변수는 동적으로 변경시킬 수 없다. 이들 변수는 처음 로드할 때만 파싱된다. 따라서 변경된 이미지 변수는 다시불러와야 알 수 있다. */
  • openurl(url, target*) 이 기능을 오프라인에서 사용하려면  Flashplayer의 External Interface를 사용할 수 있어야 함. target:_blank,_self,_parent,_top */
  • lookat(atH, atV, fov*) 
  • lookto(toH, toV, fov*, motiontype*, shortestway*, nonblocking*, donecall*) looktohotspot(hotspotname, fov*, motiontype*, shortestway*) moveto(toH, toV, motiontyep*) zoomto(fov, motiontype*) /* 뷰를 현재위치에서 주어진 위치로 이동시킴. 시행되는 동안, 유저인터페이스및 다른 액션이 정지됨. 가능하게하려면 oninterrupt 액션을 사용해야 함. motiontype: linear(speed)/smooth(accel, break, maxspeed)/tween(tweentype, time), shortestway="true"이면 최단경로로 이동. 
  • adjusthlookat(desthlookat) ??
  • wait(parameter) /* parameter:숫자이면 초. LOAD, BLEND. 그동안 어떤함수도 유저인터랙션도 안됨. oninterrupt로 가능 */
  • freezeview(state) /* state="true"이면 현재 파노 view가 정지됨. 정지되면 렌더링성능이 좋아짐. 
  • oninterrupt(actions) /* user interface를 중지시키는 액션(lookto, looktohotspot, moveto, zoomto, wait/tween에서 donecall로 WAIT을 지정했을때) 시행 전에 설정. 이러한 액션중에 사용자가 마우스를 클릭하는 등을 시행하면 여기에 지정된 action이 수행됨. action에 "break"를 지정하면 중지되고 빠져나옴. */
  • screentosphere(x,y,h,v) spheretoscreen(h,v,x,y) /* x,y:스크린좌표(좌상단0,0), h,v:구면좌표(360/180도) 모든 매개변수로 변수를 사용해야 함. 상수를 쓰면 안됨) */
  • showtext(text,textstyle*) /*한번에 하나씩만. 새로 부르면 원래것은 사라짐. txt:표시될 문자열. html코드 사용가능. 단 <>는 []로 대체. 예:[b]bold text[/b], 다음줄은 [br]. txtstyle: xml text style */
  • updateoject(updateall*, updatefov*) /* 파노 객체의 내부 3D 모델을 재구축. display.details, display.tessmode 를 바꾼 뒤 반드시 실행시켜야 함. image.hfov, image.vfov, image.voffset을 대화식으로 변경시켰다면, updatefov="true"로 매개변수를 설정하여 실행시켜야 함. 
  • updatescreen() 파노라마 뷰를 강제로 다시 그림. 
  • invalidatescreen() 강제로 다시그림. 렌더링 품질이 movequality/movequality10으로 바뀜. 
  • addlayer(name), addplugin(name), addhotspot(name), addlensflare(name, ath*, atv*) 동적으로 생성
  • removelayer(name), removeplugin(name)...
  • js(jsfunction(parameters*)) /* global javascript 호출. 오프라인으로 실행할 경우 Flashplayer의 External Interface가 있어야 함. */
  • fscommand(...) /* standalone Flashplayer를 제어하기 위한 명령 */
  • showlog(state*) /* state="true"이면 로그가 표시됨 */
  • trace(...) /* 변수의 내용을 로그에 표시 */
  • error(errormessage)




    Posted by 푸른하늘 푸른하늘이

    댓글을 달아 주세요

    사진/360 파노라마2012. 9. 6. 21:32

    얼마전부터 우리 딸래미 작품 전시회에서 촬영한 360*180 파노라마를 사용하여 VR 투어를 만들고 있습니다. 


    가장 간단하게 만드는 방법은 그냥 파노라마 사진들을 끌어서 MAKE VTOUR (NORMAL) droplet.bat 위에 떨어뜨리기만 하면 됩니다. (krpano 도구는 다운로드사이트에서 받을 수 있습니다. 데모버전으로만 사용할 경우 화면 가운데 krpano라는 마크가 뜨고 온라인으로는 사용할 수 없지만, 모든 기능은 테스트해볼 수 있습니다.)


    그러면 아래 그림과 같이 DOS cmd 창이 나타나고 뭔가를 잔뜩 만듭니다. 그냥 놓아두면 파노라마가 들어있는 폴더에 vtour라는 폴더가 하나가 생성됩니다. 



    이렇게 만들어진 폴더 속에 여러가지 파일들이 들어있는데, 이것들이 기본적인 VR 투어입니다. 아래는 이것들을 krpano Protect Tool 을 사용하여 하나의 플래시 파일로 만든 뒤 여기에 첨부파일로 올린 것입니다. (사용법은 여기를 참고하세요.)



    사실 이 정도만 해도 정말 쓸만합니다. 창문모양의 아이콘을 누르면 파노라마들의 썸네일 이미지를 볼 수 있고, 이것을 클릭하면 해당 파노라마로 이동됩니다. 또 맨 오른쪽 또는 왼쪽에 있는 삼각형2개가 있는 버튼을 눌러도 다른 파노라마를 볼 수 있고요. 물론 기본적인 확대/축소/이동은 하단에 있는 버튼을 이용해도 되고 마우스만으로도 제어할 수 있습니다.


    그런데... 사실 좀 허전합니다. 파노라마가 서로 연결되어 있다는 느낌이 전혀 안듭니다. 그래서 필요한 게 핫스팟(hotspot)입니다. 화살표를 눌러주면 그 방향으로 이동하여, 이동된 장소에서 촬영한 사진이 나타나는 효과를 만들어, 여러개의 파노라마를 서로 유기적으로 연결시켜 주는 것입니다.


    이번 krpano 1.0.8.15 에서는 VR Tour 에디터가 추가되었습니다. tour.html이 있는 폴더에 들어 있는 tour_editor.html을 실행시키면 아래와 같은 화면이 나오는데, 이것을 사용해 핫스팟(hotspot)을 추가할 수 있습니다. 사용하는 방법은 그냥 "add hotspot"을 누르고, 화살표를 원하는 곳에 이동시킨 다음 "done"을 누르고 링크시킬 파노라마만 지정하면 됩니다. 



    아래가 이렇게 만들어진 파일입니다. 사실 위에 있는 VR과 이 VR은 단순히 xml 파일이 아주 약간 다른 것 뿐인데 이렇게 새로 올리는 건 공간 낭비에 불과합니다만... 직접 테스트를 해보려면 어쩔 수가 없네요...



    이렇게 만들고 나니, 욕심이 조금 더 났습니다. 여기에서 보이는 그림들을 좀 더 깨끗하게 볼 수 있도록 하면 좋겠다... 하는 겁니다. 그래서 일단, 가장 쉬운 방법으로 그림에 핫스팟을 만들고, 그것을 클릭하면 그림이 들어 있는 블로그로 연결되도록 하였습니다.


    우선 위에서 사용한 것과 동일한 방법으로 핫스팟을 만듭니다. 그다음, 그 핫스팟을 아래와 같이 변경하였습니다. 핫스팟의 모양을 바꿔주고, 클릭했을 때 동작방법을 바꿔준 겁니다. 이걸 해당 <scene> 속에 넣어주면 지정된 위치(ath="139.314" atv="-0.496")에 동그라미가 그려지는 애니메이션 아이콘(hotspot_ani_black)이 나타나고, 클릭하면 정해진 URL이 새창으로 뜨게 됩니다.


    <hotspot name="snowman" url="skin/hotspot_ani_black.swf" alturl="skin/hotspot_ani_black.gif" scale="0.4" ath="139.314" atv="-0.496" onclick="openurl(http://dkrkrnfma.blog.me/30138550190,_blank);" />



    그런데... 이것만으로는 만족이 안되더군요. 클릭했을 때 별도의 창이 열리는 것보다 이 VR Tour 내에서 그림이 뜨면 훨씬 좋겠다 싶었죠. 물론 이에 관한 예제들이 엄청 많습니다. 그래서 그 예제들중 하나를 뒤져서 아래처럼 바꿨습니다.


    이렇게 만드는 건 좀 더 복잡합니다. krpano에서 제공하는 <action>에 대해 이해가 필요하기 때문입니다. krpano 예제에서 이걸 구현한 부분을 찾아보면, 다음과 같이 3가지 액션이 정의되어 있습니다.

    <action name="calc_flyout_size">

    <action name="flyin">

    <action name="flyout">

    맨 위에 있는 액션은 현재 화면의 크기를 고려하여 적절한 그림 크기를 결정하는 루틴이고, 두번째는 핫스팟을 눌렀을 때 그림이 뜨도록 하는 것, 마지막은 그림을 클릭하면 사라지도록하는 루틴입니다. 이 액션들은 전혀 수정을 하지 않고 그래로 사용했습니다. 실력도 안될뿐 더러 구지 새로 만들 필요가 없어서입니다.


    핫스팟은 아래처럼 2가지로 구성합니다. 첫번쨰 핫스팟은 위에서 만들었던 핫스팟가 동일한데, 클릭했을 때 동작만 flyin으로 바꾼 것입니다. 두번째 핫스팟은 그림자체로서 클릭을 하면 그림이 사라지게 되는 액션이 포함되어 있습니다.

    <hotspot name="spot_snowman" url="skin/hotspot_ani_black.swf" alturl="skin/hotspot_ani_black.gif" scale="0.4" ath="139.314" atv="-0.496" onclick="flyin(snowman);" />

    <hotspot name="snowman" url="pic/snowman.jpg"
    ath="139.314" atv="-0.496"
    onclick="flyout(snowman);"
    style="flyin_out"
    />


    요기까지만 하면 딱 적당했을텐데.... 한가지가 더 욕심이 생겼습니다. 처음 파노라마를 불러들일때 "Little Planet"이라고하는 방식에서 일반 방식으로 바꾸어주는 액션입니다. 이렇게 하면 이 파일이 단순한 그림이 아니라, 360도 파노라마라는 것. 그리고 동적으로 작동된다는 것을 알려줄 수 있기 때문에 꼭 넣어주고 싶었습니다. 


    아래가 리틀플래닛 방식으로 파노라마를 표시한 겁니다. 꼭 어린왕자가 살고 있는 소행성 B612를 보는 듯한 느낌이 들죠? 원본은 여기를 보시면 되는데, 구글에서 "Little Planet panorama"라고 검색하면 이 이외에도 아주 많은 사진들을 볼 수 있습니다.



    어쨌든... 아래처럼 만드는 데 성공은 했습니다만, 위에서 적용한 여러가지 효과와는 달리 이것은 아주 까다로웠습니다. 이렇게 하는데 영향을 미치는 부분이 많았기 때문입니다.


    제일 먼저 필요한 것은 아래와 같은 정의입니다. 여기에서 정한 뷰를 적용하면 360*180파노라마를 "리틀플래닛 방식으로 보여주게 됩니다. 그리고 그 바로 아래에 있는 normalview action은 일반적인 화면으로 되돌려주는 기능을 하고요. 그러니까, xml 파일 시작부분 이 두가지를 복사해 넣고, scene이 로드된 직후에 normalview() 액션을 수행하도록해주면 간단하게 해결될 것이라고 생각했습니다.


    <view stereographic="true"

      fisheye="1.0"

    fovtype="MFOV" 

      fov="150.0"

      fovmax="179.0"

      hlookat="180.0"

      vlookat="90.0"

      />

    <action name="normalview">

    tween(view.fisheye, 0.0, 3, easeInOutQuad);

    tween(view.fov,     87.103, 3, easeInOutQuad );

    tween(view.hlookat, 16.730, 3, easeInOutQuad );

    tween(view.vlookat, 3.859,   3, easeInOutQuad, WAIT);

    restore_scene();

    </action>


    그러나, 이상과 같이 MAKE VTOUR 도플릿을 사용하여 투어를 제작한 다음, tour Editor를 사용해서 편집하면 이런 효과가 나타나지 않게 되는 겁니다. 제일 문제는 tour Editor에서 어떤 scene의 시작위치를 지정하면 아래와 같은 부분이 추가되는데, 이부분이 정의되어 있으면 "Little Planet" 정의한 부분이 아니라, 아래와 같이 정의된 부분에서 시작되는 것입니다. 


    <view hlookat="16.730" vlookat="3.850" fovtype="MFOV" fov="87.103" maxpixelzoom="2.0" fovmin="70" fovmax="140" limitview="auto" />


    그래서 이부분을 삭제시켜버리고나서, 다시 이부분의 효과를 그대로 유지하려고 하니, 여러가지 시행착오가 필요했습니다. 그 부분을 자세히 설명드릴 순 없고...  혹시 나중에 필요하시면 개인적으로 연락하시길.


    아래는 최종결과입니다. 바로 아래에 있는 코드를 사용하면 다른 게시판이나 블로그에도 embed 시킬 수 있을 겁니다. 

    민, 푸른하늘

    <embed width="580" height="460" src="https://t1.daumcdn.net/cfile/tistory/1754B045504E02B606?original" quality="high" allowscriptaccess="always" allowfullscreen="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" allownetworking="internal">




    Posted by 푸른하늘 푸른하늘이

    댓글을 달아 주세요

    1. 이길재

      박사님 자료 덕분에 공부하기가 수월해서 감사드립니다.
      1. 리틀플렌 적용 후 항상 그 이미지는 리틀플렌으로 구동을 하네요.
      2. 이미지 클릭시 확대돼는 부분을 자세 알려주실 수 있으신지요?

      통체로 파일을 주시면 더욱 감사하겠습니다..

      2012.09.08 15:56 [ ADDR : EDIT/ DEL : REPLY ]
      • 파노라마 제작이라면 딱 어떻게 하라고 말씀드릴 수 있는데, VR 투어는 여러가지 고려사항도 많고 프로래밍이 필요한 부분이라서 여러가지로 테스트해봐야 합니다. 그래서 더이상 자세히 설명해 드리긴 곤란합니다.
        파일을 달라고 하시는 건 좀 그렇네요. 드릴 수 있다면 아얘 올려뒀겠죠.

        2012.09.09 13:51 신고 [ ADDR : EDIT/ DEL ]
    2. 이길재

      제 xml코드와 무슨차이인지 비교하려한건데
      그냥 열심히 반복해야겠네요.^^


      2012.09.12 10:34 [ ADDR : EDIT/ DEL : REPLY ]
    3. 이길재

      hotspot_ani_black.swf << 요 파일은 찾아도 안보입니다..
      어디에서 받으야 하는건가요?

      2012.10.14 21:56 [ ADDR : EDIT/ DEL : REPLY ]
    4. 이경춘

      아 힘드네요..정말 멋지십니다. 하나하나 따라하는것 자체가 막히니 어디서부터 공부를 해야할지..아..힘들다

      2012.12.28 18:41 [ ADDR : EDIT/ DEL : REPLY ]
    5. 유창열

      투어형에서 리틒플래닛 효과에대해 궁굼했는데 박사님 덕분에 풀렸네요..
      감사드립니다.

      한가지 리틀플래닜효과 적용시 아래
      <events onloadcomplete="delayedcall(1.0, normalview());" />
      를 첨부하시면 회전 속도가 느려지지 않는것 같네요...

      2013.11.20 19:49 [ ADDR : EDIT/ DEL : REPLY ]
    6. min

      안녕하세요~ vr에 관심이 많은 학생입니다!
      질문하나 할 수 있을까요?
      현재 krpano 데모버전으로 360도 vr 어플을 만들고 있습니다.
      그런데 사진이 24장 밖에 올라가지 않습니다...데모버전이라 그런걸까요?
      정식버전도 혹시 담을 수 있는 사진의 양이 제한되는지요...?

      2016.04.13 15:40 [ ADDR : EDIT/ DEL : REPLY ]

    사진/360 파노라마2012. 8. 29. 13:54
    krpano 도구는 여러가지 도구들의 집합입니다. 다양한 요소로 이루어져 있어 잘만 조합하면 원하는 것을 마음대로 바꿀 수 있지만, 그만큼 매우 까다롭습니다. 

    예전에 정리한 kmakemultires 도구는 주로 360*180 파노라마 영상을 처리하는 도구입니다. 즉, 이미지의 포맷을 바꾼다던지 (spherical <-> cubical 등) 이미지 피라미드로 구성한다던지, thumnail 이미지를 만든다던지, 영상의 크기를 바꾸고 압축을 하는 등 이미지를 처리하는 거의 모든 기능이 들어있다고 할 수 있습니다. 

    이번에 정리한 krpano XML 파일은 주로 뷰어의 형태를 다룹니다. 즉 kmakemutires 도구에서 처리된 영상을 읽어들여서 기본적인 형태로 보여준 뒤, layer(plugin)/hotspot 등을 사용하여 버튼/아이콘 등을 배치하여 기능적으로 쉽게 사용할 수 있도록 해주는 것입니다. 실제로 버튼을 누르거나 마우스를 움직이던가 등등의 이벤트가 발생할 때 어떻게 동작할 것인가는 <action> 혹은 function()에 지정하는데, 다음번에 정리할 예정입니다.

    참고로, 이글은 제가 생각나는대로 정리하기 위한 목적이기 때문에 읽는 분들에게는 크게 도움이 안될 겁니다. 부디 그냥 그러려니 하고 pass 하시길.

    ====

    krpano 도구는 간단한 XML 파일을 사용하여 파노라마 설정을 저장. 이 파일은 일반 텍스트 에디터로 생성/편집할 수 있지만, XML 규칙을 반드시 따라야 함.


    기본 XML 규칙 : http://www.w3schools.com/xml/xml_syntax.asp


    이 문서에 관하여


    krpano XML 문법 및 요소, 속성 및 속성값. 그리고 이들을 동적 krpano 변수에 매칭시키는 방법. 일반/고급 부분. 읽기 좋게 하려는 목적. 고급 부분은 감춰둠. 오른쪽위 버튼을 누르면 볼수 있음. 


    XML 태그의 구조


    <krpano> - root 노드. 

        <include>

        <preview>

        <image>

        <view>

        <autorotate>

        <plugin>

        <layer>

        <hotspot>

        <events>

        <action>

        <scene>

    </krpano>


    <krpano> - root 노드. 다른 태그는 이 내부에서 정의되어야 하며, 대부분 반복 가능. 옵션. 순서무관. krpano 내부에 krpano 를 정의할 수도 있음(krpano scope에 세팅을 설정하기 위함) 여러번 선언되면 맨 마지막이 덮어씀.


    참고 : 일부 노드와 속성은 특별하게 취급됨

    • name attribute : xml 노드에 name이 있으면, 이 노드는 배열의 요소로 해석됨. 즉, 그 xml 노드가 또 있으며, 각 요소는 이름으로 구분된다는 뜻. 배열의 이름이 xml노드의 이름이 됨. 이름은 영문자로 시작해야함. 숫자로 시작하면 안됨. case insensitive.
    • device attribute : xml 노드가 사용될 기기. all/flash/html5/mobile/tablet/iphone 등. 해당되지 않으면 통째로 무시됨.  | OR, + AND, !NOT 으로 묶을 수 있음.
    • include node : 다른 xml 파일을 읽어들임. parsing 작업 전에 모든 include 노드를 대체함. 이 과정에서 url은 조정이됨. 아래 참조.
    • <action>/<data>/<scene> xml 파싱동안에는 무시되고 content 변수에 별도 저장됨. 
    • url attribute : xml 파일의 위치에 대한 상대경로로 인식됨. included xml의 url도 마찬가지임.


    %FIRSTXML% - 최초에 불려진 xml 의 경로

    %CURRENTXML% - 현재 xml 파일의 경로 (included xml의 path가 아님??)

    %SWFPATH% - 

    %HTMLPATH% - 

    %BASEDIR% - Use the basedir path. ?? - default 는 %FIRSTXML%

    %$VARIABLE% - 'VARIABLE'의 값. 현재의 xml 이나 scene이 로드되기전 정의되어있어야 함.


    XML 노드/속성/속성값/변수


    • <krpano version="1.0.8.15" onstart=""> ... </krpano>: onstart는 파노라마 뷰잉 시작때 적용할 action/function.
    • <include url="~~.xml" /> 불러오는 파일로 대체됨. url은 조정됨
    • <preview url="~~.jpg" /> 되도록이면 크기가 적은파일. kmakepreview 로 제작가능. 일부만 사용할 경우에는 hfov/vfov/voffset 을 사용하여 지정.
    • <image>  <cube url="pano_%s.jpg" /> </image> 여기에서 %s는 l,f,r,b,u,d 을 의미함.

        <image> <cubestrip url="cubestrip.jpg"> </image>

        <image> <sphere url="pano.jpg"> </image>

        <image> <cylinder url="pano.jpg"> </image>

        <image type="cylinder" hfov="1.0"> <cylinder url="image.jpg"> </image> : FLAT 사진. 반드시 1.0

        <image> <qtvr url="quicktime.mov"> </image> QuickTime Movie

        <plugin name="video" url="videoplayer.swf" videourl="..." /> : 비디오일 경우 정의

             <image> <cylinder url="plugin:video" /> </image>

        full spherical 이 아닐 경우, hfov=360/vfov/voffset 사용하여 지정

    이미지피라미드를 구성할 때 (Cube, multires)

    <image type="CUBE"
           multires="true"   /*여기가 true이면, level이 여러개 있어야 함 */
           multiresthreshold="0.025" /* 어떤 레벨에서 다음 레벨로 넘어갈때의 임계치 */
           progressive="true" /* 저해상도부터 고해상도로 차례로 로드.
           tilesize="..."         /* 타일의 크기*/
           baseindex="1"      /* 타일 인덱스 시작번호 */
           frames="1"           /* 프레임의 수, 동일한 장면에 여러개의 프레임 가능*/
           frame="1"             /* 현재 프레임 */
           prealign=""           /* 회전인자 잘못된 것 수정 */
     >
      <level tiledimagewidth="..."  /*현재 레벨의 이미지 크기 */
             tiledimageheight="..."
             details="" 
             download="auto" decode="auto"  /* 현재 레벨 전체를 미리 다운로드 받아둘까? */
             aspreview="false"     /* 이 레벨을 프리뷰로 사용. true 이면 이레벨 전체가 다운로드됨 */
       >
        <cube url="pano_%s_%v_%u.jpg" />
      </level>
      <level ...>
        ...
      </level>
      ...
    </image>


    • <view hlookat="0.0" vlookat="0.0"  /* -180부터 180. -90부터 90. */

              fov="90.0"                         /* 현재의 fov */

              fovmin="1.0" fovmax="179.0"   /* 어디까지 확대/축소 가능한가 */

              maxpixelzoom="" />          /* fovmin 대신 사용가능. 1.0이면 픽셀 1:1임 */

    • <area ....> 파노라마가 표시될 윈도의 범위. align 모드(크기와 위치)와 border 모드(경계선의 두께)가 있음. 참고 : 모든 layer/plugin 이 이 범위내에 그려짐. 바깥쪽에도 그리고 싶다면 layer/plugin 의 속성 parent="STAGE"로 지정해야함.
    • <display> 렌더링 속도/성능과 관련된 설정. Flash 모드와 HTML5모드.
    • <control> 마우스/키보드 세팅
    • <cursors> 마우스 커서의 모양
    • <autorotate enable="false"   

                     waittime="1.5"       /* 대기시간(초) */

                     speed="10.0" />   /* 회전속도 (도/초). 음수일때는 왼쪽으로 회전 */

    • <layer>/<plugin> 은 사진, 로고, 버튼, 동적플러그인(krpano plugin) 등을 포함시킬 때 사용함. 여러개의 레이어/플러그인을 조합/적층 시킬 때에는 parent 설정을 사용하는 방법과, child xml 요소로서 children <layer>/<plugin> 요소를 정의하는 방법이 있음?? 이 경우, parent와 keep 은 자동적으로 parent 요소로 지정됨. <layer>와 <plugin>은 이름만 다를 뿐, 내부적으로는 완전히 동일.
    <plugin name="..."   
            type="image"   /* image 또는 container. */
            url="..."          /* SWF, JPG, PNG, GIF */
            keep="false"   /* 새로운 pano 부를 때 유지시킬 것인지? */
            devices="all"
            visible="true"  /* 보이게 할 것인지. 동적으로 바꿀 수 있을 듯 */
            enabled="true"   /* 마우스 이벤트를 받을 것인지. false이면 아래로 통과 */
            handcursor="true"   /* 플러그인 위에 있을 때 핸드커서를 보이게 할 것인지 */
            zorder=""       /* 순서 html5에서는 0-100 */
            style=""     /* 공통스타일 사용. <style name="s1" alpha="0.5", scale="0.5> ... <plugin name="p1" style="s1"> <plugin name="p2" style="s1">...
            align=""   /* 스크린기준위치 lefttop, left, leftbottom, top, center, bottom, righttop, right, rightbottom */
            edge=""  /* plugin 이미지의 기준위치. */
            x=""  y=""    rotate="" /* 기준 위치간의 거리. %도 가능 */
            width=""   height=""     scale="1.0"  /* 지정하지 않으면 원본크기. height="prop" : 비율유지 */
            alpha="1.0"   /* 투명도. 0.0=완전투명. 1.0 불투명 */
            crop=""   onovercrop=""    ondowncrop=""  /*  crop="x-pos|y-pos|widht|height" */
            bgcolor="0x000000"        bgalpha="0.0"        bgcapture="false"
            parent=""       /* 현재의 plugin을 다른 plugin의 자식으로 지정함. 이렇게 되면 parent 요소를 기준으로 정렬됨. "STAGE"로 지정하면 현재 plugin이 파노라마를 벗어난 곳에도 나타남 */
            onover=""  onhover=""   onout=""   onclick=""     ondown=""   onup=""   onloaded="" /* function 또는 action */
            />

    • <hotspot> 파노라마 영역중 마우스에 반응하는 지역. 다른 파노라마 불러오기, url로 연결하기, 뷰 바꾸기 등등 가능. polygonal/image 등 두가지가 있음. url을 지정하면 image, url 없고 좌표가 있으면 polygonal.
        <hotspot name="..."     url="..."     alturl="..."      keep="false"      devices="all"      visible="true"    
             enabled="true"        handcursor="true"         zorder=""         style=""
             ath="0.0" atv="0.0"  edge="center"  /* 핫스팟의 위치 (각도) 이 위치에 edge를 기준으로 정렬됨 */
             zoom="false"    /* 이미지 확대/축소에 따라 핫스팟 크기도 변하는지? */
             distorted="false" rx="0.0" ry="0.0" rz="0.0" 
             width="" height=""     scale="1.0"    rotate="0.0"    alpha="1.0"
             onover=""  onhover=""   onout=""   onclick=""     ondown=""   onup=""   onloaded="" 
             />

        <hotspot name="..."     keep="false"      visible="true"      enabled="true"      handcursor="true"      

             zorder=""     style=""     alpha="1.0"

             fillcolor="0xFFFFFF" fillcolorhover="0xFFFFFF" 

             fillalpha="0.0" fillalphahover="0.1"

             borderwidth="0.0" borderwidthhover="4.0"

             bordercolor="0xFFFFFF" bordercolorhover="0xFFFFFF"

             borderalpha="0.0" borderalphahover="0.8"

             onover=""  onhover=""   onout=""   onclick=""     ondown=""   onup="" 

        >

        <point ath="..." atv="..." />

        <point ath="..." atv="..." />

        <point ath="..." atv="..." />

        ...

        </hotspot>

    • <style name="" .....> /* 핫스팟이나 플러그인에서 사용되는 모든 요소를 정의 가능 */
    • <events> 어떤 특정 이벤트발생시 action / function 수행. name=""을 부여하지 않으면 global event가 된다. global event 는 단 하나. 따라서 또다시 정의하면 예전 정의는 사라짐. 새로운 xml, scene을 부르더라도 남아있음. name을 부여하면 독립적인 event가 됨. global event 다음에 호출됨. named event를 사용하면 다른 플러그인이나 xml코드와 간섭받지 않고 수행가능.??
        <events onenterfullscreen="",    onexitfullscreen=""   onxmlcomplete=""   onpreviewcomplete=""
            onloadcomplete=""   onnewpano=""   onremovepano=""   onloaderror=""   onkeydown=""
            onkeyup=""   onclick=""   onmousedown=""   onmouseup=""   onmousewheel=""   onidle=""
            onviewchange=""   onviewchanged=""    onresize=""
            />
    • <action> krpano action 정의. action은 이벤트에서 호출되거나, 다른 actions 이나 외부(Javascript/Plugins)에서 call()하면 부를 수 있음. plugin/hotspot 이벤트에서도 호출. <action> 내에 action()을 여러개 호출 가능. 매개변수 전달 가능. 문자열로 전달. placeholder가 대체됨. %0%은 함수명, %1%은 첫번째 파라미터 등
       <action name="...">    action1(); action2();  ... </action>
    • <scene>을 이용하면 하나의 xml 파일속에 여러장의 파노라마를 정의할 수 있음. <scene> 속에는 full krpano xml tree를 저장할 수 있음. 외부 xml 파일을 embed하는 것이라고 생각할 수 있음. loadscene()이 호출될 때야 비로서 파싱됨. 

        <scene name="..." onstart="">... </scene>


    Posted by 푸른하늘 푸른하늘이

    댓글을 달아 주세요

    사진/360 파노라마2012. 8. 29. 01:04

    우리 딸래미가 작품전시회를 하고 있습니다. 장소는 신사동 가로수길 가운데쯤에 있는 라코스테 매장 지하고요, 갤러리와 카페를 겸한 곳입니다. 다음 로드뷰에서 확인하시려면 여기

    갤러리 명칭은 Conni Space 인데, 카페이름은 잘 모르겠습니다. 한 장소인데 두가지 이름을 쓰더군요.

    그림 스타일이 제가 보기에는 좀 난해합니다. 약간 멀리서보면 예쁘게만 보이는데, 자세히 살펴보면 괴기스러운 부분도 많고... 제가 그림을 모르니까 더 이상의 언급은 하지 못할 것 같습니다.

    머... 이달말까지니까... 이제 이틀 남았네요. 원래 8월초부터 전시를 했었는데 중간에 주인이 바뀌는 바람에 내장공사를 다시하고 등등 여러가지 문제때문에 저도 마지막 주말에나 가볼 수 있었습니다.



    아래에 삽입한 건 krpano 도구를 사용해 투어를 만든 뒤, 모두 모아 하나의 플래시 파일로 만든 것입니다. 이번 버전에서는 간단하나마 핫스팟을 넣어 이동도 가능하게 만들고, 편집도 가능하게 만들어서 투어 만들기가 조금 편해졌습니다.


    다만, 티스토리에서는 최대 10MB까지만 올릴 수 있기 때문에 파일 사이즈를 줄이기 위해서 압축률을 높였더니 약간 부자연스러운 부분이 보이는 게 좀 그렇네요. 참고로 티스토리에 플래시파일을 올린 뒤, 그 파일의 절대주소를 알아내어 embed 코드를 만드는 방법은 HDVR의 글을 참고하시기 바랍니다. 



    마지막으로 아래는 이렇게 만들어진 embed 코드입니다. 참고하시길.


    민, 푸른하늘


    <p style="TEXT-ALIGN: center"><embed width="100%" height="500" src="https://t1.daumcdn.net/cfile/tistory/126EF550503F74F81F?original" quality="high" allowscriptaccess="always" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></p>



    Posted by 푸른하늘 푸른하늘이

    댓글을 달아 주세요

    1. 너무너무 깔끔해요^^
      저도 맛집 내부 촬영해서 보여주고 싶은데
      파노라마 기본을 어디서부터 시작해야하는지
      답답합니다

      2013.10.20 06:06 [ ADDR : EDIT/ DEL : REPLY ]

    사진/360 파노라마2012. 8. 22. 15:19

    krpano 뷰어를 HTML 문서에 삽입하려면 반드시 swfkrpano.js 를 반드시 사용해야 한다. 이 자바스크립트를 사용하면 자체적으로 여러가지 사항을  점검하고, 필요시 자동적으로 설정하게 된다..  예를 들면 장비/시스템(HTML5 or Flash)을 한다거나, 여러가지 시스템상의 한계(마우스 휠 사용제한 등)를 자동적으로 해결해 주는 등의 역할을 수행한다. 즉, 이 플러그인을 사용하면 파노라마를 쉽고 빠르게 삽입할 수 있다.


    swfkrpano.js 의 역할


    • Javascript를 사용가능한지 체크
    • 적절한 버전의 플래시플레이어가 설치되어 있는지 체크
    • HTML5 를 만족하는 브라우저/시스템인지 자동 체크하고, 필요시 자동적으로 HTML5 뷰어를 불러옴.
    • 다른 모든 krpano Javascript를 모두 삽입한 하나의 Javascript를 생성할 수 있음. (MAKE PANO, MAKE VTOUR 드롭릿을 사용할때 embedlicenses=true로 설정하면(default) 자동적으로 해결됨)
    • Mac OSX에서 마우스 휠을 사용하여 확대/축소 가능
    • 페이지 내에서 휠을 사용하여 확대/축소할 때 페이지가 스크롤되지 않도록 막아줌
    • wmode=transparent/opaque 로 설정할 때 발생하는 여러가지 제한 사항을 수정해줌
    • 플래시플레이어에서 Fullscreen 사용을 활성화시켜줌
    • 삽입 코드가 간단함
    • 파라미터를 통해 추가적인 기능을 구현할 수 있음

    스크립트 삽입


    이 삽입 스크립트(swfkrpano.js)는 삽입하려는 페이지 어딘가는 반드시 포함시켜야 한다. <head> 섹션에 넣는 것이 바람직. 다음 코드를 입력하면 됨.
    <script src="swfkrpano.js"></script>
    단 하나의 모든 것을 포함한 .js 파일로 만들었을 경우에는 바로 그 파일을 삽입하면 된다.
    <script src="tour.js"></script>

    swfkrpano.js 스크립트는 필요시 자동적으로 krpano HTML5 스크립트인 krpanoiphone.js와 krpanoiphone.license.js 를 불러들이려고 시도한다. 이는 문제를 초래할 수도 있기 때문에 아얘 통 .js 또는 아래처럼 세개의 파일을 한꺼번에 불러들이는 것이 좋다. 단, 반드시 순서를 지켜야 함.
    <script src="swfkrpano.js"></script>
    <script src="krpanoiphone.license.js"></script>
    <script src="krpanoiphone.js"></script>
    **** 그런데 krpanoiphone.js, krpanoiphone.license.js 이 두개의 파일은 존재하지 않음. 아마도 swfkrpano.js 내에 포함되어 있을듯 함.

    뷰어 삽입


    먼저 <div> 요소를 아래와 같이 생성한다. 반드시 id를 지정해야 하고, css 스타일로 크기를 지정해야함.
    <div id="pano" style="width=100%;height=100%;"></div>
    그 다음 삽입코드가 들어 있는 <script> 요소를 생성한다. swfkrpano에는 두가지 삽입코드가 있는데, 형식만 다를 뿐 기능은 동일

    1. createPanoViewer()
    <script>
    var viewer = createPanoViewer({swf:"krpano.swf", target:"pano"});
    viewer.addVariable("xml", "pano.xml");
    viewer.embed();
    </script>
    createPanoViewer는 객체를 매개변수로 받아서 또다른 객체를 반환하는데, 이 객체는 매개변수를 추가/변경할 수 있다. 최종적으로 반환된 객체의 embed() 함수를 호출하면 삽입된다.

    2. embedpano() 
    <script>
    embedpano({swf:"krpano.swf", xml:"pano.xml", target:"pano"});
    </script>
    기본적으로  동일함. embedpano는 아무것도 반환하지 않고 직접 삽입. 짧은 버전이라고 할 수 있음.

    삽입 매개변수


    이 두가지 함수의 매개변수는 단하나의 JavaScript Object. 이 객체를 통해 parametername:value 형태로 매개변수를 전달함. target을 제외한 모든 변수는 옵션. 생략되면 default 값이 사용됨

    • swf:"krpano.swf" viewer swf 파일의 경로. html의 위치를 기준으로 한 상대경로
    • xml:"krpano.xml" pano xml 파일의 경로. 상대경로. default 는 swf 파일명.
    • target:"---pano div id---" viewer가 삽입될 <div> 요소의 id. 없으면 에러 발생
    • id:"krpanoSWFObject" viewer 객체의 id. Javascript:Interface 를 통해 viewer와 interface하는 객체임.
    • width="100%";height="100%" viewer 객체의 크기. 부모 html 요소를 100% 사용한다는 뜻
    • bgcolor:"#000000" 뷰어의 배경색
    • wmode:"window" Flashplayer wmode 설정. window:시스템지원/성능이 적당. opaque:html 객체가 Flashplayer를 overlap 할 수 있음. (속도느림) transparent:Flashplayer뒷쪽에 있는 html 요소가 보일 수 있고, overlap 도 될 수 있음 (더 느림) direct:최고성능. 하드웨어가속 사용. 호환성떨어짐. 오래된시스템/브라우저에서는 아주 느려짐. HTML5에서 wmode=transparent는 동일한 효과. overlap은 항상가능함.
    • html5:"auto" auto/prefer(whenpossible)/always/never
    • vars:{} krpano에  variable:value 매개변수 전달함. krpano 초기변수(startup variable) 설정. 여기에서 설정하면 xml에 지정된 변수를 덮어쓰는 효과
    • passQueryParameters:"false" html url의 모든 query parameter를 뷰어로 전달함. 아울러 html url에서 html5 설정을 뷰어로 전달. 즉, 링크만 바꿔도 html5 버전과 Flash 버전을 바꿔가며 실행시킬 수 있다는 뜻.
    • html5licenseload:"true" 라이선스파일이 내장되어 있지 않으면 자동적으로 불러옴. page-reload 발생하지 않음


    createPanoViewer 의 함수


    embedpano()와 매개변수가 동일함. 단, Java 객체를 반환하는데, 이를 통해서 또다른 변수를 설정/추가할 수 있음. H/W 체크를 하는 데 유용함. 맨 마지막으로 embed()함수을 호출해야 최종 삽입됨

    • viewer.addVariable(variable, value) krpano 초기변수 설정. 여기에서 설정하면 xml에 지정된 변수를 덮어쓰는 효과
    • viewer.addParam(parameter, value) Flash parameter(wmode 등) 설정
    • viewer.paaQueryParameter(); html의 모든 query parameter를 뷰어로 전달함.
    • viewer.useHTML5
    • var ret=viewer.isHTML5possible();
    • var ret=viewer.isFLASHpossible();
    • var ret=viewer.isDevice(devices); devices=iPhone,iPod,iPad,Android.  |을 사용하면 여러기기를 한꺼번에 체크가능 if(viewer.isDevice(iPhone|iPad)) ....;
    • viewer.embed(target);

    초기/삽입 변수(Startup/embed variable)


    뷰어를 삽입할 때 사용하는 특별한 변수. 이 변수들은 뷰어에게 직접 전달되는 변수가 아님. 삽입 그 자체때 특별한 의미가 있는 것임.


    • xml : 시작 xml 파일의 이름과 경로. xml 변수가 없으면 기본값이 사용됨. 기본값이란, swf와 동일한 이름의 xml 파일을 말함. 
    • license : 라이선스 파일이 포함되지 않았을 때, 기본적으로 swf 파일과 동일한 이름의 라이선스파일을 로드하려고 시도함. 라이선스 파일이 있다면 그 파일에 대한 경로를 지정
    • simulatedevice : 데스크탑에서 아이폰/안드로이드 테스트가능

    모바일 기기 사용시 주의사항


    아이폰, 아이패드, 안드로이드에서 최적의 결과를 얻으려면 다음사항을 준수할 것


    • 항상 HTML5 도큐먼트로 선언할 것 : <!DOCTYPE htmlL>
    • 1:1 픽셀 매칭이 되도록 자동 페이지/뷰포트 스케일링을 꺼야 함. <head> 에 다음과 같이 정의할 것.<meta name="viewport" content="target-densitydpi=device-dpi, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    • <iframe>은 절대 사용금지. 비율이 어긋나게 됨.


    예제


    • 가장 간단하게 : <script>embed({target:"pano"});</embed>, krpano.swf, krpano.xml 을 사용함. 
    • 약간 더 : <script>embed({swf:"pano.swf", xml:"pano.xml", target:"pano"});</embed>
    • html5을 우선하여 : <script>embed({swf:"pano.swf", xml:"pano.xml", target:"pano", html5:"prefer"});</embed>


    Posted by 푸른하늘 푸른하늘이

    댓글을 달아 주세요

    1. VRMania

      공부하시는 방법이 아주 어려운부분을 하셔서 그 후 시운걸 택하시나봐요..
      좋은 정보 감사합니다. 어렵네요//
      전 샘을을 본 후 하나하나 대입하는 방법을 하고 있는데, 더 멀게만 느켜지네요.

      2012.08.28 22:55 [ ADDR : EDIT/ DEL : REPLY ]
    2. VR초보자

      첫번째의 형식으로
      <div id="pano" style="width: 100%; height: 100%;">
      <script>
      var viewer = createPanoViewer({ swf : "krpano.swf", target : "pano" });

      if (viewer.isHTML5possible()) {
      viewer.addVariable("xml", "pano.xml");
      viewer.useHTML5();
      viewer.passQueryParameters();
      viewer.addParam("wmode", "transparent");
      } else {
      }
      viewer.embed();
      </script>
      </div>

      작성을 하였는데 ㅠ 데스크탑에서는 확인이 되어지나 스마트폰에서는 확인이 안되는 이유를 알수있을까요? ㅠ

      2013.12.20 15:56 [ ADDR : EDIT/ DEL : REPLY ]

    사진/360 파노라마2012. 8. 21. 23:54

    360*180 파노라마 제작방법에 대해서는 아주 오랜만에 글을 쓰는 것 같습니다. 사실 요즘 파노라마 촬영도 시들해진데다가, 이제까지 적어둔 글만으로도 기술적으로는 거의 모든 것을 다루었기 때문에 별로 새로운 글을 쓸 필요를 못느꼈기 때문입니다.


    그런데 요즘 새롭게 실내 파노라마를 자주 촬영하게 되면서, 360*180 파노라마 제작에서 가장 까다로운 부분은 바닥 처리를 나름대로 정형화시킬 수 있어 이 글을 쓰게 되었습니다.


    우선... 왜 실내 파노라마인가... 하는 것부텀. 실외에서 촬영할 때에는 바닥처리를 할 필요가 없는 경우가 많습니다. 아래와 같은 경우가 전형적인 사례입니다. 



    이 파노라마 아랫편에는 삼각대가 보입니다. 아래를 PanoTools로 변환한 결과는 아래와 같습니다. 예전에는 이런 바닥을 처리하기도 사실 만만치 않았습니다. 바닥을 촬영한 사진으로 대체하는 것도 쉽지 않고, 포토샵 도장툴로 복사해 넣는 것도 어딘가 모르게 자연스럽지 못했죠.



    하지만, 포토샵 CS5의 "알아서 채워주기 툴(Content aware fill)" 도구를 사용하면 이처럼 특징 없는 바닥을 처리하는 건 누워서 떡먹기가 되었습니다. 그냥 아래처럼 대충 삼각대가 포함될 정도로만 선택을 해 준 다음, Edit->Fill 을 선택하고 채우기 방법에서 Content-Aware를 선택해 주기만 하면 됩니다.



    아래는 그 결과입니다. 아무것도 건드리지 않고 명령만 수행한 건데, 주변의 잡음까지 고려해서 채워주는 것이 정말 놀랍습니다. 이 기능을 사용하다보면 결과물이 마음에 안드는 경우도 종종 발생하는데, 그렇더라도 그부분만 선택해서 다시 채워주는 과정을 몇번하다보면 왠만큼은 표시 안나게 처리가 됩니다.



    아래는 다시 PanoTools를 이용해 제작한 최종 파노라마입니다. 아주 감쪽 같죠. 이 기능이 나옴으로써 바닥처리 때문에 골치아픈 일은 많이 줄어들었습니다. 특히 자연풍광 사진을 찍을 때, 흙이나 돌 등과 같이 무질서한 바닥에서 촬영할 경우, 더이상 바닥처리때문에 머리가 아플일은 없어졌다고 할 수 있습니다.



    ====

    그런데, 실내 파노라마의 경우엔 이와 같은 경우는 거의 없습니다. 마루바닥처럼 일정한 무늬가 있거나, 대리석 바닥과 같이 반질반질한 경우 처리가 여간 까다로운 게 아닙니다. 게다가 어두운 경우가 많아서 카메라를 손으로 들고 촬영할 수 없는 경우도 많습니다. 


    또한, 제일 까다로운 게 조명 문제입니다. 실내에서는 여러가지 조명이 복합되어 있는 경우가 많습니다. 조명이 동일하다고 해도, 약간의 밝기 차이에도 색이 변하기 때문에 별도로 촬영한 바닥사진을 감쪽같이 대치하기는 아주 힘듧니다.


    어쨌든... 이런 문제를 해결하고, 바닥을 더욱더 잘 처리할 수 있는 방법을 소개드립니다. 이방법은 기본적으로 HDVR.org를 운영하시는 박제성님이 알려주신 방법을 사용해서 제 나름대로 변형시킨 것임을 알려드립니다.


    자세한 설명에 들어가기 전에 먼저 제 장비를 소개합니다. 사진기는 니콘 D300, 가장 중요한 로테이터는 큐빅판 M2입니다. 기타 장비들에 대해서는 여기를 참고하시기 바랍니다.



    1. 일단 일반 360*180 파노라마처럼 전후좌우를 모두 촬영합니다. 촬영하는 방법은 여러번에 걸쳐서 설명하였는데, 대략 360도 구면 파노라마 촬영법 총정리에서 설명한 내용과 거의 동일합니다. 더 간단히 요약한다면, 거리는 무한대로 고정시키고, 화이트발란스도 적당한 값으로 고정(Auto는 절대 안됨), 셔터스피드와 조리개는 매뉴얼 모드로 설정한 상태에서 적당한 밝기로 설정한 뒤, 각 방향으로 5장-9장 브라케팅 촬영하는 방식입니다. 그리고 가능하다면 RAW로 촬영합니다. 


    2. 그 다음 파노라마헤드를 거꾸로 뒤집은 상태에서 아래와 같이 화투를 적당히 배치하고 사진을 촬영합니다. (물론 사진촬영방법은 동일합니다.) 사실 화투말고 다른 적당한 게 있으면 좋겠는데... 저 정도의 크기에 딱딱한 재질, 그리고 각각 형태(그림)가 달라서 쉽게 구분될 수 있는 그런 게 있으면 좋겠다 싶습니다. 사진촬영하다가 화투를 깔면 이상하게들 생각해서요.


    이렇게 바닥촬영의 기준이 점은 최소 5점 이상이 필요합니다. 4점을 잡아야 필요한 파라미터를 구할 수 있습니다. 나머지 점은 체크용입니다. 그리고 가능한 한 기준점은 고르게 배치할수록 좋습니다. 가까운데 몰려있다면 아무리 기준점을 정확하게 잡아도 기준점이 없는 곳은 안맞을 가능성이 높습니다.



    2. 다음으로 화투는 그대로 둔 상태에서 벗어난 지점에서 아래와 같이 카메라를 약간 꺽어서 사진 중심에 삼각대가 놓였던 곳이 찍히도록 맞춘 뒤 촬영을 해줍니다. 이 사진이 나중에 삼각대 부분을 대치해 주게 됩니다. 


    이 단계에서 저처럼 촬영하지 않고 다른 방법도 있습니다만, 사진 품질은 (아마도) 이 방법이 제일 나을 듯 싶고, 간편하기도 제일 간편할 듯 합니다.



    3. 이 사진들을 모두 Adobe Bridge에 불러들여 검토를 합니다. 사진 촬영환경에 따라 같은 곳을 두번 촬영하기도 하고, 중간쯤 촬영하다가 처음부터 촬영하기도 하고, 한쪽 장면만 새로 촬영하는 경우도 있기 때문에, 필요없는 사진들은 제거하고 순서대로 정렬해줍니다.


    여기는 제가 아는 분 댁인데, 7단계로 브라케팅 촬영을 했네요. 캐논 DSLR은 2 stop 차이로 3단계만 촬영할 수 있는데, 니콘은 1 stop 차이로 총 9단계촬영까지 가능합니다. 저는 어쨌든 가능한한 5단계, 조명차이가 심하다 싶으면 7단계 정도로 촬영합니다. 혹시 노출이 잘못되었더라도 7단계라면 훨씬 대처하기 쉬운 점도 이유입니다. (요즘은 9단계 촬영하는 경우는 거의 없습니다.)



    4. 이렇게 검토가 끝나면 필요한 사진들만 선택해서 PTGUI에 끌어다 놓습니다. 대부분의 경우 위 사진에서 처럼 7단계 브라케팅 중 노출이 적당한 5단계만 사용합니다. 물론 맨 아래쪽에 있는 사진 (삼각대를 옮겨서 촬영한 사진)은 넣지 않습니다.


    그 다음 2.Align images 버튼을 누르고 "Bracketed Exposures"에서 그림처럼 선택한 상태로 "OK" 버튼을 눌러줍니다. 



    5. 잠시후 계산이 다 끝난 뒤 아래처럼 Panorama Editor가 뜹니다. 필요하다면 여기에서 Roll Pitch Yaw를 수정해 줄 수 있습니다. 상세한 내용은 쓰지 않겠습니다.



    6. 이 상태에서 ^B 를 누릅니다. 아래와 같은 Control Points 대화상자가 뜹니다. 대부분의 경우 문제가 없지만, 아래처럼 오차가 상당히 크게 나타나는 경우가 있습니다. 저는 7 이상되는 콘트롤 포인트는 무조건 지워줍니다. 기준점이 차이가 많이 나는 이유는 많습니다. 촬영중 약간 대상체가 움직이는 경우도 있지만, 벽 같은 곳은 비슷비슷해서 잘못 인식하는 경우도 있습니다. 


    어쨌든 오차가 큰 걸 지워버리고, F5(Optimize)를 눌러주고, 다시 확인해서 오차가 큰 건 다시 지워버리고... 이렇게 3-4번 정도 해줍니다. 사실 기준점 갯수가 아주 많으므로 이정도 지워주는 건 거의 문제가 없습니다. 



    7. 이제부터 본격적으로 바닥을 처리하는 작업에 돌입합니다. 다시 Adobe Bridge로 돌아가 맨 아래에 있는 사진들(삼각대를 옮기고 촬영한 사진들)을 PTGui에 끌어다 떨어뜨립니다. 그 다음 아래 그림처럼 "Image Parameters" 탭으로 들어가서 맨 아래로 내려가면 방금 떨어뜨린 사진들이 나오는 데, 첫장을 뺀 나머지에 대해 "Link" 체크박스를 클릭해줍니다. 나머지 사진들을 첫장에 연결시켜 한장으로 취급하라는 뜻입니다.



    8. 그 다음 Optimizer 탭으로 이동하여 좌측 부분 맨 아래쪽으로 내려가서 Viewpoint 를 선택합니다. 아무거나 하나만 선택해도 한꺼번에 모두 선택됩니다. (이 화면이 안보이면 빨간 화살표에 있는 단추를 누르면 됩니다.)


    이것은 동일한 위치에서 촬영한 게 아니라 다른 위치에서 촬영했다는 뜻입니다. 자세한 내용은 PTGui.com 투토리얼을 읽어보시기 바랍니다.



    9. 다음으로 ^E 를 누르면 아래처럼 Panorama Editor가 나타납니다. 가운데 부분에 삼각대를 옮기고 촬영한 사진이 나타납니다. 여기에서 화살표를 쳐둔 단추를 누릅니다. 파노라마를 한꺼번에 옮기는 게 아니라, 각 사진별로 따로 따로 옮기겠다는 뜻입니다.



    10. 바닥사진을 옮겨 아래처럼 대략 배치합니다. 보시면 사진 위 아래가 거의 같은 높이가 되는 것을 알 수 있습니다.(빨간 선 높이) 이것은 제가 삼각대를 옮기고 촬영할 때, 사진의 중심에 삼각대가 놓였던 위치가 촬영되도록 카메라를 기울였기 때문입니다. 


    또 한가지 중요한 점은 이렇게 바닥사진을 배치하면서, 파노라마로 합성된 사진에 비해 약간 오른쪽으로 가져다 맞추는 것입니다. 왼쪽 화살표는 파노라마에서 나온 소파의 다리이고, 오른쪽은 바닥사진에서 나온 소파 다리인데, 일부러 저렇게 오른쪽으로 배치해야 합니다. 


    처음에는 가능한 한 동일한 위치에 가져다 놓으려고 했었는데, 심심하면 아주 이상한 에러가 발생하곤 했습니다. 그러니까 일반적으로 에러 수치가 최대 2-3 정도가 되어야 하는데, 몇십 몇백까지 커지는 경우가 발생하는 겁니다. 사실 정말 짜증이 많이 났었습니다. 그런데 이렇게 오른쪽으로 배치하고 난 후로는 그런 일이 거의 발생하지 않고 있습니다. 



    사실 저는 이 과정이 정말 이해가 안됩니다. 기준점을 찾고 에러를 계산하고... 이런 과정들은 단순한 계산에 불과한데, 어떻게 배치를 하느냐에 따라 에러의 크기가 달라진다면 뭔가 알고리듬에 문제가 있지 않나... 하는 생각이 들 뿐입니다.


    11. 어쨌든... 그 다음으로는 Control Points 탭으로 들어갑니다. 좌우측 사진을 선택해야 하는데, 오른쪽은 맨 마지막에 촬영한 (삼각대를 이동시킨) 사진을, 왼쪽에는 화투장을 깔아둔 사진을 선택합니다. 그 다음 빨간 화살표에서 Zoom을 "Fit"으로 선택해 줍니다. 그러면 좌우측 사진의 방향을 비교해 볼 수 있습니다.


    이 사진은 처음 촬영했던 방향에서 삼각대를 뒤로 옮겼기 때문에 동일한 방향이지만, 오른쪽이나 왼쪽으로 옮겼을 경우에는 적당히 오른쪽에 있는 회전화살표를 사용해 동일한 방향으로 맞춰줍니다.



    12. 이제 Zoom 을 100%로 설정한 뒤 좌우측 사진에서 동일한 화투를 찾아 동일한 위치를 클릭합니다. 이렇게 총 6장의 화투마다 각 1점씩 클릭해줍니다.


    4점을 입력하고 5번째를 입력할 때는 좌우측 사진이 연동이되고, 어느쪽 사진을 클릭하면 다른 쪽 사진의 동일한 위치로 커서가 자동이동됩니다. 이때 거의 비슷한 지점이기는 하지만, 한두 픽셀정도 어긋나 있는 경우가 맣기 때문에, 그냥 클릭하지 않고 되도록이면 동일한 지점인 곳에 찍어줍니다. 



    13. 이렇게 기준점을 모두 입력하고 난 뒤, F5(Optimize)를 다시 눌러줍니다. 그러면 다시 계산을 하는데, 아래쪽에 나타나는 Distance 값이 최대 2-3 정도가 됩니다. 그러면 성공한 겁니다. 


    가끔은 바닥을 넣지 않았을 때의 값보다 커지기도 하는데, 이때는 ^E를 누르고 Panorama Editor에서 바닥사진을 약간 좌측 또는 우측으로 옮긴후 F5를 눌러보고, 안되면 또 옮겨서 F5를 눌러보고... 이렇게 몇 번해보면 2-3 이내로 떨어지게 됩니다.


    다시 한번 말씀드리지만, 저는 이 과정이 정말 이해가 안됩니다. ㅠㅠ


    14. 그 다음은 마스크를 씌우는 작업이 필요합니다. 마스크는 사진중에서 사용하지 않는 부분과, 꼭 나타나게 해야 할 부분을 선택하는 작업입니다. 


    좌측 아래에 있는 "Open" 단추를 누른 후, 미리 저장해둔 마스크 파일에서 선택을 합니다. 현재 3번사진, 즉 첫번째 세트이므로 mask01.png를 선택하면 됩니다. 두번째 세트의 사진은 두번째 마스크... 이런식으로 선택을 해줍니다. 그리고 바닥을 보고 촬영했던 사진은 별도로 저장해 뒀습니다. 


    이렇게 마스크 파일을 저장해서 사용하려면 사진 촬영방향을 일정하게 해두어야 합니다. 저의 경우 카메라와 삼각대를 항상 똑같은 방향으로 세팅한 뒤 촬영을 시작합니다. 물론 이렇게 해도 손으로 편집할 건 해야지만, 그래도 어느정도는 단순작업을 피할 수 있습니다. :)



    15. 아래는 바닥을 향해 촬영한 사진의 마스크 작업입니다. 파노라마헤드와 삼각대에 대한 마스크는 불러들인 것이고, 화투만 추가로 지웁니다.



    16. 아래는 삼각대를 치우고 촬영한 사진에 대한 마스크 작업 결과입니다. 화투를 지우고, 화투범위를 포괄하되 너무 넓지 않은 정도만 사용하고 나머지는 사용하지 않도록 설정합니다.



    17. 이제 마지막 확인절차에 들어갑니다. Exposure/HDR 탭을 누르고 들어가서 "Fusion Settings..." 단추를 누릅니다. 이 단추를 누르면 최종 결과물을 확인할 수 있습니다. 특히 실수로 mask 작업을 빠뜨리거나 하면 여기에서 확인할 수 있습니다.



    18. 이제 다끝났습니다. 마지막으로 "Create Panorama" 탭으로 들어가서 대충 그림처럼 설정한 후 "Create" 단추만 눌러주면 파노라마 파일이 생성됩니다. 여기에서 반드시 16비트로 설정해야 합니다. 그리고 움직이는 사람이나 자동차가 많이 촬영된 경우에는 Individual layers도 켜줍니다.



    19. 이제 포토샵에서 생성된 파노라마를 불러옵니다. 여러가지 편집이 있겠지만, 가장 중요한 것 중의 하나가 화이트발란스를 조정하는 것입니다. 실내사진의 경우, 카메라 세팅만으로 화이트 발란스를 잡는 건 거의 불가능에 가깝습니다. 


    일반적으로 파노라마를 처리하기 전, Adobe Bridge에 불러들인 상태에서 RAW 파일을 사용하여 화이트밸런스를 잡아준 뒤 파노라마를 작업한다면 거의 문제가 없을 겁니다. 하지만, 이 프로세스에서 보는 것처럼 저는 그냥 왠만하면 jpg 파일을 그대로 사용하기 때문에 이 단계에 만들어진 파노라마는 대부분 색감이 이상합니다.


    포토샵에서 화이트발란스 조정할 때 사용하는 도구는 엄청나게 많겠지만, 저는 거의 다 ^ M(Curves)명령을 사용해서 처리합니다. 


    Curves 명령을 실행시키면 아래와 비슷한 화면이 됩니다. 여기에서 Red/Green/Blue 채널을 각각 비교해 봅니다. 아주 특별한 경우가 아니라면 R/G/B 채널의 모양이 거의 비슷해야 합니다. 그러므로 예를 들어 R은 오른쪽으로 치우치고 B는 왼쪽으로 치우쳤다면 사선의 중앙부를 잡아 끌어 위/아래로 조정합니다. 


    물론 이것만으로는 불가능합니다. 스포이드 툴로 하얀색/회색 물건을 찍어서 색이 치우쳤는지도 알아보고... 등등 여러가지 방법이 있을 겁니다. 



    20. 그 다음 PanoTools 를 이용해 바닥을 변환해 봅니다. 12번 과정(기준점 입력)에서 문제가 없다면 바닥이 문제가 되는 경우는 많지 않습니다만, 그래도 한번 변환해서 확인해 보는 게 좋습니다. 생각지 못한 에러가 발생하기도 하거든요. 자세한 내용은 PanoTools로 바닥처리하기 완결편을 참고하시기 바랍니다. 그리고... 포토샵을 64bit로 설치했을 경우, PanoTools 플러그인도 64bit로 설치해야 하는데, 자세한 내용은 여기를 읽오보시기 바랍니다. 



    마지막으로.... 아래는 이 파노라마 파일을 krpano 도구를 이용해 VR로 제작한 것입니다. 



    =====

    이걸로 끝입니다. 물론 약간의 과정을 빠뜨린 것도 있습니다만, 그다지 대세에 지장을 줄 정도는 아닙니다. 아무튼 이 정도만 따라한다면 한 90% 이상은 아무런 문제없이 자동으로 바닥을 처리할 수 있을 겁니다.


    써 놓고 보니 글이 아주 기네요. 그런데... 사실은 엄청나게 압축해서 글을 쓴 겁니다. 세세하게 기록하였다면 아마도 3-4배 정도 더 길어지지 않을까 싶습니다. 그래서 이 글을 완벽하게 이해할 수 있으시려면 제가 예전에 써두었던 글들도 읽어보시는 게 좋습니다. 코멘트도 질문도 환영하지만, 제가 예전에 써둔 글을 읽지 않고 질문했다고 느껴지면 답을 하지 않을 예정입니다. 이해해 주시길.


    민, 푸른하늘

    Posted by 푸른하늘 푸른하늘이

    댓글을 달아 주세요

    1. 소중한 글..
      많이 배웠습니다..
      역시..
      깊고 깊으십니다...

      2012.08.23 10:58 [ ADDR : EDIT/ DEL : REPLY ]
    2. 요즘 제가 필요하던 튜토리얼입니다. ^^
      좋은 강좌 감사합니다.

      2012.08.23 12:08 [ ADDR : EDIT/ DEL : REPLY ]
    3. 소중한글 잘보고갑니다ㅡ머리에 쏙쏙쏙
      말씀하신데로 알고리즘이 있을듯한데 전 찾지못하겠어요ㅡ 동일한 촬영방식으로 스티칭시 어느한지점을 클릭하면 에러가없어 지는걸 찾아냈어요 ㅡ 풀바디로 넘어오니 노출 및 차량움직임에 편리함이더하더라고요 스티칭 작업량을 빠르게 하는부분도 알아냈어요 연락주시면 가르처드리겠습니다 주말잘보내세요

      2012.08.25 15:17 신고 [ ADDR : EDIT/ DEL : REPLY ]
    4. VRMania

      아~~
      크롭바디 사용시 포인트를 삼각대 주변에만 3개를 찍었습니다.
      바닥부분이 좁은 타일형태이면 틀어지는 경우가 발생을 하더라고요.
      그런경우 -90도 와 빗각 이미지를 최대한 멀리 한곳을(전 우측하단) 찍어주고 얼라인하면 이미지가 전체적으로 변형이 돼면서 맞아집니다..제 경우입니다^^

      작업량 빠르게 하는건 설명으로 말씀드리기가 어려워서...;;

      2012.08.28 22:19 [ ADDR : EDIT/ DEL : REPLY ]
    5. 나그네

      안녕하세요?
      박사님이 올리신 글 덕분에 파노라마에 관하여 많이 배우고 있는 중입니다.

      윗글의 내용중 10번 사항이 이해가 잘 안되신다고 하셨는데..

      혹시 박사님께서도 8번사항에서 지적하셨듯이 동일한 위치에서 촬영된 영상이 아니기에
      바닥부부분은 필요한 부분만 선택해 사용해야한다는 아래의 글과 관련된 사항이 아닐까요?

      http://www.hdvr.org/Make_pano/ptgui/vp.htm 의 글내용중

      5. 이미지 정렬 최적화한 후 바닥 사진에서 필요한 부분만 사용하기

      2012.09.04 13:07 [ ADDR : EDIT/ DEL : REPLY ]
    6. 미키

      너무나 궁금합니다~ 장비랑 프로그램이랑 전부요 제가 지금 실내 파노라마를 제작해야하는데 어떻게 할지 막막 합니다 ㅜㅜ 혹시 의뢰도 받으시는지요?? 카톡 아이디 jaycompany 입니다 저좀 살려주세요

      2013.07.17 18:40 [ ADDR : EDIT/ DEL : REPLY ]

    사진/360 파노라마2012. 8. 15. 17:24

    요즘 360*180 파노라마 뷰어를 제작해주는 krpano 를 공부중입니다. krpano 중에서 가장 쉽게 사용할 수 있는 도구로 droplet,  즉 drag&drop 만하면 기본적인 뷰어를 만들어주는 뱃치파일이 있습니다. 이중에 오브젝트 VR를 만들어주는 droplet 이 있었습니다. 제가 지금까지 한번도 오브젝트 VR을 만들어 본 적이 없었지만, krpano droplet을 이용하면 정말 간단하게 만들 수 있다는 걸 알고 있었기 때문에 직접 시도해 보기로 했습니다.


    먼저 오브젝트 VR 이란, 어떤 물건을 상하좌우로 돌려가면서 확대 축소해볼 수 있는 기법을 말합니다. 비디오나 애니메이션과는 달리 내가 원하는 방식으로 볼 수 있어, 2차원 사진에 비해 대상을 훨씬 더 자세하게 보여줄 수 있는 장점이 있습니다.


    일단 제가 만든 오브젝트 VR 부터 보여드리겠습니다. 올려진 건 네덜란드의 오래된 건물모형입니다.. 지오캐싱을 하면서 알게된 그 동네 출신 KLM 조종사로부터 선물로 받은 겁니다. 아마도 비즈니스석 손님들에게 하나씩 선물하는 걸로 알고 있습니다. 


    약간 시간이 많이 걸릴 겁니다. 파일 크기가 7MB 정도 되는데, 생각보다 더 오래걸리네요. 압축률은 높였지만, 원본의 크기를 그대로 가지고 있기 때문에 확대/축소/이동이 가능합니다.



    오브젝트VR을 제작하려면 물체를 정확한 간격으로 회전시켜줄 수 있는 장치가 필요합니다. 아래 그림은 아주 전문적인 장비로 cubicpan에서 판매중인 3AXIS 9000라는 장치인데, 카메라를 x,y,z 방향으로 정확하게 세팅하고 대상체를 회전시켜줄 수 있습니다. 



    그런데 저는 그냥 실험용이라... 우리 집사람이 도자기 제작하려고 구입한 간단한 물레를 사용했습니다. 물론 정확한 각도로 회전시키는 건 불가능해서 손으로 적당히 돌렸습니다. 물론 카메라를 삼각대에 설치해서 촬영했습니다만, 제가 촬영 당시의 장면을 남겨놓지 않아서 그냥 생략하겠습니다. 


    아래는 제가 촬영한 사진을 담은 폴더의 모습입니다. 총 34장을 촬영했네요.


    이제 이 사진들을 오브젝트 VR로 만들 차례입니다. 뭔가 대단한 걸 하는 것 같지만, 정말 간단합니다. 위 사진들을 모두 선택한 후, krpano 도구의 폴더에 있는 "MAKE OBJECT droplet.bat"라는 파일에 끌어다 놓기만 하면 됩니다. 


    그러면 사진들이 있던 폴더에 아래처럼 여러개의 폴더와 파일들이 추가됩니다. 플래시 파일도 있고 html, xml, 자바스크립트 등 여러가지 파일이 새로 생성됩니다. 이중에서 *.tiles 폴더에는 원래사진이 피라미드 방식으로 재구성된 사진들이 들어 있습니다.



    이제 끝입니다. 위에 보이는 파일 그래로라면 DSC_4112.html 이나 DSC_4112.swf 파일을 실행시키면 위에 삽입시켜둔 것처럼 볼 수 있습니다.


    ====

    그런데.... 이것을 블로그나 게시판 등에 올릴 때는 문제가 있습니다. 위에서보는 것처럼 여러개의 파일로 구성되어 있어서 직접 올릴 수 없는 경우가 많고 (폴더를 그래도 올릴 수 있는 곳은 거의 없죠.) 올렸다고 해서 반드시 실행된다는 보장은 없습니다.


    그래서 krpano에는 이 모든 파일을 묶어서 하나의 파일(플래시 파일)로 만들어주는 도구가 있습니다. krpano Protect Tool 입니다. 이 도구는 제목이 의미하는 것처럼 VR 파일들을 일정한 사이트에서만 실행되도록 하거나 암호화 하는 등 파일을 보호하기 위한 목적으로 사용합니다. 모든 파일을 하나로 묶어주는 기능도 파일의 내용을 보호하기 위한 목적의 일부라고 생각할 수 있을 것 같습니다.


    krpano Protect Tool을 실행시키면 아래와 같은 화면이 뜹니다. 파일을 하나로 통합시키려면 아래처럼 Embedded XML에 클릭을 하고 바로 아래에 있는 Browse 버튼을 누른 뒤, XML 파일을 선택합니다.



    다음으로 뜨는 화면은 그냥 OK를 해주면 되고, 그러면 아래와 같은 화면이 됩니다. XML을 분석해서 어떤 파일을 읽어들여야 하는 지 보여준 것입니다. 그 다음 오른쪽 두번째 단추인 "Add Folder"를 누르고 *.tiles 폴더를  지정해줘야 합니다. 마지막으로 "Generate Protected File"을 누르고 원하는 이름을 지정해주면 그 파일이 생성됩니다.



    민, 푸른하늘

    Posted by 푸른하늘 푸른하늘이

    댓글을 달아 주세요

    1. 이길재

      앗! 제가 박사님보다 먼저 오브젝트를 만들어서 그런지 알고있던 사실이지만
      다시 한번 읽어보니 머리속에 쏙쏙이네요..
      좋은정보 감사합니다..

      2012.08.19 00:49 [ ADDR : EDIT/ DEL : REPLY ]
    2. 유창열

      박사님의 상세한 설명 덕분에 쉽게 따라하게 되었네요...
      늘 감사드리고 있습니다...

      2012.12.10 13:53 [ ADDR : EDIT/ DEL : REPLY ]

    사진/360 파노라마2012. 8. 12. 19:56

    360*180 파노라마 뷰어를 만들기 위해 krpano를 사용할 때 가장 먼저 사용하는 도구는 여러가지 droplet입니다.  Droplet 이란, 파노라마 파일을 끌어다 놓으면 된다(drag & drop)는 뜻으로, 적당한 파노라마 파일을 끌어 놓기만 하면 왠만큼 쓸만한 파노라마 뷰어파일을 만들 수 있습니다.

    • MAKE PANO (NORMAL) Droplet - 가장 일반적인 360도 풀스크린 파노라마용. 파노라마 전체를 한꺼번에 불러들인 뒤 실행됨. 기본 버튼이 포함되어 있음. Flash/HTML5 공용
    • MAKE PANO (MULTIRES) Droplet - 다중해상도 파노라마용. 필요한 부분만 먼저 읽어들인 뒤 실행. (속도가 빠름). 파노라마 파일의 크기 제한이 없음.  Flash/HTML5 공용
    • MAKE PANO (SINGLESWF) Droplet - 필요한 모든 것을 swf  플래시 파일에 몽땅 집어 넣음. 아웃풋 파일이 swf 와 html 단 두개. Flash 전용. 기타는 MAKE PANO (NOMAL) Droplet 과 동일.
    • MAKE VTOUR (MULTIRES) Droplet - 여러개의 파노라마파일을 각각 다중해상도 파일로 만든 후, 가상 투어로 연결. 버튼, thumbnail 단추, 빙맵, 자이로 플러그인 기본 제공. 기타는  MAKE PANO (MULTIRES) Droplet 과 동일
    • MAKE OBJECT Droplet - 다중해상도 파일을 만들어 줌/회전이 가능한 object movie 생성. Flash 전용

    이 droplet은 기본적으로 배치파일입니다. 이 배치파일을 열어보면 가장 핵심적인 부분은 kmakemultires 라는 도구라는 걸 알 수 있습니다. 이름이 의미하는 것은 파노라마 사진을 다중 해상도(multi resolution) 사진으로 만드는 도구인 것 같지만, 설정만 바꾸면 위에서 설명한 것을 포함해 파노라마 뷰어 관련한 거의 모든 것을 해결하는 데 가장 중요한 도구입니다.


    kmakemultires 이 할 수 있는 작업이 많으므로 어떠한 작업을 할 것인가 하는 내용은 별도의 설정파일(*.config)을 만들어 이 설정파일을 파라미터로 넘기는 방식으로 사용합니다. 즉, 이 설정파일에 어떠한 내용을 담느냐에 따라 다양한 작업을 수행할 수 있으며, 위의 Droplet 들을 비교해 보면  단순히 설정파일만 다를 뿐이란 것을 알 수 있습니다.


    kmakemultires의 기능은 다음과 같습니다.

    • 다중 해상도 영상 제작, 타일크기/레벨숫자 최적화
    • spherical/cylindrical 영상을 cubical 로 변환 (품질향상, 속도향상, HTML5용)
    • 추가적으로 특별한 크기의 영상 생성(예 : 모바일용)
    • 프리뷰용 영상 생성
    • 아이콘(Thumnail) 영상 생성
    • 라이센스가 포함된 뷰어파일 생성
    • 모든 파일을 삽입한 플래시 뷰어파일 생성
    • EXIF GPS 정보를 읽어 XML에 전달
    • Autopano 영상의 EXIF 정보 읽어옴
    • 템플릿 기반의 HTML 파일 생성
    • 템플릿 기반의 XML 파일 생성
    • 추가적인 HTML/XML 파일 복사

    kmakemultires의 사용법은 아주 간단합니다.


  • kmakemultires -config=###.config [options] inputfiles

  • 그냥 설정파일을 지정하고, 파일들 이름만 지정하면 됩니다. 


    대신 설정파일(.config)는 아주 복잡합니다. kmakemultires 가 할 수 있는 기능이 많은 만큼 지정할 수 있는 설정도 다양하기 때문입니다. 설정파일에 대한 상세한 내용은 여기를 읽어보시면 됩니다. 아래는 간략하게 정리한 것입니다. 


    설정파일에 들어가는 문장은 3가지 종류입니다. 가장 중요한 것은 "setting=value" 형태의 문장입니다. 말 그대로 어떤 변수에 값을 지정하는 형태입니다. 두번째는 #으로 시작하는 문장으로 이건 그냥 comment입니다. 마지막으로 include 문이 있는데, 별도의 파일로 저장된 것을 그대로 읽어들이는 것입니다.

    • 입력되는 영상에 대한 설정

    panotype=autodetect, sphere, cylinder...    파노라마 종류의 설정

    hfov=360, vfov=auto, voffset=0      360*180 파노라마가 아닌 경우 설정할 때 사용. 

    • 프로세싱 설정 ???

    makescenses=false    여러장의 파노라마를 합쳐 하나의 scene으로 작성할 때. ??

    frames=false     멀티프레임 혹은 오브젝트무비를 제작할 때. 모든 이미지가 한장의 사진(애니메이션)에포함된 프레임으로 취급됨


    • 포맷변환 설정

    converttocube=true 자동으로 큐브형태로 변환. 속도향상, HTML5 지원

    converttocubelimeit=360x120  이하의 이미지는 큐브형태로 변환하지 않음


    • 다중해상도 설정

    multires=true 다중해상도 사용여부

    tilesize=auto 타일크기 자동으로 설정 혹은 256-1024로 설정


    • 다중해상도 XML

    progressiveloading=auto, true, false. false가 되면 현재 설정된 해상도의 영상부터 읽어들임

    xmlimageparameter=    xml의 <img...> 노드에 들어갈 추가적인 파라미터. multiresthreshold를 달리할 때 사용.

    • Output 영상 설정

    tilepath=%inputpath%/%basename%.,,,

    • Preview 영상 설정

    preview=true, 

    cspreview=true Cubestrip preview

    previewsmooth=25

    • Custom cube image... 모바일용 아래는 예제

    customimage[mobile].path=%INPUTPATH%/%BASENAME%.tiles/mobile_%s.jpg customimage[mobile].res=1024 

    customimage[mobile].imagesettings=jpegquality=82 jpegsubsamp=444 jpegoptimize=true customimage[mobile].xml=[NL][TAB][NL]

    • Thumnail 영상 설정

    makethumb=false. 

    • XML output 설정 

    xml=true   XML 파일을 생성함

    xmlpath=%INPUTPATH%/%BASENAME%.xml


    • XML 템플릿/스킨 설정 ???
    • HTML output 설정

    html=true

    htmlpath=%INPUTPATH%/%BASENAME%.xml

    • HTML 템플릿 설정 ???
    • Embedded SWF File 설정

    buildembeddedswf=false  라이센스파일과 데이터를 포함해 하나의 SWF를 만들 것인지.

    buildembeddedswf_files= xml, skin, ... 어떤 파일을 포함시킬 것인지

    embedorderlookat ??

    kprotectclparameters ??

    • 기본 설정

    html5=auto true, false. HTML5 뷰어를 포함시키고 사용할 것인지. true이면 항상 html5로 수행

    embedlicenses=true  뷰어 파일에 라이센스 파일을 포함시킴. false이면 라이센스파일을 동일 디렉토리에 복사해둠.

    parsegps=true EXIF 로부터 GPS 자료를 읽어 파노라마에 넣음.

    fliterbasename=true %BASENAME%에서 공백 등을 '_'로 대치. 다른 시스템간 호환을 위함

    cubeshortsyntax=true   <cube url="pano_%s.jpg">을 사용하여 간단하게.

    krpanoswf=krpano.swf  base krpano.swf에 대한 Path.

    copyswf=true    krpano.swf 를 output 폴더에 복사

    renamedswf=false     krpano.swf의 이름을 %BASENAME%으로 변경

    copylicense=true      krpano.license, krpano.license.js를 output 폴더에 복사. renamedswf=true 일때는 이름이 동일하게 바뀜. embedlicenses=true 일 경우에는 무시됨

    askforxmloverwrite=true 기존의 xml 을 덮어쓸때 물어볼 것인지

    quiet=false   콘솔없이 수행됨

    waitkey=false    마지막에 키를 눌러야 콘솔 사라지게 함

    tempdir=...

    • 영상 필터링

    filter=LANCZOS, POINT, LINEAR, CUBIC...     저해상도 영상 생성시 사용하는 필터

    jpegquality=85

    jpegsubsamp=422 파일사이즈를 줄이기 위한 JPEG chroma subsampling 방식. 444,422,420,410 등

    jpegoptimize=true JPEG Hoffman 압축테이블을 최적화함. JPEG파일 작아짐. 파일전체가 RAM에 올라가야 하므로, 매우큰 입력영상을 32비트 머신에서 처리할때는 끄는게 좋음.

    jpegprogressive=flase   JPEG 인코딩시 progressive 방식 사용. 파일크기는 작아지지만, 속도가 느려짐

    manualjpegcompression=false 


    ====

    대략 정리를 해봤는데, 여기에서 kmakemultires.exe로 할 수 있는 것은 원래의 파노라마 파일을 불러 들여서, krpano 뷰어에 적합한 파일로 변환하는 게 주 임무라고 할 수 있습니다. 설정파일을 어떻게 설정하느냐에 따라 어떤 플랫폼을 지원할지, 성능은 어떠할지 등이 결정된다고 할 수 있습니다. 다만, 이 파일로는 뷰어가 어떤 모양이 될지, 어떻게 동작할지에 대한 제어는 전혀 없습니다. 이건 별도의 xml 파일로 제어해야 합니다. 사실 krpano의 핵심은 이 xml 파일이라고 할 수 있겠네요. 이 글에 적은 config 설정은 아주 기본적인 사항만 알아도 크게 문제가 없을 것 같습니다.


    민, 푸른하늘

    Posted by 푸른하늘 푸른하늘이

    댓글을 달아 주세요

    1. 이길재

      한글은 몇번 읽어서 이해가 가는데
      영어부분은 읽어도 모르겠네요. 아무뜬 좋은 정보 감사합니다.~

      2012.08.19 00:51 [ ADDR : EDIT/ DEL : REPLY ]
    2. 파노라마 배워보고싶은데 엄두가 안나네요 ㅜㅜ

      2013.10.20 06:02 [ ADDR : EDIT/ DEL : REPLY ]

    사진/360 파노라마2012. 8. 7. 00:03

    360*180 파노라마를 제작한 결과는 대부분 2:1 비율의 대형 jpg 영상입니다. 예를들어 저는 대부분 8000*4000 픽셀짜리 jpg 영상으로 만듭니다.


    이 사진을 그냥 보는 것도 흥미롭기는 하지만, 우리가 일반적으로 보는 영상과는 차이가 있을 뿐 아니라, 특히 위아래 부분은 엄청나게 왜곡이 되어 있어 불편할 수 있습니다.


    따라서 360*180 파노라마를 다른 사람들과 공유하려면 특별한 view가 필요합니다. 예를 들면 저는 DevalViewer 라는 뷰어를 사용하고 있습니다. 하지만, 온라인으로 공유하려면 다른 방식이 필요합니다. 


    저는 이제까지 360cities.net 에 파노라마를 올려서 공유해왔습니다. 원래 이 사이트는 아마존의 서버를 이용하고 있는데, 최근에는 다중서버를 이용하는 방식(CDN : Content Delivery Network)으로 변경하여 훨씬 더 영상을 빨리 띄워주게 되었습니다. 아래는 제가 예전에 촬영한 파노라마입니다. 



    국립 현대미술관 조각 - 각축의 인생 in 대한민국


    이 방식을 사용하면... 무엇보다 아주 편합니다. 거의 아무 것도 고민할 필요가 없습니다. 그냥 사이트에 올리고 몇몇 파라미터만 설정하면 언제 어디서든 사용할 수 있습니다.


    문제는 내가 마음대로 만질 수 있는 게 많지 않다는 것입니다. 예를 들어 파노라마의 한 곳에 그림이나 설명을 올리거나, 한곳을 클릭하면 그 곳에서 촬영한 다른 파노라마를 보여준다던지 하는 섬세한 설정은 전혀 기대할 수 없습니다.


    이런 기능을 충족시키려면 별도의 파노라마 제작툴과 뷰어가 필요합니다. 여러가지가 있다고는 하지만, 전문가께서 krpano가 가장 널리 사용되고 있다고 하니 그말을 믿고 공부해 볼 생각입니다.


    아래는 기존 krpano 제작 스크립트를 사용하여 로고만 바꿔본 예제입니다. 거의 바꾼 것은 없는데.... 아무튼 스크립트와 xml 파일, config 파일 등등... 천천히 읽어보니 정말로 배울 게 많다는 걸 알게 되었습니다. 갈 길이 참 머네요~~


    민, 푸른하늘


    Posted by 푸른하늘 푸른하늘이

    댓글을 달아 주세요

    1. 이길재

      박사님 기대됩니다..
      저 또한 배워보고싶은데 쉽지가 않네요..
      이번에도 기대하고 있겠습니다. 즐거운.주말보내세요~

      2012.08.11 07:37 [ ADDR : EDIT/ DEL : REPLY ]

    사진/360 파노라마2012. 8. 5. 22:11

    제가 360*180 파노라마를 제작한지도 이제 꽤 된것 같습니다. 그런데 그동안 저는 파노라마 사진 그자체에만 관심을 두었을 뿐, 이를 예쁘게 보여주는 것에 대해서는 별로 관심이 없었습니다. 그저 360cites 에 올리고, 여기에서 제공되는 embed 코드를 넣어주는 정도에 만족했었죠. 


    아래는 제가 360cites에 올린 파노라마중 가장 인기있는 영상입니다. 현재 14만번 이상 보았다고 나오네요. 



    작은 습지 다리에서 바라본 요세미티 폭포 in California


    아무튼... 최근에 다시 열심히 파노라마 사진을 촬영하러 다니고 있는데, 이제 왠만큼 (거의 기계적으로) 파노라마를 제작할 수 있게되다보니 좀 더 새로운 걸 배우고 싶었던 참에, 아는 분이 krpano를 배워보라고 불을 지피시네요. 그래서 일단 시작해 보려고 합니다. 잘 할 수 있을지는 모르겠지만요.


    아래는 krpano.com의 대문에 떠있는 내용을 제 마음대로 정리한 것입니다. 1:1 번역한 것도 있지만, 간단하게 생략한 것도 있고, 완전 제 맘대로 쓴 글도 포함되어 있습니다. 물론 제가 잘 아는 분야가 아니기 때문에 틀릴 수도 있습니다. 절대로 원본과 비교해보지 마시길.


    민, 푸른하늘

    ====


    krpano는 모든 종류의 파노라마 영상 및 대화식 가상투어를 지원하는, 작지만 유연하면서도 성능이 좋은 뷰어입니다. krpano viewer와 함께 krpano tools가 제공됩니다. krpano tools는 파노라마를 쉽게 볼 수 있도록 만들어주는 작은 도구 / droplet입니다. 


    예제 : http://krpano.com/examples

    투토리얼 : http://krpano.com/docu/tutorials/quickstart/#top


    1. Flash와 HTML5 지원 

    krpano viewer 는 두가지 버전이 있습니다. 데스크탑 및 안드로이드의 경우엔 Flash 버전을 사용하면되고, 플래시를 지원하지 않는 아이폰 계통에서는 HTML5를 지원합니다. 두가지 뷰어 모두 모두 형태, 레이아웃 등이 동일합니다.


    2. 고성능, 고품질 렌더링

    속도가 빠르며 고품질 영상을 보여줍니다. 뷰어자체도 크기가 작고 효율적입니다.


    3. 마음대로 변경가능

    거의 모든 설정을 바꿀 수 있습니다. 유연하면서도 동적인 xml 스크립트 시스템을 채택하고 있습니다. 원하는 이미지를 추가하면 자신만의 UI를 구성할 수 있으며, 외부 플래시나 자바스크립트(HTML5) 플러그인도 삽입시킬 수 있습니다. krpano 플러그인 리스트 참고


    4. 다양한 파노라마/이미지 포맷 지원


    5. 다중해상도(이미지 피라미드) 지원

    GigaPan 과 같이 아주 큰 영상을 효율적으로 처리하기 위해서 여러 해상도의 영상을 별도로 관리하며, 이들을 각각 작은 타일로 잘라 두어, 필요한 영상만 띄울 수 있도록 합니다. 이렇게 함으로써 속도를 빠르게 할 수 있고, 메모리도 적게 소요됩니다. krpano tools를 이용하면 자동으로 생성됩니다.


    6. 3D 투영

    일반평면투영/어안투영/스테레오어안투영(LittlePlanet)/페니니투영(원형어안)/건축식투영

    파라미터만 설정하면 조절할 수 있으며, 투영법간 전환도 지원합니다. 예를 들어  Little Planet View로 시작하여 일반 파노라마형식으로 바꿀 수 있습니다. 


    7. 가상투어/핫스팟/스크립트

    핫스팟/지도/아이콘/박스 등을 이용해 여러개의 파노라마를 연결시킬 수 있습니다. MAKE VTOUR droplet을 이용하면 아주 쉽게 가상투어를 제작할 수 있습니다.


    8. 간단하고도 복잡하게

    간단하게 사용할 분은 MAKE PANO 또는 MAKE VTOUR를 이용하면 되며, krpano xml 포맷이나 Flash 자바스크립트 등을 이용하면 얼마든지 복잡한 기능도 구현할 수 있습니다.




    Posted by 푸른하늘 푸른하늘이

    댓글을 달아 주세요

    1. 이길재

      시작하신지 얼마돼셨는데 이런게 일목요연하게 정리를 해놓으셨나요?
      암뜬 기대됩니다..

      2012.08.11 07:56 [ ADDR : EDIT/ DEL : REPLY ]
    2. 탱구냥이

      KRPANO공부해야 되는데 덕분에 많은 정보 얻고 갑니다.

      2013.05.20 18:41 [ ADDR : EDIT/ DEL : REPLY ]

    사진/360 파노라마2012. 1. 18. 10:58
    수평 파노라마든, 360*180 파노라마든, 파노라마 사진을 촬영하기 위해서는 동일한 지점을 중심으로 회전하면서 촬영해야 합니다. 그렇지 않으면 사물이 겹친다든지 하는 오류가 발생하게 됩니다. 풍경 촬영과 같이 피사체의 거리가 먼 경우에는 그냥 손으로 들고 촬영해도 무방하고, 삼각대에 카메라를 고정시킨뒤 회전시켜가며 촬영하면 거의 좋은 결과를 얻을 수 있습니다.

    하지만, 실내촬영과 같이 피사체와의 거리가 가까운 상태로 파노라마 사진을 촬영할 경우, 오류가 훨씬 심하게 발생하게 되므로, 시차(Parallax)가 발생하지 않는 지점, 즉 무시차점(노달포인트는 잘못된 용어임)을 중심으로 카메라를 회전시켜가며 사진을 촬영해야 합니다. 이를 위한 장비가 바로 로테이터(Rotator) 혹은 파노라마 헤드(Panorama head)입니다. 제가 사용하는 장비는 아래 사진과 같은 큐빅판 M2 / HS-SS 입니다.


    파노라마 로테이터를 사용하려면, 먼저 자신의 장비에 맞게 조정을 해야 합니다. 자신의 카메라-렌즈 조합에 따른 무시차점(non parallax point)의 위치를 알아내고, 이 점을 중심으로 카메라가 회전할 수 있도록 조정해주는 과정이 필요한 것입니다. HDVR.org의 노-패럴랙스(일명 노달) 포인트 설정하기를 읽어보시면 자세한 내용을 아실 수 있습니다.

    아래는 제가 사용하는 스티칭 프로그램인 PTGui의 FAQ에서 소개된  Finding the no-parallax point  이라는 문서를 마음대로 번역/수정한 것입니다. 여러가지 새로운 내용이 들어있어 소개시켜 드립니다.

    1. 시차(PARALLAX)와 입사동공(ENTRANCE PUPIL)


    펜을 하나 들고 눈을 감은 후, 배경에 주의를 집중하면서 머리를 좌에서 우로 움직여보세요. 아래 사진처럼 펜이 배경에 대해 좌측으로 움직이는 걸 볼 수 있으실 겁니다.


    이처럼 상대적으로 가까운 펜의 위치가 변하는 것은 시차(視差, parallax)라는 효과 때문입니다. 이러한 경우, 이 두장의 사진을 겹쳐서 상응하는 물체를 같은 위치에 맞춰보면, 배경이든 펜이든 둘중의 하나는 어긋날 수 밖에 없습니다. 따라서, 파노라마를 촬영할 때에도 이와 같은 현상이 발생하지 않는 지점에서 모든 사진을 촬영하여야만 합니다. 즉, 파노라마를 촬영하기 위해서 카메라를 회전시킬 때, 카메라의 "눈"이 일정한 위치에 고정되어야 합니다. 

    인간의 눈이 이 세상을 바라보는 중심점인 것처럼, 카메라의 입사 동공(entrance pupil)이 카메라가 바라보는 장면의 중심점입니다. 바로 이점을 기준으로 카메라를 회전시켜야 합니다. 이 점을 무시차 점(無視差 點, NPP, Non parallax point)이라고 합니다. 예전에는 일반적으로 렌즈의 전면 노달 포인트 (front nodal point)를 중심으로 카메라를 회전시키는 것이 이상적이라고 생각해 왔습니다. 현재 이는 잘못된 것이라고 판명되었지만(여기 참조), 일반적으로 "노달 포인트"를 찾기위해 개발된 방법은 실제로 입사동공을 찾게 되므로, 결과적으로는 문제가 없습니다. 다만, 그점을 "노달 포인트"로 부르는 것은 완전히 잘못된 것으로서, 노달 포인트는 렌즈 시스템에서 완전히 다른 위치 입니다. 

    참고: 위에서 설명한 것은 엄격히 표준 직교렌즈(rectilinear lens, 직선이 직선을 촬영되는 렌즈)에 적용되는 것이며, 어안렌즈는 이 투토리얼 끝부분에 있는 '참고'에 써둔 것과 같이 이 모델에 정확히 적용할 수 없습니다. 그러나, 파노라마 헤드를 조정하는 절차는 유사합니다.

    2. 스티칭 오류와 시차(STITCHING ERRORS AND PARALLAX)


    카메라를 입사동공을 중심으로 회전시키지 못할 경우, 스티칭 오류가 발생합니다. 그러나, 파노라마 사진에 스티칭 오류가 발생했다고 해서 시차로 인한 것이라고 가정하는 것은 잘못입니다. 시차가 발생하지 않도록 카메라를 완벽하게 설치한다고 해도, 스티칭 오류는 발생합니다. 렌즈 왜곡이 충분히 보정되지 않았을 때, PTGui에서 기준점이 잘못 배치되었을 때 등의 경우에도 발생합니다. 구름이나 나뭇가지의 이동 등도 문제를 유발할 수 있습니다. 이러한 스티칭 오류는 지능적으로 블렌딩 - 수작업(.psd 파일에서 레이어 마스크를 사용하여 편집) 또는 자동(Smartblend 와 같은 블렌딩 소프트웨어 활용) - 하면 최소화 시키거나 거의 완벽하게 감출 수 있습니다. 

    만약 여러분의 카메라가 시차가 발생하지 않도록 정확히 설치되었는지 알고 싶다면, 시차의 존재를 파악하기 위한 특별한 테스트를 수행해야 합니다.

    3. 직접적인 방법 - SLR만 적용가능


    일안반사식 카메라의 경우 대부분 그다지 어렵지 않게 무시차 점을 찾을 수 있습니다. SLR의 경우 뷰파인더를 밝은 빛쪽으로 향하게 한 뒤, 렌즈를 들여다 보면 입사동공이 밝은 점으로 보입니다. 렌즈를 예를 들면 f/16과 같이 조리게를 좁히고, 카메라의 심도 미리보기 버튼(depth of field preview button)을 눌러봅니다. 두눈을 뜬 상태로 보면 밝은 점의 개략적인 위치를 쉽게 판별할 수 있습니다. 손가락을 렌즈 경통옆으로 움직이면서 입사동공과 손가락의 거리가 같도록 움직여보면 됩니다. (어안렌즈의 경우, 조리개를 줄일 필요가 없습니다. 조리개를 완전히 개방하더라도 점의 크기가 작기 때문입니다.)

    이를 이용하면 파노라마 헤드에서 카메라 위치를 기발한 방법으로 조정할 수 있습니다. 즉, 카메라를 회전시키면서 입사동공의 위치를 관찰하면서 좌우측으로 얼마나 움직이는지 살펴보는 것입니다. 이 방법은 어안렌즈와 같이 초점거리가 짧은 렌즈에 적합합니다.

    그러나 먼저 파노라마 헤드에서 카메라의 위치를 조정하여, 입사동공이 회전축과 나란하도록 해야 합니다. 이를 위해서는 먼저 카메라를 수직방향으로 아래로 향하도록 회전시킵니다. 그 다음 파노라마의 회전축 중심(예를 들면 cubic pan의 경우 회전축의 6각 나사)가 사진의 정중앙이 되어야 합니다. 렌즈에 따라서는 이러한 조정을 할 수 있을만큼 충분히 가까운 거리에 초점을 맞출 수 없을 수 있지만, 임시로 다른 렌즈로 바꿔서 조정해도 무방합니다. 다른 방법으로는 좌측 그림처럼 파노라마 헤드를 수평으로 둔 후, 렌즈 앞에 추를 늘어뜨려 입사 동공과 회전축이 수직을 유지하는지 눈으로 확인하면 됩니다. (사진에서는 실을 렌즈 위쪽에 테이프로 붙여두었지만, 손으로 가만히 잡고만 있어도 됩니다.)

    횡방향 위치가 정확하지 않으면, 스티칭한 파노라마에서 파노라마 헤드가 부서져서 톱니바퀴 모양으로 나타납니다. 오른쪽 사진이 가장 전형적인 예입니다.

    파노라마 헤드의 윗부분이 원형 톱 모양이 됩니다. 이 사진의 경우에는 "톱니"가 시계방향으로 회전으로 잘리는 모양이 되었습니다. 이는 입사동공이  카메라 뒤에서 보았을 때 파노라마 헤드축의 왼쪽으로 치우쳤다는 것으로, 카메라를 약간 오른쪽으로 이동시켜야 합니다. 톱니가 반시계방향 회전에 잘리는 모양이라면 카메라를 왼쪽으로 이동시켜야 합니다.

    다음으로 입사동공의 밝은 점의 이동을 점검할 때, 고정된 기준이 될 수 있는 일종의 고정식 관측장치가 필요합니다. 아래는 바늘과 두꺼운 종이로 만든 것입니다. 


    또한 다쓴 볼펜심을 렌즈 앞에 설치하여, 구멍을 통해 밝은 점을 볼 수 있도록 하는 방법도 사용했습니다. 만약 카메라를 시계방향으로 회전시킬 때 점이 왼쪽으로 이동한다면, 입사동공이 회전측 앞에 있다는 뜻으로, 카메라를 뒷쪽으로 약간 옮겨야 하며, 오른쪽으로 이동한다면 카메라를 앞쪽으로 이동시키면 됩니다. 점이 고정되어 있다면 입사동공이 무시차 점에 위치한 것입니다. 아래 그림은 카메라가 회전축보다 훨씬 뒤쪽에 있을 때의 모습입니다.


    카메라가 한 촬영지점에서 다음 촬영지점(예를 들면, 수평방향으로 60도씩 6번 촬영할 경우, -30도와 +30도 지점)으로 회전할 때 입사동공이 움직이지 않을 때까지 카메라의 위치를 앞 뒤로 약간씩 이동시킵니다. 카메라 위치를 조정하는 가장 빠른 방법은 먼저 카메라가 정면을 바라보도록(0도) 설치하는 것입니다. 그 다음 +30도 위치로 회전시킨 뒤, 입사동공이 이동하지 않는 지점으로 카메라를 이동시킵니다. 다음으로 -30도 위치로 회전시킨뒤 점검을 합니다. 아래는 그 결과입니다.



    중요한 것은 입사동공이 +30도 0도 -30도 등 모든 각도에서 동일한 위치에 있어야 한다는 것입니다.

    입사동공의 상하위치가 올바른지 체크하려면 아래 그림과 같이 카메라가 달려있는 지지대를 180도 회전시켜서 다시 카메라를 정면으로 향하게 하면 됩니다. 위와 같은 방법으로 입사동공의 위치가 동일하도록 조정하면 됩니다. 이때, 수평 위치도 다시한번 체크해 볼 수 있습니다.


    4. 전통적인 방법


    가장 정확한 방법은 기본적으로 다른 많은 분들이 기술한 방법과 동일합니다. 일반적인 파노라마를 촬영할 때 처러 중첩하여 촬영하되, 창문 유리를 통해 먼 경치를 촬영하는 것입니다. 이때 중첩되는 부분의 창 유리에 테이프를 떨어뜨리고 카메라와 창문의 거리는 약 50cm 정도로, 그리고 조리개는 f/22 이상으로 조여줍니다. (물론 카메라의 흔들림을 방지할 수 있도록 삼각대를 확실하게 고정해야 합니다.) 이제 사진을 촬영한 뒤, 배경과 테이프의 위치를 비교합니다. 아래는 어안렌즈로 촬영한 사진에서 중첩되는 부분만 잘라낸 것입니다.


    포토샵(Photoshop)에서 사진을 비교하는 것은 간단합니다. 사진들을 동일한 위치에 맞추고 레이어로 설정해두면, 맨 위 레이어를 on/off 하면서 테이프의 이동량을 확인할 수 있습니다. 위 사진은 카메라를 왼쪽(좌측 사진)과 오른쪽(오른쪽 사진)에서 촬영한 것입니다. 오른쪽 사진을 보면 테이프 오른쪽 부분은 더 많이 보이고, 테이프 왼쪽부분은 좀 덜 보입니다. 이것은 입사동공이 회전축보다 앞에 있다는 뜻으로 카메라를 약간 뒤쪽으로 이동시켜야 합니다. 다시 두장을 촬영하여 비교하는 과정을 반복하면 시차가 없는 위치를 찾을 수 있습니다.

    아래는 이러한 과정을 통해서 무시차 점((無視差 點, Non parallax point)을 찾은 결과입니다.



    ====
    이 글은  http://www.johnhpanos.com/epcalib.htm 를 번역한 것입니다. 원래 제가 번역한 부분 이후에도 다른 내용이 있는데, 더이상 재미도 없고 해서 그냥 생략했습니다. 참고하세요.

    민, 푸른하늘
    Posted by 푸른하늘 푸른하늘이

    댓글을 달아 주세요

    1. 잘 읽었습니다. 박사님..^^
      마지막 사진에서 보이는 사진처럼 시차를 이용한 씰룩대는 사진을 위글(wiggle)사진이라고 하지요..^^
      위글 사진도 재미있는 사진입니다..^^
      http://hdvr.org/xe/index.php?document_srl=56225

      2012.01.23 10:08 [ ADDR : EDIT/ DEL : REPLY ]
      • 위글사진이라고 부르는 지는 첨 알았네요.
        근데, 위 사진은 위글사진이 아닌듯 합니다. ㅎㅎ
        잘 읽었습니다~

        2012.01.30 14:49 신고 [ ADDR : EDIT/ DEL ]
      • 위 링크에서 각 사진 밑에 있는 위글(wiggle)사진 보기를 클릭하시면 위글사진을 볼 수 있습니다..^^

        2012.02.01 01:37 [ ADDR : EDIT/ DEL ]
      • 옙, 저도 봤습니다. 입체사진에 한참 빠져있을때 참 좋은 방법이라고 생각했었죠. 감사합니다~

        2012.02.01 10:37 신고 [ ADDR : EDIT/ DEL ]
    2. 꿈꾸는사진가

      오랜만에 글을 보는것 같습니다.
      저도 몇일전에 풀프레임 바디로 갈아타게 되서 렌즈 무시차점을 새로 세팅해야하네요...

      덕분에 또 좋은 정보 얻어갑니다. ^^

      2012.01.27 00:05 [ ADDR : EDIT/ DEL : REPLY ]
      • 저는 여러번 노력했는데, CUBICPAN을 해체했다가 다시 결합하면 2-3mm 정도는 움직이더군요. 그래서 포기했습니다. 물론 현재 상태로도 아주 잘 촬영되고요.

        2012.01.30 14:50 신고 [ ADDR : EDIT/ DEL ]
    3. 고운

      초심자가 보기에 설명에 사용된 용어들이 조금 어렵네요. 조금 쉬운 설명이라면 많은 사람들이 파노라마 사진에 빠질텐데 약간의 아쉬움이 생깁니다. 국내 보기드문 이런 고급정보를 공유해주셔서 도움이 많이 되었습니다.

      2012.06.07 12:59 [ ADDR : EDIT/ DEL : REPLY ]
    4. 비밀댓글입니다

      2012.09.02 15:39 [ ADDR : EDIT/ DEL : REPLY ]
      • 파노라마 사진 합성 프로그램은 아주 많은데... 일단 포토샵에 들어가시면 간단한 파노라마 사진 편집이 가능합니다. 먼저 확인해보시는 게 나을 듯 싶습니다.

        2012.09.03 09:34 신고 [ ADDR : EDIT/ DEL ]
    5. 산능

      망원렌즈는 무시차점을 맞추지 않아도 결과물에 지장이 없다고 들었는데
      몇 미리 렌즈 이후부터 무시차점을 맞추지 않아도 될까요? 망원렌즈라고만
      얼핏 들어서 무척 궁금했습니다.

      2013.06.08 00:57 [ ADDR : EDIT/ DEL : REPLY ]
    6. 김선호

      안녕하세요 고급 장보 감사합니다 ^^
      이것도 모르고 전자동 모바일 카메라용 파노라마 촬영 로테이터를 개발하고 있었네요 ㅠㅠ

      지금 설계는 그냥 parallax point를 계산 안하고 촬영을 해서 실내에서는 사진 품질이 좋지 않더라구요..

      저희가 참고하려고 하는데요 혹시 전자동으로 parallax point를 잡아주는 로테이터 제품이 있나요??

      2015.07.30 20:31 [ ADDR : EDIT/ DEL : REPLY ]
      • 로테이터를 자동으로 잡아주는 장치는 못봤습니다. 설정해주면 전자동으로 촬영해주는 장비는 있는데... 생각해보면... 카메라마다 값을 저장해두고 카메라만 선택하면 무시차점에 맞도록 조종하는 건 어렵지 않겠군요. 경제성은 글쎄... 지만요~~

        2015.07.31 13:23 신고 [ ADDR : EDIT/ DEL ]

    사진/360 파노라마2011. 1. 11. 23:21
    바르셀로나에서의 두번째날입니다. 그러고보니 첫번째 날 이야기만으로 글을 다섯개 썼군요. 궁금하시면 첫번째 글두번째 글세번째 글네번째 글, 그리고 다섯번째 글을 읽어보세요.

    먼저 몬주익 공원을 둘러보기로 했습니다. 바르셀로나 시내에서 남서쪽으로 있는 작은 동산으로 예전부터 있던 몬주익성, 그리고 1992년 하계 올림픽이 열린 몬주익 올림픽경기장도 바로 이 언덕에 있습니다.

    일단 지하철과 곤돌라를 타고 몬주익 언덕을 올라가서 걸어내려오기로 했습니다. 아래가 곤돌라의 모습입니다. 이걸 타고 끝까지 올라가서 내리면 몬주익 언덕입니다.


    아래는 몬주익 성입니다. 예전에는 물론 군사기지였을테죠. 해자였을 법한 웅덩이에는 예쁜 정원이 꾸며져 있습니다.


    아래 무식하게 큰 해안포도 아마 2차세계대전까지는 사용되지 않았을까 싶습니다. 사실 무기가 현대화되면서 높은 곳에 진지를 지어야 할 이유는 하나도 남지 않게 되었습니다. 아직 우리나라에는 그런 전통이 남아있지만요~ ㅎㅎ


    저 아래 항구에는 엄청나게 큰 크루즈선들이 여럿 들어와 있네요. 특히 가운데로 보이는 녀석은 13층이 넘는 것 같습니다. 아마도 바르셀로나는 지중해 크루즈에서 가장 중요한 기착지가 아닐까 싶습니다.


    ====
    아래는 제가 이 동네에서 찾은 지오캐시들의 상황입니다. 윗쪽 노란 스마일 표시는 회의장 주변으로 나중에 찾은 것이고, 오른쪽 아래로 보이는 4개가 그날 산책하며 찾은 것들입니다. 제가 출발하기전 이동네 캐시를 조사했었는데, 상황이 많이 달라졌네요...


    이중에서 딱 하나만 소개시켜드리겠습니다. 다른 건 모두 마이크로 급으로 대충 필름통인데, 아래처럼 큰 통이 하나 있었습니다. 바로 Castell de Montjüic (Barcelona) 라는 캐시입니다.

    이 캐시에는 여러가지 아이템이 들어 있었는데, 이중 몇개는 들고 왔고, 물론 제가 가져갔던 것들은 거기 넣어주었습니다. 그중에서 아래 태극선 모양은 제가 주인인 트래블 버그(Travel Bug)입니다. 서울에서 활성화시킨 후 바로 바르셀로나로 데려가서 넣어준 모습입니다.


    이 트래블버그(Korean Taegeuk(yin-yang) fan TB2T22E)는 현재 아래 그림처럼 바르셀로나를 떠나서 네덜란드에 가 있습니다. 사실 벌써 2달전 어떤 분이 꺼내서 가지고 다니는 중이라 혹시 없어지지는 않았을지... 걱정도 약간 됩니다.


    이정도로 바르셀로나 이야기는 끝을 맺어야 할 것 같습니다. 약간 더 쓸 이야기는 있습니다만, 이제 다녀온지도 넉달도 넘다 보니, 그때의 그 감동도 가물가물하고... 글쓰기도 지쳐서 이젠 더이상 무리다 싶습니다. ㅠㅠ
    역시 여행기는 그때그때 써야 한다는 걸 새삼스레 다시 깨닫고... 몬주익 언덕에 있는 까딸루냐 박물관 앞 360도를 마지막으로 글을 접겠습니다.


    국립 까딸루냐 박물관 in Barcelona

    민, 푸른하늘
    Posted by 푸른하늘 푸른하늘이

    댓글을 달아 주세요

    사진/360 파노라마2010. 12. 22. 11:55
    제가 생각해도 참 진도가 안나가네요. 9월 초에 다녀온 바르셀로나 이야기를 이제야 적고 있으니 말입니다. 어쨌든 그래도 다섯번째 글입니다. 첫번째 글두번째 글세번째 글, 네번째 글을 읽어보세요.

    네번째 글에서 언급한 것처럼 이번 글은 구엘 공원입니다. 바르셀로나에서 딱 한군데만 봐야한다면 물론 사그라다 파밀리아 성당이지만, 두군데를 선택하라면 저는 구엘 공원을 선택할 것입니다. 다음에 정말 충분한 시간이 있다면 하루 종일 구석구석 돌아보고 싶습니다.

    아래는 구엘 공원 입구입니다. 사진 중심부에 있는 동그라미 부분에 구엘공원의 대표 아이콘이라고 할 수 있는 채색 타일 도마뱀이 있습니다. 


    아래가 그 도마뱀입니다. 제 카메라 배터리가 다 떨어지는 바람에 제가 직접 찍은 사진은 없습니다. 그러고 보니 제가 도마뱀 앞발을 깔고 앉았군요. ㅎㅎㅎ 


    아래는 제가 촬영한 360도 파노라마입니다. 삼각형 버튼을 누른 뒤 마우스를 드래그하면 상하좌우로 돌려가며 볼 수 있는데, 좌측위에 있는 FullScreen 을 누르시고 보시면 훨씬 멋집니다. 반대방향으로 돌려보면 입구 양쪽으로 건물이 하나씩 있는데, 안데르센 동화에 나올듯한 과자로 만든 집이 연상됩니다.


    구엘공원 입구 in Barcelona

    지금 다시 봐도 정말 감탄이 절로 나옵니다. 어쩜 저런 생각을 했는지... 철망으로 막아둔 창문마저도 그냥 예술입니다. 부분부분 뜯어 보아도, 전체를 합쳐서 보아도 모두 그림...


    아래도 정말 감탄을 연발했던.. 구조물입니다. 위로는 걸을 수 있는 통로인 듯 싶은데, 올라가보지 않아서 자신은 없습니다만, 어쩜 돌을 장식해서 저런 구조물을 만들었는지... 


    아래는 이 부근에서 촬영한 걸로 생각되는 360도*180도 파노라마입니다. 자신이 없는 것은 이와 비슷한 구조물이 몇 군데 있기 때문입니다. 어쨋든 그늘에서 하프를 연주하는 사람이 감상포인트입니다. ㅎㅎ


    구엘공원의 하프 연주가 in Barcelona

    사진은 대충 이정도로 줄이고... 지오캐싱이야기로 넘어가겠습니다. 물론 구엘 공원에도 캐시가 숨겨져 있습니다. 지금 확인해 보니 미스테리 캐시가 2개 그리고 일반 캐시가 2개 (1개는 일시정지)가 있는데, 저는 일반캐시 하나만 찾았습니다. (스마일 표시가 제가 찾은 캐시입니다.)

    제가 지오캐싱에 빠지게 되면서부터 어디를 가기 전에는 미리 그 지역의 캐시 정보를 미리 확인해 보는데, 이곳은 별 기억이 없는 걸로 봐서 예상을 못한 모양입니다. 사실 이 곳의 캐시는 특히 멀티캐시나 미스터리 캐시의 경우, 외지인들은 쉽게 찾을 수 없습니다. 영어가 없는 경우도 많고, 아주 복잡하게 만들어져 있기 때문입니다. 


    물론 제가 찾은 캐시(Park Güell: Sala Hipóstila y Pórtico La Lavandera)는 아주 쉽게 찾을 수 있는 캐시였습니다. 사진 스포일러가 확실해서 못찾을 가능성이 거의 0에 가까운 그런 캐시입니다. 먼 곳에서 이곳을 찾은 사람들이라면 쉽게 찾을 수 있는 캐시도 중요하다고 생각합니다. 

    그런데... 이곳에 있는 캐시통이 아주 재미있었습니다. 아래입니다. 마이크로 탄약통이라고 해야 하나요? 그래도 있을 건 다 있습니다.ㅎㅎ


    정말 부러운 것은... 이 캐시를 방문한 사람이 정말 너무 많다는 겁니다. 캐시정보를 보면 올해 2010년 3월 28일에 설치되었다는데, 로그가 420개나 있습니다. 대충 봤을 때 하루에 1.5명 정도 꼴로 다녀갔다는 이야기죠. 아래는 제가 사인한 부분인데, 맨 위가 8월 31일입니다. 제가 9월 5일날 사인했으니까 불과 일주일만에 저렇게 많은 사람이 다녀가다니... 정말 100개의 캐시를 설치했으면서도 그중 제일 많은 로그가 50개도 안되는 저로서는 부럽지 않을 수 없네요. ㅠㅠ


    마지막으로 호텔로 돌아가는 버스를 기다리면서 촬영한 어느 가게의 쇼윈도. 그냥 가우디의 숨결이 느껴지지 않습니까? 100년전에 세상을 뜬 위대한 천재 한명이 이 도시를 먹여살린다는 생각이 절로 들게 됩니다.


    민, 푸른하늘
    Posted by 푸른하늘 푸른하늘이

    댓글을 달아 주세요

    사진/360 파노라마2010. 12. 17. 09:05
    드디어 파밀리아 성당입니다. 9월초에 바르셀로나에 갈 계획이 확정되면서 가장 기대했던 것을 단 하나만 고르라고 한다면 당연히 사그라다 파밀리아 성당이죠. (예전 이야기 :  첫번째 글두번째 글, 세번째 글 도 읽어보세요.)

    스페인어로 Templo Expiatorio de la Sagrada Familia 인 사그라다 파밀리아 성당은 성 가족 성당이라는 뜻인데, 가우디가 설계하고 건축하였으며, 1883년에 건축을 시작했는데, 거의 130년이 지난 현재도 계속 건설중입니다. 

    아직 미완성임에도 매년 200만명 이상이 다녀가며, 건물의 일부가 세계 문화 유산으로 지정되어 있는 스페인에서 가장 인기가 높은 건물이라고 합니다.


    사그라다 파밀리아 성당에는 총 3개의 파사드가 있습니다. 동쪽은 예수의 탄생, 서쪽은 고난 그리고 남쪽은 부활과 영광을 모티프로 하는데, 이중 남쪽의 영광 파사드가 현재까지 공사중이며, 가우디가 죽은지 꼭 100년이 지난 2026년 완공될 예정이라고 합니다.

    아래는 탄생 파사드의 일부입니다. 어느 한쪽 벽도 비어 있는 곳이 없습니다. 가우디의 머리 속에는 무엇이 있었을지... 정말 경탄 그자체 입니다.


    아래는 고난 파사드의 일부입니다. 십자가와 고통에 찬 예수 그리고 12 사도들의 모습을 볼 수 있습니다. 고난 파사드는 유연한 곡선으로 이루어진 탄생 파사드와는 달리 모든 조각들이 각지게 표현되어 있습니다.


    아래는 아마도 남서쪽에서 촬영했을 것 같네요...


    아래는... 사그라다 파밀리아를 멀리 볼 수 있는 360도 파노라마입니다. 바로 앞에 있는 가로등도 가우디가 설계한 것입니다. 어쩐지... 싶죠? 이처럼 바르셀로나는 구석구석 벌써 90년전에 세상을 떠난 가우디의 흔적으로 가득합니다.


    가우디 가로등과 사그라다 파밀리아 성당 in Barcelona

    아래는 이 가로등 아래쪽에 있는 가우디의 모습입니다.


    사실 저는 사그라다 파밀리아 성당 내부로는 들어가보지 않았습니다. 담장 밖을 돌기만 했을 뿐이죠. 물론 충분히 감동스러웠지만, 내부도 돌아보고 엘리베이터를 타고 탑을 올라갔다면 더 감명 깊었을 겁니다. 그래도 그것만은 언젠가 우리 가족들이 함께 갈 날을 위해 남겨두었습니다.

    그리고 물론, 이곳에도 보물은 있습니다. 원래 남쪽과 북쪽에 각각 하나씩 있는데, 저는 북쪽에 있는 Sagrada Familia #2 만을 찾았습니다. 남쪽에 있는 건 일시 정지된 상태였기 때문입니다. 캐시의 특성상 일반인들의 눈에 띄면 없어질 수 밖에 없는데, 이때 캐시 소유자는 다시 복구 시킬 때까지 일시 정지 시켜야 합니다.

    어쨌든... 멀리 사그라다 파밀리아 성당을 배경으로 인증샷을 남겨 두니 너무 기분이 좋네요. ㅎㅎ


    일단 오늘도 여기서 스톱해야겠습니다. 다음편이 구엘공원이기 때문입니다. 가우디를 찾아 바르셀로나를 갔다면 정말 반드시 가야할 곳. 그래서 사진도 많고 할 이야기도 많기 때문에...

    민, 푸른하늘

    Posted by 푸른하늘 푸른하늘이

    댓글을 달아 주세요