2007년 8월 20일 월요일

자동 3D 모델링 - Google PhotoSketch(?)

제 블로그에 들르시는 분들이라면 PhotoSynth하면 익숙한 이름일 겁니다. 또, Sketchup도 익숙하실테고요. PhotoSketch는 바로 이 두 가지 멋진 프로그램의 기능을 합친 소프트웨어입니다. (현재 개발중으로 아래 쪽에 있는 비디오만 공개되어 있습니다.)

구글어스버추얼어스는 현재 3D모델을 구축에 다른 접근방법을 사용하고 있습니다. 구글어스는 주로 기존 기업에서 제작한 3D 모델을 구입하거나 구글 매니아들이 자발적으로 만든 모델로 구글어스를 채워가고 있고, 버추얼어스는 자체적으로 항측회사를 구입하여 3D 모델을 제작하고 있는데, 내년까지 500개 시를 제작할 예정이라고 합니다. 현재 상황으로 보면 3D 모델 제작기술은 버추얼어스가 앞서있다고 할 수 있죠.

어쨌든 3D 모델을 만드는 것은 쉬운 일이 아닙니다. 아무리 구글에서 Sketchup같은 훌륭한 프로그램을 제공했더라도, 3D모델, 특히 사진 Texture까지 입힌 모델을 만들기는 만만치 않은 작업이죠. 하지만, PhotoSketch를 이용하면 이 작업이 상당히 간단하게 해결될 수 있을 듯 합니다.

먼저 마이크로소프트의 PhotoSynth를 보면, 사용자가 일반 카메라로 아무렇게나 찍은 여러사진을 조합해서 Point Cloud (점의 위치)를 계산하고, 카메라의 위치 및 자세를 계산해 줍니다. 이러한 기능이 PhotoSketch에 내장이 되어 있습니다.

<하얀 공처럼 생긴 부분이 카메라 촬영 위치>

다음으로 이러한 Point Cloud를 사용하여 3D 모델을 만드는 것은 사용자가 해야 합니다. 하지만, Sketchup을 사용하면 대략적인 3D 모델은 쉽게 제작할 수 있습니다. 특히 점들의 위치가 나타나 있으므로 사진 한장만 가지고 제작하는 것보다는 훨씬 쉽게 제작할 수 있습니다. (3D 모델이 별도로 있을 경우에는 이 과정을 생략할 수 있습니다.)

이러한 과정을 거쳐 만들어진 3D 모델에 사진 텍스춰를 씌워주는 것은 자동으로 PhotoSynth가 해결해 줍니다.

아래는 PhotoSketch를 소개하는 Presentation 동영상입니다. 길이가 너무 길기는 하지만, 3D 모델 제작에 관심있는 분들이라면 천천히 보시면 도움이 될 것 같습니다.



뒤쪽에 있는 내용은 동영상에 나온 내용중, 제가 필요하다고 생각되는 부분만 정리한 것인데, 너무 기술적이라서 그냥 참고삼아 넣어둡니다.

민, 푸른하늘
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
====
이 글은 Google (?) PhotoSketch - Rapid Photo Modelling을 참고로 작성하였습니다.

====
----PhotoSketch----
Automated Texture Mapping - 여러장의 사진을 사용하여 3D 모델제작
GPS 필요없음. 캘리브레이션이 되어 있지 않은 일반 카메라를 사용

기존 방법 -
Active Sensing(Laser Scanning, Flash Laser), - 정확도 5mm
Passive Sensing - 정확도 5cm
Passive Sensing 에서 3장 이상 멀티뷰 스테레오
둘다 Heavyweight Model - 260MB (포인트의 수 1000만개)
웹에서는 lightweight model로 충분 -> 800kb

멀티뷰 Geometry 알고리듬
- Automatically extract salient features using SIFT
- Feature correspondence among image pairs
- Initialize camera pose and structure from first two image frames
- Recover camera pose from remaining images
- Bundle Adjustment is Key component for redistributing global errors

PhotoSketch는 lightweight 텍스춰 3D모델 제작툴
- MicroSoft PhotoSynth의 자동 카메라 캘리브레이션과 구글 스케치업의 간편함을 통합한 툴

-3D 모델이 있을 경우 자동으로 텍스춰링
- 없을 경우에는 캘리브레이션 자동 - 사용자가 3D 모델 구축 - 자동 텍스춰링 : 반자동

비디오 영상으로도 3차원 모델 제작 가능

항공사진측량과의 비교
- 매뉴얼이 많음
- 사진이 많을 때 작업하기 힘듦
- 대부분 기본 3차원 도형을 입력하는 방법임
- 실루엣기반이 작은 객체에는 적용하기 힘듦
- 경험이 많은 사람 필요

PhotoSchetch
- 캘리브래이션이 자동임
- 2D 스케치를 기반으로 함 사출방식 - 사진을 기반으로

구글맵으로 대형사진을 볼 수 있다.
(Google Maps Image Cutter)

구글맵을 사용해서 지도를 보는 것은 당연한 일이지만, 대형사진을 볼 수 있는 특이한 프로그램이 있습니다. digitalurban 블로그를 운영하고 있는 Centre for Advanced Spatial Analysis, University College London에서 개발한 Google Maps Image Cutter라는 소프트웨어입니다. 기본적으로 파노라마 사진같은 엄청나게 큰 사진을 타일로 분할한 뒤, 구글맵에 인터페이스를 사용해 블로그 등에 띄워주는 소프트웨어 입니다. (Download version 1.3 now (31 July 2007).)

예를 들면 다음과 같습니다. 화면이 작아서 보기 힘들다면 전체화면으로 보시면 됩니다.
좌측 상단에 있는 콘트롤을 사용해 확대 축소할 수 있고, 드래그하면 이동할 수 있습니다. 좌측 마우스 버튼으로 더블클릭을 해도 확대가 되고, 우측 마우스 버튼 더블클릭은 축소가 됩니다.


Google Maps Image Cutter는 전체 사진을 처리해서, 최상 레벨에서는(제일 축소했을 때)256x256 크기의 아이콘으로 만들고, 두번째 레벨에서는 256x256 아이콘이 4개, 그 다음 레벨에서는 16 등의 순서로 만들어 낸 뒤, 이것을 구글맵 인터페이스를 통해 띄우는 방식입니다.

사용법은 다음과 같습니다.
우선 Google Maps Image Cutter를 다운로드 받습니다. 그러면 GMapImageCutter.bat, GMapImageCutter.sh, GMapImageCutter.jar, readme.txt 4개의 파일이 들어 있는데, GMapImageCutter.bat을 실행시키시면 됩니다. (단, 미리 Java Virtual Machine version 1.4.2 이상의 버전이 깔려 있어야 합니다. http://java.sun.com)

일단 실행되면 html파일 하나와, 타일형태로 잘라진 이미지 파일이 들어 있는 폴더가 생성됩니다. 이 파일들은 자기 컴퓨터에서 돌릴 수 있고, 공유하려면 적당한 곳에 업로드를 시킨 후 iframe 혹은 링크를 작성하면 됩니다.

민, 푸른하늘
p.s. 제가 찍은 파노라마사진으로 공유를 해보려고 했더니, 제 파일들을 업로드시킬 곳이 마땅치 않네요. 구글 Page Creater에는 폴더를 만드는 기능이 없군요. ㅠㅠ 혹시 이런 파일들을 올리기에 적당한 곳이 있으면 꼬리말로 알려주시면 감사하겠습니다.