사진/360 파노라마

krpano - kmakemultires 도구 사용법

하늘이푸른오늘 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 설정은 아주 기본적인 사항만 알아도 크게 문제가 없을 것 같습니다.


    민, 푸른하늘