亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        虛擬現(xiàn)實(shí)中基于Herm ite曲線實(shí)現(xiàn)固定漫游路徑算法與優(yōu)化

        2014-10-16 08:53:58裴玉劉桂陽(yáng)師翊
        關(guān)鍵詞:折線漫游小球

        裴玉,劉桂陽(yáng),師翊

        (黑龍江八一農(nóng)墾大學(xué)信息技術(shù)學(xué)院,大慶163319)

        隨著社會(huì)的進(jìn)步,虛擬現(xiàn)實(shí)技術(shù)在計(jì)算機(jī)領(lǐng)域已經(jīng)得到了廣泛的發(fā)展,它能夠?yàn)槭褂谜咛峁╆P(guān)于視覺(jué)、聽(tīng)覺(jué)、觸覺(jué)等感官的模擬,使用戶不用親臨現(xiàn)場(chǎng)就有如同身臨其境一般。近年來(lái),虛擬現(xiàn)實(shí)技術(shù)在城市規(guī)劃、工程設(shè)計(jì)、醫(yī)學(xué)、文化傳播、旅游、教育等領(lǐng)域有著極為廣泛的應(yīng)用[1]。可以說(shuō),虛擬現(xiàn)實(shí)技術(shù)的綜合應(yīng)用,具有廣闊的發(fā)展前景和良好的社會(huì)、經(jīng)濟(jì)效益。虛擬環(huán)境漫游是虛擬現(xiàn)實(shí)應(yīng)用的基本功能之一,構(gòu)造一個(gè)虛擬環(huán)境漫游系統(tǒng),就是利用高性的計(jì)算機(jī)軟硬件創(chuàng)建參與者具有身臨其境的人機(jī)交互能力、有助于啟發(fā)構(gòu)思的信息環(huán)境[2]。Unity3D作為一種三維虛擬現(xiàn)實(shí)游戲平臺(tái),是一個(gè)全面整合的專業(yè)游戲引擎。它可以充分、實(shí)時(shí)的處理大量的三維模型,使用戶在三維場(chǎng)景中真實(shí)的感受到被仿真系統(tǒng)運(yùn)行中的動(dòng)態(tài)變化。

        在三維場(chǎng)景中,漫游是一個(gè)重要的表現(xiàn)手法。漫游[3]包括自主漫游、固定路徑漫游。固定漫游控制路徑既可以用于到相機(jī)漫游,也可以用于其他虛擬對(duì)象的自動(dòng)運(yùn)動(dòng)。如何確定這些路徑,在這方面,技術(shù)相對(duì)已經(jīng)比較成熟,多數(shù)是利用現(xiàn)成的曲線計(jì)算,對(duì)于普通的二次曲線是可以實(shí)現(xiàn)平滑的過(guò)程,但是往往這是一個(gè)比較復(fù)雜的過(guò)程,會(huì)占用大量的時(shí)間。在交互狀態(tài)下如何去設(shè)置控制點(diǎn),不是很方便,只能用樣條曲線。樣條曲線的特點(diǎn)是由多個(gè)控制點(diǎn)進(jìn)行擬合的,它的控制點(diǎn)是關(guān)鍵,如何在實(shí)際問(wèn)題中動(dòng)態(tài)的實(shí)現(xiàn)這些控制點(diǎn)是一個(gè)難題,而且在控制點(diǎn)中,找到中間某個(gè)差值,也需要用控制點(diǎn)計(jì)算,每步大量的運(yùn)算,給實(shí)時(shí)運(yùn)行造成很大的負(fù)擔(dān)[4]。Hermite曲線已經(jīng)解決了這個(gè)問(wèn)題,但是它的缺陷是不能在交互狀態(tài)下去控制,而且實(shí)時(shí)去每一幀進(jìn)行計(jì)算,會(huì)造成大量的資源浪費(fèi),影響大量的時(shí)間。此研究是在Unity3D場(chǎng)景下用交互的方法,實(shí)現(xiàn)了Hermite曲線的動(dòng)態(tài)控制節(jié)點(diǎn),將現(xiàn)實(shí)中的路徑通過(guò)Hermite曲線原理轉(zhuǎn)化成分段的樣條曲線,實(shí)時(shí)生成顯示狀態(tài),給用戶提供了一個(gè)可參考的路徑,最終將路徑固化成具體的節(jié)點(diǎn)代碼,進(jìn)行優(yōu)化。

        1 漫游路徑曲線的實(shí)現(xiàn)原理

        1.1 Herm ite曲線實(shí)現(xiàn)原理

        Hermite曲線已經(jīng)研究成熟,它可以直觀的描述平滑曲線的構(gòu)建。假設(shè)有n個(gè)點(diǎn),分別為P0,……Pi-1,三次Hermite曲線可以由起始點(diǎn)Pi和結(jié)束點(diǎn)Pi+2,以及起始切線Ti和結(jié)束切線Ti+2來(lái)定義[5]。三次Hermite曲線插值公式P(t)可以表示為(其中t∈[0,1]):

        P(t)也稱為Hermite曲線段或者三次樣條段,該曲線段滿足下列等式

        Hermite曲線就是通過(guò)曲線的起點(diǎn)、終點(diǎn)、起點(diǎn)切向量和終點(diǎn)切向量來(lái)確定曲線的。

        圖1 Herm ite曲線Fig.1 Hermite curve

        圖1 所示是Hermite曲線及其控制點(diǎn)的示意圖。改變這四個(gè)參數(shù),就可以控制Hermite曲線的形狀。要實(shí)現(xiàn)物體做連續(xù)的曲線運(yùn)動(dòng),首先離散化該曲線,得到分布在這條曲線上的點(diǎn)。為了使物體運(yùn)動(dòng)平滑,那么相鄰兩點(diǎn)的間隔距離不能太大,否則物體在運(yùn)動(dòng)過(guò)程中會(huì)出現(xiàn)抖動(dòng)的現(xiàn)象[6]。在計(jì)算機(jī)圖形學(xué)中,利用計(jì)算得到離散化的點(diǎn)用直線連接起來(lái)得到一條近似曲線來(lái)繪制Hermite曲線。如果在每一幀中使用物體依次放到這些離散化的點(diǎn)的上,相鄰兩點(diǎn)的間隔距離足夠消失,就可以實(shí)現(xiàn)物體沿Hermite曲線的平滑運(yùn)動(dòng)。

        1.2 路徑的生成原理

        假設(shè)Hermite曲線上有已知的n個(gè)點(diǎn),t是系統(tǒng)時(shí)間,從第一幀開(kāi)始從0無(wú)限變大。當(dāng)前時(shí)間為t時(shí),需要計(jì)算出填充于兩個(gè)已知點(diǎn)之間點(diǎn)的坐標(biāo),這些點(diǎn)連續(xù)成為場(chǎng)景中的Hermite曲線,而坐標(biāo)位置是關(guān)于t的參數(shù)方程(t∈[0,1])。在實(shí)際運(yùn)行中,要求每?jī)蓚€(gè)已知點(diǎn)之間的填充點(diǎn),需要將系統(tǒng)時(shí)間t轉(zhuǎn)化到[0,1],具體做法為:(當(dāng)前時(shí)間-起點(diǎn)時(shí)間)/(末點(diǎn)時(shí)間-起點(diǎn)時(shí)間),將算出的當(dāng)前時(shí)間代入?yún)?shù)方程中,即可求出每個(gè)填充點(diǎn)的坐標(biāo)。

        在Hermite曲線中,相鄰已知點(diǎn)P1和P2的生成時(shí)間為T(mén)imeP1=2 s,TimeP2=4 s,如圖2所示。

        圖2 曲線示意圖Fig.2 Schematic diagram of curves

        若求在3.2 s時(shí)生成的點(diǎn)的坐標(biāo),應(yīng)先求當(dāng)前時(shí)間t=(3.2-2)/(4-2)=0.6 s,將t=0.6,代入?yún)?shù)方程

        即可求出在3.2 s時(shí)生成的點(diǎn)的坐標(biāo)。

        2 交互實(shí)現(xiàn)曲線

        2.1 交互實(shí)現(xiàn)曲線的方法

        在Hermite曲線中默認(rèn)4個(gè)點(diǎn),實(shí)際工作中有若干個(gè)點(diǎn),如何把現(xiàn)實(shí)中的多個(gè)節(jié)點(diǎn)轉(zhuǎn)化成Hermite中4個(gè)點(diǎn)?假設(shè)有n個(gè)點(diǎn),要在這n個(gè)點(diǎn)中取出相鄰4個(gè)點(diǎn),求出2個(gè)點(diǎn)的切向量,用2個(gè)點(diǎn)的坐標(biāo)和這2個(gè)點(diǎn)的切向量確定填充點(diǎn)的坐標(biāo)。將所有已知點(diǎn)的坐標(biāo)放在一個(gè)數(shù)組里,初始化每個(gè)點(diǎn)對(duì)應(yīng)的時(shí)間、位置,外部輸入一個(gè)時(shí)間,根據(jù)時(shí)間就能返回節(jié)點(diǎn)所對(duì)應(yīng)的差值,根據(jù)差值就能把一個(gè)個(gè)點(diǎn)連接起來(lái)。在這里,對(duì)于路徑漫游,要有一個(gè)完整的控制節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)坐標(biāo)不是固定的,需要有個(gè)可視的編輯界面,用Unity3D內(nèi)置的小球工具,可視的編輯它,每一個(gè)小球就是一個(gè)控制節(jié)點(diǎn),它只是一個(gè)輔助參考,最終它不被顯示。項(xiàng)目完成的算法是利用一個(gè)名為“path”的交結(jié)點(diǎn),在下面建立若干個(gè)小球?qū)ο螅總€(gè)小球作為Hermite曲線的一個(gè)控制點(diǎn)。如圖3所示

        圖3 建立控制點(diǎn)Fig.2 Establishmentof control point

        通過(guò)小球代替控制節(jié)點(diǎn),實(shí)現(xiàn)了一個(gè)動(dòng)態(tài)顯示,利用Update函數(shù),通過(guò)插值坐標(biāo),可以在運(yùn)行過(guò)程中保證相機(jī)沿著小球來(lái)運(yùn)動(dòng)。為了使小球能夠真正的達(dá)到和曲線實(shí)時(shí)調(diào)整的目的,用了畫(huà)線的算法,理論的線是完全封閉連續(xù)的,由無(wú)數(shù)個(gè)點(diǎn)組成,而實(shí)際中都是由離散的點(diǎn)組成的,這是計(jì)算機(jī)本身的特點(diǎn)。用分段的折線段的方法來(lái)畫(huà)線,其中折線段的每個(gè)點(diǎn)就是固化的坐標(biāo),根據(jù)折線段的每個(gè)位置而去確定固化的個(gè)數(shù),段數(shù)分的越少,折線段就越生硬,但相對(duì)浪費(fèi)的資源越少,最后固化這些點(diǎn),把每個(gè)折線段的點(diǎn)存起來(lái)。在折線段編輯過(guò)程中,通過(guò)折線段,連成一個(gè)近似的封閉的方法,這里的折線段的段數(shù)是可以動(dòng)態(tài)調(diào)節(jié)的。實(shí)時(shí)的調(diào)整折線段的段數(shù),就可以觀察到它的平滑程度,這樣實(shí)現(xiàn)了節(jié)點(diǎn)的控制個(gè)數(shù)以及算法的復(fù)雜程度,達(dá)到一個(gè)優(yōu)化的解決方法。

        為了控制曲線畫(huà)線,需要控制一個(gè)點(diǎn),取控制點(diǎn)小球的坐標(biāo),將坐標(biāo)存在數(shù)組里。通過(guò)當(dāng)前用到的4個(gè)控制點(diǎn),利用GetHermiteAtTime函數(shù)將坐標(biāo)交給參數(shù)方程,通過(guò)運(yùn)算算出當(dāng)前坐標(biāo),根據(jù)坐標(biāo)最終畫(huà)出具體的線。那么當(dāng)調(diào)節(jié)小球的時(shí)候,節(jié)點(diǎn)都隨著變化,這樣達(dá)到了直觀形象的觀察路徑的方法。為了方便用戶能看到行走的路徑,利用OnDrawGizmos函數(shù),調(diào)用Hermite曲線公式,在OnDrawGizmos函數(shù)中,每步通過(guò)時(shí)間做參數(shù),找到當(dāng)前的時(shí)間點(diǎn),根據(jù)當(dāng)前的時(shí)間點(diǎn)得到插值坐標(biāo),自動(dòng)生成隨著小球變化的藍(lán)色路徑,用戶在編輯模式下就可看到曲線的變化。具體參數(shù)設(shè)置如圖4所示。

        圖4 算法參數(shù)設(shè)置Fig.4 Algorithm parameter settings

        具體的參數(shù)說(shuō)明如表1所示:

        表1 算法中參數(shù)的功能說(shuō)明Table1 Function description of parameters in the algorithm

        用戶可以在設(shè)置模式下根據(jù)要求增加和減少小球即控制點(diǎn)的數(shù)量,來(lái)控制曲線的光滑程度。通過(guò)Line Cout段數(shù)決定了曲線的彎折程度,段數(shù)越多,運(yùn)行起來(lái)相對(duì)會(huì)比較慢,曲線會(huì)比較平滑,反之,段數(shù)越少,生成的曲線會(huì)比較生硬,最終根據(jù)需求生成用戶滿意的曲線。圖5中A、B分別為L(zhǎng)ine Cout段數(shù)為10與100的對(duì)比效果。

        圖5 Line Cout段數(shù)對(duì)比圖Fig.5 Number comparison chart

        2.2 Animaiton編輯器與交互實(shí)現(xiàn)曲線的對(duì)比優(yōu)勢(shì)

        在Unity3D環(huán)境中,系統(tǒng)提供的Animation編輯器可以實(shí)現(xiàn)固定漫游路徑。就是將對(duì)象在相應(yīng)時(shí)間、相應(yīng)位置進(jìn)行關(guān)鍵幀的設(shè)置。但是在編輯狀態(tài)下,對(duì)象的每個(gè)關(guān)鍵幀位置并沒(méi)有相應(yīng)的參考標(biāo)識(shí),只能依靠估量的方法進(jìn)行位置的設(shè)置,而且在漫游過(guò)程中,對(duì)象的朝向始終朝著一個(gè)方向,不能多視角的進(jìn)行游覽。如圖6所示。

        圖6 關(guān)鍵幀設(shè)置Fig.6 Key Frames Settings

        利用交互實(shí)現(xiàn)曲線的方法可以在編輯狀態(tài)下看到生成的藍(lán)色漫游路徑,路徑生成后可以隨時(shí)調(diào)整控制小球的數(shù)量和位置來(lái)改變生成的漫游路徑,具有實(shí)時(shí)化、可視化的特點(diǎn)。在漫游的過(guò)程中,攝像機(jī)的朝向可以隨著鼠標(biāo)方向的變化而變化,根據(jù)用戶的意愿調(diào)整視角,使漫游方式更加人性化。相比較Animation編輯器生成漫游路徑的方法,此方法步驟簡(jiǎn)便,生成的漫游路徑十分平滑并且漫游方式更加符合用戶的操作習(xí)慣。生成效果如圖7所示。

        圖7 交互實(shí)現(xiàn)曲線Fig.7 Interactive curve

        3 路徑優(yōu)化算法

        生成路徑時(shí),如果在每次運(yùn)行時(shí)在每一幀都重新進(jìn)行矩陣運(yùn)算來(lái)確定相機(jī)的位置,將大量占用計(jì)算機(jī)的系統(tǒng)資源,為了使程序運(yùn)行更快,運(yùn)行一次后,本項(xiàng)目將這一路徑曲線進(jìn)行插值離散化,將生成的曲線坐標(biāo)保存到數(shù)組中,相機(jī)在漫游時(shí)完全脫離原始的控制點(diǎn)及矩陣運(yùn)算,直接取數(shù)組中的坐標(biāo)即可,這種將路徑“固化”的方法能夠大量節(jié)約虛擬漫游的系統(tǒng)資源。

        用少量的球?qū)崿F(xiàn)平滑的曲線,平滑的曲線由多條折線段構(gòu)成,根據(jù)微積分的原理,折線段越多,曲線就越平滑,曲線的具體段數(shù)可由開(kāi)發(fā)者根據(jù)場(chǎng)景大小自行設(shè)置。為了保證攝像機(jī)平滑運(yùn)行,在每一幀調(diào)用Update函數(shù),在函數(shù)中連接每一段折線段,將每段折線段生成的插值坐標(biāo)賦值給攝像機(jī),這樣攝像機(jī)的運(yùn)動(dòng)時(shí)間與每一幀的時(shí)間細(xì)化同步,達(dá)到了平滑運(yùn)動(dòng)的目的。如此,攝像機(jī)的運(yùn)動(dòng)完全脫離Hermite曲線,這樣就達(dá)到了優(yōu)化算法的目的。如果開(kāi)發(fā)者想改變控制小球的位置和數(shù)量生成新的Hermite曲線,要使改變生效,需要執(zhí)行Savecode函數(shù),Savecode函數(shù)的運(yùn)行效果是把存有原有坐標(biāo)的文本文件刪除,生成存有新的Hermite曲線坐標(biāo)的文件,程序再次運(yùn)行時(shí)會(huì)調(diào)用新的坐標(biāo),從而使攝像機(jī)按照新的路徑漫游。具體實(shí)現(xiàn)流程如圖8所示。

        圖8 流程圖Fig.8 Flow diagram

        4 結(jié)論

        通過(guò)實(shí)驗(yàn)算法,利用路徑的生成以及固化技術(shù),實(shí)現(xiàn)了固定漫游路徑。在虛擬景區(qū)展示中,用戶根據(jù)圖片導(dǎo)航[7]提示信息進(jìn)入漫游界面,按照指定的路線,對(duì)重要景點(diǎn)進(jìn)行游覽,不僅方便于用戶操作,而且不會(huì)遺漏欣賞到任何一個(gè)景點(diǎn)。這種算法也可以應(yīng)用到游戲、旅游、教育、建筑等行業(yè)的虛擬場(chǎng)景中,如怪獸的自動(dòng)行走,鳥(niǎo)的飛翔,車輛的自動(dòng)行走,宇宙星體的運(yùn)動(dòng)等,對(duì)于今后虛擬行業(yè)的發(fā)展,具有良好的應(yīng)用價(jià)值。

        [1]徐誠(chéng).虛擬校園漫游系統(tǒng)的研究[D].武漢:華中師范大學(xué),2006.

        [2]李龍,向明尚,劉賢梅.虛擬校園環(huán)境的構(gòu)造和漫游引擎的實(shí)現(xiàn)[J].大慶石油學(xué)院學(xué)報(bào),2003,27(2):56-58.

        [3]陳勇,馬純永,陳戈.基于VC/OpenGL的虛擬海大校園導(dǎo)航系統(tǒng)[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2007,19(2):263-266.

        [4]孫英慧,孫英娟,楊柳.基于Hermite算法的曲線擬合[J].長(zhǎng)春師范學(xué)院學(xué)報(bào):自然科學(xué)版,2009,4(2):8-12.

        [5]Tomas A M,Eric H.實(shí)時(shí)計(jì)算機(jī)圖形學(xué)[M].普建濤,譯.2版.北京:北京大學(xué)出版社,2004.

        [6]馮洪奎,鮑勁松,金燁,等.在視景仿真中用Hermite曲線控制物體運(yùn)動(dòng)[J].系統(tǒng)仿真學(xué)報(bào),2008,5(4):1224-1228.

        [7]劉桂陽(yáng).大豆精準(zhǔn)生產(chǎn)網(wǎng)絡(luò)信息系統(tǒng)平臺(tái)設(shè)計(jì)[J].黑龍江八一農(nóng)墾大學(xué)學(xué)報(bào),2008,20(5):82-86.

        猜你喜歡
        折線漫游小球
        折線統(tǒng)計(jì)圖
        聯(lián)想等效,拓展建模——以“帶電小球在等效場(chǎng)中做圓周運(yùn)動(dòng)”為例
        小球進(jìn)洞了
        小球別跑
        小球別跑
        家教世界(2020年10期)2020-06-01 11:49:26
        折線的舞臺(tái)——談含絕對(duì)值的一次函數(shù)的圖象
        霹靂漫游堂
        折線
        NASA漫游記
        混凝土折線塔斜拉橋錨固區(qū)分析
        爱情岛永久地址www成人| 日本久久精品视频免费| 国产亚洲欧洲aⅴ综合一区| 精品深夜av无码一区二区老年| 亚洲一区综合精品狠狠爱| 中文字幕无线精品亚洲乱码一区| 亚洲国产精品成人av在线不卡 | 国产一区二区资源在线观看| 婷婷五月深深久久精品| 日本乱人伦在线观看| 蜜桃在线播放免费一区二区三区| 亚洲av色香蕉一区二区三区av| 秋霞在线视频| 欧美巨大xxxx做受中文字幕| 国产极品视觉盛宴在线观看| 99久久婷婷亚洲综合国产| 成在线人av免费无码高潮喷水 | 日韩精品人妻一区二区三区蜜桃臀| 婷婷精品国产亚洲av麻豆不片| 野花社区视频www官网| 日本a在线免费观看| 国产一区二区三区四区在线视频| 超碰色偷偷男人的天堂| 在线观看av永久免费| 日本一区二区三区小视频| 97超碰精品成人国产| 孕妇特级毛片ww无码内射| 国产精品无码片在线观看| 激情偷拍视频一区二区| 国产在线无码不卡影视影院| 乱人伦中文字幕成人网站在线| 国产精品一区二区午夜久久| 日本黑人乱偷人妻在线播放 | 国产a三级久久精品| 看黄色亚洲看黄色亚洲| 伊人久久大香线蕉av五月| 蜜桃麻豆www久久囤产精品| 国产中文字幕乱码在线| 亚洲中文字幕一区二区在线| 无码va在线观看| 麻豆五月婷婷|