摘要:全景圖的播放原理是構建三維場景,在場景中創建柱體,或者球體,立方體等三維物體。將制作好的全景照片作為物體材質貼在虛擬的三維球體表面,或者將轉換過的6張1:1的照片貼在三維立方體表面。將虛擬攝像機放置在球體或立方體的體心位置。鼠標拖動時轉動虛擬攝像機,或者轉動三維體,以此來實現全景圖的播放。對于漫游的實現,通過特定位置添加熱點,點擊熱點后進行切換場景即切換三維球體表面貼圖來實現。
360項目中所使用的KrpanoViewer是一款基于Flash的全景圖播放和漫游軟件。Krpano Viewer的所有功能都是通過對其關聯的xml文件的解析來實現的。其所提供的各種插件也通過配置xml文件來調用。
關鍵詞:三維場景 Krpano 全景漫游 xml配置
一、Krpano功能介紹
Krpano viewer的主程序所使用的XML文件十分簡潔,默認情況下僅可以做到場景的載入。其他所有功能,都以插件的形式實現,而每個插件,既可以在自己的XML文件進行配置,然后供主程序XML文件調用,也可以在主程序的XML文件中直接以
Krpano的所有標簽如下:
標簽:載入圖片。
標簽:定義全景圖中被展示的區域。
標簽:存儲一些數據。
Krpano viewer的功能是十分強大和復雜的,本文只介紹系統所用到的幾個比較重要的標簽。
二、校園全景漫游的具體實現
2.1、將krpano viewer嵌入html網頁
Krpano Viewer提供了swfkrpano.js腳本。使用它可以很方便地將krpano viewer嵌入html網頁,其使用方法如下:
首先引入腳本文件:
接著編寫javascript腳本:
var swf = createswf(\"krpano.swf\", \"krpanoSWFObject\", \"100%\", \"100%\");
swf.addVariable(\"xml\", \"scenes-with-imagemap.xml\");
swf.embed(\"krpanoDIV\");
swf.addVariable(\"xml\", \"krpano.xml\");
此段代碼的說明為:var swf = createswf()表示可以創建要嵌入的對象。
swf.addVariable()表示設置xml文件的路徑。
swf.embed(\"krpanoDIV\")表示將krpano viewer嵌入到html元素里。
2.2、設置初始場景
在配置文件中的根節點
onstart為Krpano定義的事件,其后跟隨的內容為事件的響應腳本。Loadscene函數表示載入場景,其第一參數為場景名稱。Playsound函數是音頻播放插件所提供。其第二個參數為要播放的音頻文件的路徑。
2.3構建各個場景
本系統所有的場景信息都保存在XML文件中。當需要載入某個場景時,系統會查找相應的標簽,讀取配置。在XML配置文件中,使用
set(heading,90);
showtext([b]要顯示的字符[/b], infostyle);
action(activatespot,scene3,190);
playsound(s1,sound/sound.mp3, 0,0);
每個action的name屬性值同
在startscene這個動作中,首先設置了視角進入時的水平位置。
在
本方案使用的是球面全景圖,所以設置type屬性為sphere。在
在每個場景中都有若干熱點與相鄰場景進行互聯,點擊熱點后可以實現場景跳轉。要定義一個熱點,需要使用
2.4設置地圖
在展示性項目中,導航地圖可以使用戶方便地知道當前場景的位置,是必不可少的。本項目導航地圖的實現,是在krpano提供的插件功能和腳本編程語言基礎上自行實現的。地圖,以及地圖上的熱點,都是作為插件存在的。它們的動態特性,是通過腳本編程實現的。設置地圖的代碼如下:
2.5設置地圖上的熱點
為了標明系統所有場景在地圖上的位置和當前場景的位置,需要使用地圖熱點。
每個場景在地圖上具有對應的熱點標出。代表當前場景的熱點,其圖標與其他場景不同,以示區別。同時,點擊某個熱點,也會跳轉到相應的場景中。
這些場景熱點也是通過插件方式實現的。每個熱點都是一個插件,通過設置插件屬性實現其各種功能,其配置如下:
其中name屬性設置插件名,這是一個全局唯一的名稱。url設定默認的供熱點使用的圖片的路徑。parent屬性設置插件的父插件名稱。
2.6設置按鈕
按鈕的作用,通常是點擊后出發事件,進而執行一系列的動作。在krpano中,附帶有預定義的按鈕,可以實現系統預定義的功能。也可以使用krpano強大的插件和腳步編程功能,自定義按鈕。
Krpano預定義的按鈕主要包括:全屏,左轉,右轉,上轉,下轉,全屏,鼠標樣式轉換。其功能的實現也是依靠腳本語句。這些預定義的功能被單獨寫在一個配置文件中,krpano的主配置文件用
在引用預定義的按鈕配置時,要注意預定義的配置文件和配置文件所引用的文件的相對路徑,避免出現錯誤。
在本項目中,除了使用預設的按鈕外,還需要兩個按鈕,一個是聲音播放按鈕,一個是地圖顯示按鈕。采用krpano的插件和腳步功能實現。聲音播放按鈕的代碼為:
Onclick屬性設置了關閉或者打開soundinterface插件。默認為播放,當點擊后聲音停止,并且圖標改變為關閉方式,再次點擊,播放聲音,圖標變為播放方式。Crop屬性的四個值:0|0|50|50,表示在加載的圖片的0,0位置起,寬50高50裁切出一個圖片,供當前使用。也就是說,可以把好幾個圖標整合在一張圖片上,使用時,調用crop腳本函數,提供要切割的起始坐標,要切割圖片的寬高。
地圖按鈕的代碼為:
參考文獻:
[1] 趙慶展,趙欣,常靜. 虛擬校園全景漫游系統的實現[J].石河子大學學報,2006,(1)
[2] 鄔厚民.利用魚眼技術構建全景漫游系統的方法探索[J].電腦知識與術, 2009(18)
[3] 楊琳,趙建民,朱信忠,徐慧英,鄭國強.虛擬校園三維全景漫游技術研究[J].計算機工程與科學,2007,(10)