krpano 도구는 간단한 XML 파일을 사용하여 파노라마 설정을 저장. 이 파일은 일반 텍스트 에디터로 생성/편집할 수 있지만, XML 규칙을 반드시 따라야 함.
기본 XML 규칙 : http://www.w3schools.com/xml/xml_syntax.asp
이 문서에 관하여
krpano XML 문법 및 요소, 속성 및 속성값. 그리고 이들을 동적 krpano 변수에 매칭시키는 방법. 일반/고급 부분. 읽기 좋게 하려는 목적. 고급 부분은 감춰둠. 오른쪽위 버튼을 누르면 볼수 있음.
XML 태그의 구조
<krpano> - root 노드.
<include>
<preview>
<image>
<view>
<autorotate>
<plugin>
<layer>
<hotspot>
<events>
<action>
<scene>
</krpano>
<krpano> - root 노드. 다른 태그는 이 내부에서 정의되어야 하며, 대부분 반복 가능. 옵션. 순서무관. krpano 내부에 krpano 를 정의할 수도 있음(krpano scope에 세팅을 설정하기 위함) 여러번 선언되면 맨 마지막이 덮어씀.
참고 : 일부 노드와 속성은 특별하게 취급됨
- name attribute : xml 노드에 name이 있으면, 이 노드는 배열의 요소로 해석됨. 즉, 그 xml 노드가 또 있으며, 각 요소는 이름으로 구분된다는 뜻. 배열의 이름이 xml노드의 이름이 됨. 이름은 영문자로 시작해야함. 숫자로 시작하면 안됨. case insensitive.
- device attribute : xml 노드가 사용될 기기. all/flash/html5/mobile/tablet/iphone 등. 해당되지 않으면 통째로 무시됨. | OR, + AND, !NOT 으로 묶을 수 있음.
- include node : 다른 xml 파일을 읽어들임. parsing 작업 전에 모든 include 노드를 대체함. 이 과정에서 url은 조정이됨. 아래 참조.
- <action>/<data>/<scene> xml 파싱동안에는 무시되고 content 변수에 별도 저장됨.
- url attribute : xml 파일의 위치에 대한 상대경로로 인식됨. included xml의 url도 마찬가지임.
%FIRSTXML% - 최초에 불려진 xml 의 경로
%CURRENTXML% - 현재 xml 파일의 경로 (included xml의 path가 아님??)
%SWFPATH% -
%HTMLPATH% -
%BASEDIR% - Use the basedir path. ?? - default 는 %FIRSTXML%
%$VARIABLE% - 'VARIABLE'의 값. 현재의 xml 이나 scene이 로드되기전 정의되어있어야 함.
XML 노드/속성/속성값/변수
- <krpano version="1.0.8.15" onstart=""> ... </krpano>: onstart는 파노라마 뷰잉 시작때 적용할 action/function.
- <include url="~~.xml" /> 불러오는 파일로 대체됨. url은 조정됨
- <preview url="~~.jpg" /> 되도록이면 크기가 적은파일. kmakepreview 로 제작가능. 일부만 사용할 경우에는 hfov/vfov/voffset 을 사용하여 지정.
- <image> <cube url="pano_%s.jpg" /> </image> 여기에서 %s는 l,f,r,b,u,d 을 의미함.
<image> <cubestrip url="cubestrip.jpg"> </image>
<image> <sphere url="pano.jpg"> </image>
<image> <cylinder url="pano.jpg"> </image>
<image type="cylinder" hfov="1.0"> <cylinder url="image.jpg"> </image> : FLAT 사진. 반드시 1.0
<image> <qtvr url="quicktime.mov"> </image> QuickTime Movie
<plugin name="video" url="videoplayer.swf" videourl="..." /> : 비디오일 경우 정의
<image> <cylinder url="plugin:video" /> </image>
full spherical 이 아닐 경우, hfov=360/vfov/voffset 사용하여 지정
- <view hlookat="0.0" vlookat="0.0" /* -180부터 180. -90부터 90. */
fov="90.0" /* 현재의 fov */
fovmin="1.0" fovmax="179.0" /* 어디까지 확대/축소 가능한가 */
maxpixelzoom="" /> /* fovmin 대신 사용가능. 1.0이면 픽셀 1:1임 */
- <area ....> 파노라마가 표시될 윈도의 범위. align 모드(크기와 위치)와 border 모드(경계선의 두께)가 있음. 참고 : 모든 layer/plugin 이 이 범위내에 그려짐. 바깥쪽에도 그리고 싶다면 layer/plugin 의 속성 parent="STAGE"로 지정해야함.
- <display> 렌더링 속도/성능과 관련된 설정. Flash 모드와 HTML5모드.
- <control> 마우스/키보드 세팅
- <cursors> 마우스 커서의 모양
- <autorotate enable="false"
waittime="1.5" /* 대기시간(초) */
speed="10.0" /> /* 회전속도 (도/초). 음수일때는 왼쪽으로 회전 */
- <layer>/<plugin> 은 사진, 로고, 버튼, 동적플러그인(krpano plugin) 등을 포함시킬 때 사용함. 여러개의 레이어/플러그인을 조합/적층 시킬 때에는 parent 설정을 사용하는 방법과, child xml 요소로서 children <layer>/<plugin> 요소를 정의하는 방법이 있음?? 이 경우, parent와 keep 은 자동적으로 parent 요소로 지정됨. <layer>와 <plugin>은 이름만 다를 뿐, 내부적으로는 완전히 동일.
- <hotspot> 파노라마 영역중 마우스에 반응하는 지역. 다른 파노라마 불러오기, url로 연결하기, 뷰 바꾸기 등등 가능. polygonal/image 등 두가지가 있음. url을 지정하면 image, url 없고 좌표가 있으면 polygonal.
<hotspot name="..." keep="false" visible="true" enabled="true" handcursor="true"
zorder="" style="" alpha="1.0"
fillcolor="0xFFFFFF" fillcolorhover="0xFFFFFF"
fillalpha="0.0" fillalphahover="0.1"
borderwidth="0.0" borderwidthhover="4.0"
bordercolor="0xFFFFFF" bordercolorhover="0xFFFFFF"
borderalpha="0.0" borderalphahover="0.8"
>
<point ath="..." atv="..." />
<point ath="..." atv="..." />
<point ath="..." atv="..." />
...
</hotspot>
- <style name="" .....> /* 핫스팟이나 플러그인에서 사용되는 모든 요소를 정의 가능 */
- <events> 어떤 특정 이벤트발생시 action / function 수행. name=""을 부여하지 않으면 global event가 된다. global event 는 단 하나. 따라서 또다시 정의하면 예전 정의는 사라짐. 새로운 xml, scene을 부르더라도 남아있음. name을 부여하면 독립적인 event가 됨. global event 다음에 호출됨. named event를 사용하면 다른 플러그인이나 xml코드와 간섭받지 않고 수행가능.??
- <action> krpano action 정의. action은 이벤트에서 호출되거나, 다른 actions 이나 외부(Javascript/Plugins)에서 call()하면 부를 수 있음. plugin/hotspot 이벤트에서도 호출. <action> 내에 action()을 여러개 호출 가능. 매개변수 전달 가능. 문자열로 전달. placeholder가 대체됨. %0%은 함수명, %1%은 첫번째 파라미터 등
- <scene>을 이용하면 하나의 xml 파일속에 여러장의 파노라마를 정의할 수 있음. <scene> 속에는 full krpano xml tree를 저장할 수 있음. 외부 xml 파일을 embed하는 것이라고 생각할 수 있음. loadscene()이 호출될 때야 비로서 파싱됨.
<scene name="..." onstart="">... </scene>