專利名稱:Delta3D三維場景漫游的鼠標(biāo)操作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種Delta3D三維場景漫游。特別是涉及一種Delta3D三維場景漫游的鼠標(biāo)操作方法。
背景技術(shù):
虛擬現(xiàn)實的核心思想是對現(xiàn)實或超現(xiàn)實世界的模擬和再現(xiàn),是一種隨計算機(jī)技術(shù)、圖形學(xué)技術(shù)等發(fā)展而來的跨學(xué)科技術(shù)。隨著社會信息化進(jìn)程進(jìn)一步加快,人們對于信息的表示方式不再局限文本類的形式,更多是趨向于看的見、摸的著、可交互的、可反饋的形式。虛擬現(xiàn)實技術(shù)正是基于此需求而誕生的。虛擬現(xiàn)實技術(shù)關(guān)鍵在于信息的可視化實現(xiàn),信息的數(shù)據(jù)源形式具有復(fù)雜性和多樣性特點(diǎn),主要包含場景的各種幾何數(shù)據(jù)、外界對場景的觸發(fā)數(shù)據(jù)以及場景的反饋數(shù)據(jù)等。場景的再現(xiàn)過程涉及到計算機(jī)圖形學(xué)、數(shù)據(jù)庫、人工智能、數(shù)值計算和分析等多個學(xué)科領(lǐng)域,研究內(nèi)容包括場景建模、場景圖組織、場景控制和場景漫游等問題。三維引擎是實現(xiàn)虛擬現(xiàn)實建立虛擬場景的基礎(chǔ),建立在良好三維引擎基礎(chǔ)上的場景,可以體現(xiàn)較強(qiáng)的 Immersion、Interactivity、Imagination 特性。Delta3D 正是這樣一款基于C++開發(fā)的三維引擎,其集成了 0SG、0penAL、0DE、CAL3D等工具,實現(xiàn)了虛擬場景建立、物理仿真、用戶交互、動畫設(shè)計等功能?;贒elta3D的場景建立主要有場景建模、文件配置、模型加載、場景初始化四個步驟,如圖1所示。如果建立的虛擬場景沒有任何的交互功能,那么作為一個孤寂的場景,將沒有任何的實際應(yīng)用價值。場景交互中最主要的一種實現(xiàn)方式是場景的漫游。在基于Delta3D建立的場景中,提供了一些基本的場景漫游方式,例如Walk、Fly、Orbit、FPS形式,但是基于上述四種形式的漫游方式并不很好的滿足用戶進(jìn)行場景操作的目的,而且操作起來比較復(fù)雜,其中在進(jìn)行場景的縮放時,需要用戶按住鼠標(biāo)滾輪進(jìn)行鼠標(biāo)的滑動來實現(xiàn),這對于鼠標(biāo)滾輪失效或者場景比較大的情況而言,顯然是不能滿足用戶需求的。另外,在對場景進(jìn)行平移和旋轉(zhuǎn)時,其鼠標(biāo)左右鍵的功能和主流的操作形式又不一致。因此有必要在原有的基礎(chǔ)上,改進(jìn)Delta3D的場景漫游方式。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是,提供一種能夠滿足不同的信號輸入對應(yīng)不同的場景漫游的Delta3D三維場景漫游的鼠標(biāo)操作方法。本發(fā)明所采用的技術(shù)方案是一種Delta3D三維場景漫游的鼠標(biāo)操作方法,包括如下步驟I)場景初始化,包括模型加載和更改鼠標(biāo)與場景漫游方式的對應(yīng)關(guān)系;2)拾取鼠標(biāo)事件,記錄事件類型和調(diào)整數(shù)值當(dāng)鼠標(biāo)產(chǎn)生了觸發(fā)事件,三維引擎將及時拾取該事件,并記錄事件類型和因鼠標(biāo)操作而產(chǎn)生的微小的變化量;
3)進(jìn)行不同漫游方式的三維空間計算,計算出攝像機(jī)新的空間位置和姿態(tài)位置以及攝像機(jī)與場景模型之間的距離;4)繪制出縮放后的場景圖。步驟I)所述的更改鼠標(biāo)與場景漫游方式的對應(yīng)關(guān)系是,首先獲取用于輸入信號進(jìn)行場景交互的鼠標(biāo),實現(xiàn)鼠標(biāo)上的左、右按鍵和滾輪與場景的坐標(biāo)軸的對應(yīng)關(guān)系,具體對應(yīng)關(guān)系包括I)左鍵分別與UpDownMapping和LeftRightMapping進(jìn)行映射,影響場景中的ElevationAxis和AzimuthAxis軸,從而實現(xiàn)利用鼠標(biāo)左鍵旋轉(zhuǎn)場景圖;2)滾輪與UpDownMapping進(jìn)行映射,影響場景中DistanceAxis,從而實現(xiàn)利用鼠標(biāo)滾輪對場景圖距離的調(diào)整,即實現(xiàn)場景圖的放大和縮??;3)右鍵分別與UpDownMapping和LeftRightMapping進(jìn)行映射,影響場景中UpDownTranslationAxis 和 LeftRightTranslationAxis,從而實現(xiàn)利用鼠標(biāo)右鍵對場景的平移的調(diào)整。步驟3)所述的進(jìn)行不同漫游方式的三維空間計算,是依據(jù)事件類型,三維引擎進(jìn)行相應(yīng)的平移、旋轉(zhuǎn)和縮放計算,計算 過程如下distDeIta=deIta^pDistanceMat= (O, distDelta, O)Pos=Pos+M*MatnDistance=pDistance+distDeIta式中delta表示因鼠標(biāo)操作而產(chǎn)生的微小的變化量;distDelta為因delta的變化所產(chǎn)生的調(diào)整量;pDiatanCe為場景中攝像機(jī)與場景模型之間調(diào)整前的距離;Mat是將計算結(jié)果轉(zhuǎn)化為向量形式;Pos為模型在場景中空間位置;M為三維引擎進(jìn)行相應(yīng)的平移或旋轉(zhuǎn)或縮放的矩陣;nDistanCe是更新后的場景中攝像機(jī)與場景模型之間的距離。本發(fā)明的Delta3D三維場景漫游的鼠標(biāo)操作方法,可以很好的解決用戶與虛擬場景交互時所面臨的問題,使其場景漫游操作更人性化,進(jìn)一步提高了場景交互的效率。本發(fā)明雖然是基于Delta3D的漫游方式的改進(jìn),但是改進(jìn)過程的思想可被大多數(shù)的三維引擎采用。通過對Delta3D的漫游方式的改進(jìn),很好的滿足了用戶操作虛擬場景的客觀需求,提高了操作的便利性和效率。
圖1是基于Delta3D的模型建立流程;圖2是本發(fā)明的Delta3D三維場景漫游的鼠標(biāo)操作方法的流程圖。
具體實施例方式下面結(jié)合實施例和附圖對本發(fā)明的Delta3D三維場景漫游的鼠標(biāo)操作方法做出詳細(xì)說明。本發(fā)明的Delta3D三維場景漫游的鼠標(biāo)操作方法,涉及兩個方面,一是硬件設(shè)備與場景交互的映射關(guān)系,即滿足不同的信號輸入對應(yīng)不同的場景漫游功能;另一方面是映射關(guān)系的計算,即對不同的輸入信號的三維計算。
對于鼠標(biāo)輸入而言,映射關(guān)系滿足一下三點(diǎn)I)鼠標(biāo)右鍵實現(xiàn)場景的平移;2)鼠標(biāo)滾輪實現(xiàn)場景的放大和縮??;3)鼠標(biāo)左鍵對應(yīng)于場景的旋轉(zhuǎn)。對于其他形式的信號輸入,應(yīng)可以實現(xiàn)用戶自定義模式,例如,鍵盤按鍵的自定義或操作手柄的自定義等。場景漫游除了上述映射關(guān)系的確定外,最主要的是現(xiàn)實場景的三維空間計算。三維空間的計算實質(zhì)是場景中各個坐標(biāo)系下的計算。在虛擬場景中涉及三種坐標(biāo)系,世界坐標(biāo)系是絕對坐標(biāo)系,是靜止不動,是一種參考坐標(biāo)系。物體坐標(biāo)系是場景模型自身的坐標(biāo)系,為了方便模型的構(gòu)建而建立的,隨物體的移動而移動。慣性坐標(biāo)系是一種為方便計算而人為設(shè)定的坐標(biāo)系。本發(fā)明的Delta3D三維場景漫游的鼠標(biāo)操作方法,具體包括如下步驟I)場景初始化,包括模型加載和更改鼠標(biāo)與場景漫游方式的對應(yīng)關(guān)系所述的更改鼠標(biāo)與場景漫游方式的對應(yīng)關(guān)系是,首先獲取用于輸入信號進(jìn)行場景交互的鼠標(biāo),實現(xiàn)鼠標(biāo)上的左、右按鍵和滾輪與場景的坐標(biāo)軸的對應(yīng)關(guān)系,具體對應(yīng)關(guān)系包括(I)左鍵分別與UpDownMapping和LeftRightMapping進(jìn)行映射,影響場景中的ElevationAxis和AzimuthAxis軸,從而實現(xiàn)利用鼠標(biāo)左鍵旋轉(zhuǎn)場景圖;(2)滾輪與UpDo wnMapping進(jìn)行映射,影響場景中DistanceAxis,從而實現(xiàn)利用鼠標(biāo)滾輪對場景圖距離的調(diào)整,即實現(xiàn)場景圖的放大和縮?。?3)右鍵分別與UpDownMapping和LeftRightMapping進(jìn)行映射,影響場景中UpDownTranslationAxis 和 LeftRightTranslationAxis,從而實現(xiàn)利用鼠標(biāo)右鍵對場景的平移的調(diào)整。2)拾取鼠標(biāo)事件,記錄事件類型和調(diào)整數(shù)值當(dāng)鼠標(biāo)產(chǎn)生了觸發(fā)事件,三維引擎將及時拾取該事件,并記錄事件類型和因鼠標(biāo)操作而產(chǎn)生的微小的變化量;3)進(jìn)行不同漫游方式的三維空間計算,計算出攝像機(jī)新的空間位置和姿態(tài)位置以及攝像機(jī)與場景模型之間的距離所述的進(jìn)行不同漫游方式的三維空間計算,是依據(jù)事件類型,三維引擎進(jìn)行相應(yīng)的平移、旋轉(zhuǎn)和縮放計算,為統(tǒng)一以及便于場景的三維計算,引入齊次坐標(biāo)。引入齊次坐標(biāo)后,場景的各種三維變換均可對應(yīng)于三種變換矩陣或變換矩陣的組合。計算過程如下distDeIta=deIta^pDistance(I)Mat= (O, distDelta, O)(2)Pos=Pos+M*Mat(3)nDistance=pDistance+distDeIta (4)式中delta表示因鼠標(biāo)操作而產(chǎn)生的微小的變化量;distDelta為因delta的變化所產(chǎn)生的調(diào)整量;pDiatanCe為場景中攝像機(jī)與場景模型之間調(diào)整前的距離;Mat是將計算結(jié)果轉(zhuǎn)化為向量形式;Pos為模型在場景中空間位置;M代表三維引擎進(jìn)行相應(yīng)的平移或旋轉(zhuǎn)或縮放的矩陣,這三種變換矩陣分別為平移變換矩陣Mt、縮放變換矩陣Ms和旋轉(zhuǎn)變換矩陣凡。;nDistanCe是更新后的場景中攝像機(jī)與場景模型之間的距離。利用變換矩陣很好的解決了鼠標(biāo)操作的對應(yīng)關(guān)系,實現(xiàn)了符合常規(guī)形式的場景漫游方式,另外,方便了坐標(biāo)在計算機(jī)中存儲,提高了計算三維場景圖的準(zhǔn)確性。4)繪制出縮放后的場景圖。本發(fā)明的Delta3D三維場景漫游的鼠標(biāo)操作方法,在第一階段明確了輸入信號與漫游方式的映射關(guān)系,為了保證符合其他信號輸入形式,實現(xiàn)了用戶自定義對應(yīng)關(guān)系,保證了下一步漫游方式實現(xiàn)的邏輯的正確性。第二階段,在改進(jìn)漫游方式的過程中,引入了齊次坐標(biāo)。通過引入齊次坐標(biāo),將場景變換中三維空間的計算,統(tǒng)一為矩陣的計算形式,通過輸入信號的連續(xù)性微量的變化,結(jié)合場景中原模型的幾何位置,利用矩陣相乘,快速的得到了變換后的場景圖。另外,為避免場景漫游過程中出現(xiàn)場景模型脫離攝像機(jī)范圍和場景圖在放大或縮小的邊界出現(xiàn)抖動現(xiàn)象,可根據(jù)需要設(shè)定場景攝像機(jī)的投影范圍和場景圖中最大或最小范圍的預(yù)處理。在處理基于Delta3D的漫游方式中,應(yīng)用本發(fā)明所提出的改進(jìn)方法,可以很好的解決用戶與虛擬場景交互時所面臨的問題,使其場景漫游操作更人性化,進(jìn)一步提高了場景交互的效率。
權(quán)利要求
1.一種Delta3D三維場景漫游的鼠標(biāo)操作方法,其特征在于,包括如下步驟1)場景初始化,包括模型加載和更改鼠標(biāo)與場景漫游方式的對應(yīng)關(guān)系;2)拾取鼠標(biāo)事件,記錄事件類型和調(diào)整數(shù)值當(dāng)鼠標(biāo)產(chǎn)生了觸發(fā)事件,三維引擎將及時拾取該事件,并記錄事件類型和因鼠標(biāo)操作而產(chǎn)生的微小的變化量;3)進(jìn)行不同漫游方式的三維空間計算,計算出攝像機(jī)新的空間位置和姿態(tài)位置以及攝像機(jī)與場景模型之間的距離;4)繪制出縮放后的場景圖。
2.根據(jù)權(quán)利要求1所述的Delta3D三維場景漫游的鼠標(biāo)操作方法,其特征在于,步驟I)所述的更改鼠標(biāo)與場景漫游方式的對應(yīng)關(guān)系是,首先獲取用于輸入信號進(jìn)行場景交互的鼠標(biāo),實現(xiàn)鼠標(biāo)上的左、右按鍵和滾輪與場景的坐標(biāo)軸的對應(yīng)關(guān)系,具體對應(yīng)關(guān)系包括1)左鍵分別與UpDownMapping和LeftRightMapping進(jìn)行映射,影響場景中的 ElevationAxis和AzimuthAxis軸,從而實現(xiàn)利用鼠標(biāo)左鍵旋轉(zhuǎn)場景圖;2)滾輪與UpDownMapping進(jìn)行映射,影響場景中DistanceAxis,從而實現(xiàn)利用鼠標(biāo)滾輪對場景圖距離的調(diào)整,即實現(xiàn)場景圖的放大和縮小;3)右鍵分別與UpDownMapping和LeftRightMapping進(jìn)行映射,影響場景中 UpDownTranslationAxis 和 LeftRightTranslationAxis,從而實現(xiàn)利用鼠標(biāo)右鍵對場景的平移的調(diào)整。
3.根據(jù)權(quán)利要求1所述的Delta3D三維場景漫游的鼠標(biāo)操作方法,其特征在于,步驟3)所述的進(jìn)行不同漫游方式的三維空間計算,是依據(jù)事件類型,三維引擎進(jìn)行相應(yīng)的平移、 旋轉(zhuǎn)和縮放計算,計算過程如下distDeIta=deIta^pDistance(I)Mat= (O, distDelta, O)(2)Pos=Pos+M*Mat(3)nDistance=pDistance+distDeIta (4)式中delta表示因鼠標(biāo)操作而產(chǎn)生的微小的變化量;distDelta為因delta的變化所產(chǎn)生的調(diào)整量;pDiatanCe為場景中攝像機(jī)與場景模型之間調(diào)整前的距離;Mat是將計算結(jié)果轉(zhuǎn)化為向量形式;Pos為模型在場景中空間位置…為三維引擎進(jìn)行相應(yīng)的平移或旋轉(zhuǎn)或縮放的矩陣;nDistanCe是更新后的場景中攝像機(jī)與場景模型之間的距離。
全文摘要
一種Delta3D三維場景漫游的鼠標(biāo)操作方法,包括場景初始化,包括模型加載和更改鼠標(biāo)與場景漫游方式的對應(yīng)關(guān)系;拾取鼠標(biāo)事件,記錄事件類型和調(diào)整數(shù)值,當(dāng)鼠標(biāo)產(chǎn)生了觸發(fā)事件,三維引擎將及時拾取該事件,并記錄事件類型和因鼠標(biāo)操作而產(chǎn)生的微小的變化量;進(jìn)行不同漫游方式的三維空間計算,計算出攝像機(jī)新的空間位置和姿態(tài)位置以及攝像機(jī)與場景模型之間的距離;繪制出縮放后的場景圖。本發(fā)明可以很好的解決用戶與虛擬場景交互時所面臨的問題,使其場景漫游操作更人性化,進(jìn)一步提高了場景交互的效率。本發(fā)明通過對Delta3D的漫游方式的改進(jìn),很好的滿足了用戶操作虛擬場景的客觀需求,提高了操作的便利性和效率。
文檔編號G06F9/44GK103049266SQ20121054983
公開日2013年4月17日 申請日期2012年12月17日 優(yōu)先權(quán)日2012年12月17日
發(fā)明者劉江, 常超 申請人:天津大學(xué)