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의 사용법은 아주 간단합니다.
그냥 설정파일을 지정하고, 파일들 이름만 지정하면 됩니다.
대신 설정파일(.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=
- 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 설정은 아주 기본적인 사항만 알아도 크게 문제가 없을 것 같습니다.
민, 푸른하늘