본문 바로가기
3D프린팅 관련 정보

에버랜드 판다 사진에서 3D모델 추출하기.

by MadeInNeverland 2016. 5. 16.
반응형

앞서 포스팅한 [사진으로 보는 에버랜드 판다월드 방문기!]에서 말씀드렸다시피, 제가 찍은 수많은 동영상과 사진에서 판다, 러바오의 모습을 3D로 추출해내는 과정을 보여드리도록 하겠습니다. 


왜 이런 작업을 하냐구요? 실제 판다의 모습을 3D로 담아보고 싶어서요ㅎ 재밌잖아요ㅎ


보통 어떠한 대상을 사진을 찍어서 3D 모델링화 하는 작업은 360도 모든 각도에서 사진을 많이 찍은 후 그 사진들을 각각의 방향성을 가진 상태에서 조합하는 과정입니다. 



이런 식으로 말이죠. 위 안내문은 http://www.123dapp.com/howto/catch에서 가져왔는데요, 일반적으로 가볍게 위 작업을 할 때 많이 사용하는 프로그램이 오토데스크(Autodesk)의 123D Catch입니다. 



Autodesk의 123D 시리즈는 3D모델링 시 필요한 작업들을 도와주는 소프트웨어 패키지입니다. 이중에 2D 사진들에서 3D모델링을 추출하는 작업은 123D Catch라는 앱이 도와주는 것이지요. 


저도 맨 처음에는 이 123D Catch라는 앱으로 작업을 시작했었는데, Autodesk의 클라우드에 판다를 찍을 많은 사진들을 업로드한 후 3D모델링화 되기를 기다렸는데.. 안되더군요;;


그래서 다른 프로그램을 찾던 중 다음과 같은 프로그램을 만나게 되었습니다.



Agisoft의 PhotoScan이라는 프로그램입니다. 위 설명처럼 이 프로그램은 디지털 사진에서 3D 공간 데이터로 재구성하는 작업을 도와줍니다. 


일단 자세히는 잘 모르겠지만 어쨌든 제가 하고자 하는 작업을 할 수 있을 것 같아 PhotoScan이라는 프로그램을 다운로드합니다. 


http://www.agisoft.com/downloads/installer


위 링크에서 PhotoScan의 Professional Edition을 받으면 됩니다. 물론 데모인데요, 데모 버전은 저장이 안되더라구요. 그래서 찾아보니 같은 페이지에 30-day trial license를 신청하는 게 있어 Agisoft로 신청했더니, 잠시 후 메일로 30일짜리 트라이얼 라이센스 키가 오더군요. 


일단 요 PhotoScan으로 작업을 하려면 판다를 여러 방향에서 찍은 사진이 필요합니다. 그런데 사실 에버랜드 판다월드에서 그 많은 사람들 사이에서 판다를 여러 방향에서 사진을 계속 찍을 수 없었기 때문에.. 저는 동영상 촬영을 했었습니다. 



위와 같이 최대한 자세히, 제가 갈 수 있는 최대한의 넓은 범위로 동영상 촬영을 진행했지요.


그 다음, 이 동영상에서 다음 팟플레이어의 연속 영상 캡쳐 기능을 이용하여 1초 간격으로 스냅샷을 jpg파일로 저장했습니다. 왜 다하지 않고 1초 간격으로 저장했냐구요? 뒤에서 그 이유를 설명해드릴게요ㅎ



이런 식으로 저장이 됩니다. 총 108개 스냅샷이 저장되더군요. 이제 Agisoft의 PhotoScan으로 작업할 차례입니다. 


http://www.agisoft.com/index.php?id=32


Agisoft 홈페이지에 보면 메뉴얼이 게시되어있는데요, 저는 그 많은 기능들 중에서도 3D Model Reconstruction 기능이 필요하므로 위 메뉴얼만 참조했습니다.


 

일단 PhotoScan 프로그램 상에서 각 사진들이 어떤 카메라 위치에서 찍힌 것인지가 설정이 되어야 하기 때문에 Align Photos라는 기능을 시행하면 위와 같이 이상한 점들이 나타납니다. 


이게 point cloud model이라고 하는데요, 총 점이 22,286개라고 나오더군요. 아래에 파란색과 검은 실선들이 모여있는 부분이 제가 사진을 찍은 위치를 나타낸 것입니다. 


그다음 과정은 위에서 설정된 카메라 위치를 기반으로 각각의 사진으로부터 깊이 정보(Depth information)를 계산해서 하나의 3차원 형상을 만드는 작업인 Build Dense Point Cloud입니다. 


아까 제가 판다 동영상에서 스냅샷 추출할 때 1초 간격으로 추출했잖아요? 처음에는 모든 프레임을 전부다 추출했었습니다. 모든 프레임에서 추출된 스냅샷 개수가 3,222장이더군요. 


사진이 많을 수록 더 정밀한 3D모델링을 추출할 수 있을텐데 왜 저 3천여장의 사진파일을 사용하지 않았냐구요? 처음에 3,222장으로 작업을 하니 계속 메모리가 부족하다고 경고창 뜨면서 진행이 안되더군요. 


도대체 무슨 작업이길래 메모리가 부족하다고 하지.. 라고 생각했었는데..



위 캡쳐는 Build Dense Point Cloud 작업이 돌아가고 있는 모습을 찍은 것인데요, 작업을 1초마다 캡쳐한 스냅샷 108개만으로만 진행하였고, Build Dense Point Cloud에서 Quality를 가장 낮은 단계인 Lowest로 설정했음에도 불구하고 시간이 어마어마하게 걸리더군요;;;


저 캡쳐에서는 시간이 다 안나왔지만, 이 Build Dense Point Cloud 작업을 모두 끝마치는데 대략 12시간 정도가 걸렸습니다. 12시간동안 제 컴퓨터가 계속 돌아가더군요;;;; 


108개 사진파일로 가장 낮은 품질로 Build Dense Point Cloud 작업하는데 12시간이면.. 3천여장가지고 최고 품질로 작업하면 대략 한.. 한달정도 걸리지 않을..까요?;;;;;



12시간만에 완성된 Dense Point Cloud의 모습입니다. 처음 해보는 거라 12시간동안 작업했는데 결과가 그지같으면 어쩌지 하고 걱정했었는데.. 이거 보고 어찌나 신기하던지.. 총 point가 2,836,005개나 되더군요. 



판다를 확대해본 모습입니다. 와.. 동영상을 캡쳐한 사진들에서 이정도까지 뽑아내다니, Agisoft의 PhotoScan이라는 프로그램이 급격히 맘에 들기 시작했습니다.


그다음 과정은 Build Mesh입니다. 즉, 앞에서 만든 Dense point cloud를 기반으로 polygonal mesh model를 만드는 것이지요. 



이 과정도 대략 넉넉히 1시간 정도 걸린 것 같군요. 작업이 완료되면 위와 같이 결과물이 나타납니다. 만들어진 faces만 6,910,444개나 됩니다. 제 컴퓨터가 엄청 버벅이더군요;;



판다 부분을 확대한 모습입니다. 해상도가 그리 높지 않은 상태의 dense point cloud에서 메쉬를 만들다보니 3D모델은 품질이 그닥 좋지는 않군요. 


여기서 만들어진 3D모델은 STL 파일로 Export도 되는데요. 



전체적으로는 이런 모습입니다.



판다 부분만 확대한 모습입니다. 이게 판다를 찍은 사진이 정밀하지 않아서 그런건지, 아니면 판다의 털때문에 저렇게 나오는 건지는 잘 모르겠습니다만, 이 STL 파일 단독으로는 3D프린팅하는 것이 쉽지만은 않아보입니다. 아마도 출력이 되려면 단순화를 시켜야할 것 같았습니다. 하지만 이 포스팅에서는 3D 모델 추출까지만 다루려고 합니다.


마지막 작업은 Build Texture입니다. 3D모델에 텍스쳐를 입히는 작업이지요.


과연, 그 결과는?



짠! Texture를 입히니 진짜 그럴싸한 에버랜드 판다 3D모델링처럼 보입니다.



판다 부분을 확대해보면 판다 털까지 보입니다. 텍스쳐를 입히고 보니 진짜 리얼한 판다 3D 모델이 되어있더군요ㅎ


3차원적으로 최종 완성된 에버랜드 판다, 러바오의 3D 모델 모습을 동영상으로 보면 다음과 같습니다.



컴퓨터가 버벅이면서 느리게 돌아가긴 하지만, 판다 3D 모델의 느낌이 대충 이렇습니다.


이 작업을 하면서 좀 아쉬웠던 점은 다음과 같습니다.


1. 판다 사진(또는 동영상)을 360도 모든 방향에서 정밀히, 자세히 찍었더라면 더 좋은 결과를 얻을 수 있었을 것 같다. 

2. 컴퓨터 성능이 엄청 좋았다면 3D reconstruction 하는데 있어서 좀 더 빠르고 좋은 결과를 얻을 수 있었을 것 같다. 

3. Agisoft의 PhotoScan.... Professional 버전으로 사고 싶다. 


그래도 제가 상상한 것처럼 실제 판다의 사진을 기반으로 추출한 판다 3D 모델을 얻을 수 있어서 흥미로웠습니다. STL 파일을 좀 더 잘 손댄다면 3D프린팅까지도 가능할 것 같습니다. 


이러한 방법을 이용하면 물건이나 사람의 사진들과 동영상으로 3D모델링을 제작하여 3D 프린팅까지 가능할 것 같기도 합니다. 이미 다른 분들은 하고 계실지도 모르겠지만 말이죠ㅎ


이제까지 메이드인네버랜드였습니다~!




반응형