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배 정도 더 길어지지 않을까 싶습니다. 그래서 이 글을 완벽하게 이해할 수 있으시려면 제가 예전에 써두었던 글들도 읽어보시는 게 좋습니다. 코멘트도 질문도 환영하지만, 제가 예전에 써둔 글을 읽지 않고 질문했다고 느껴지면 답을 하지 않을 예정입니다. 이해해 주시길.
민, 푸른하늘