• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Unity3D的虛擬校園漫游的設(shè)計(jì)與實(shí)現(xiàn)

      2015-01-08 03:30:42王彩玲劉瑞香
      科技視界 2015年7期
      關(guān)鍵詞:漫游客戶端動(dòng)畫

      王彩玲 劉瑞香 宋 釗

      (西安石油大學(xué)計(jì)算機(jī)學(xué)院,陜西 西安 710065)

      0 引言

      目前,虛擬現(xiàn)實(shí)技術(shù)已經(jīng)成為計(jì)算機(jī)技術(shù)中研究,開發(fā)和應(yīng)用的熱點(diǎn),廣泛的應(yīng)用于教育[1-2]、醫(yī)療[3]、建筑、工業(yè)設(shè)計(jì)[4-5]、產(chǎn)品展示等各個(gè)領(lǐng)域。虛擬校園社區(qū)實(shí)現(xiàn)了對(duì)校園三維景觀和教學(xué)環(huán)境的數(shù)字化和虛擬化。將學(xué)校風(fēng)光用虛擬仿真實(shí)現(xiàn),既可以為學(xué)校樹立良好的形象,讓來訪者足不出戶就可以身歷其境的感受到真實(shí)的校園實(shí)景和有關(guān)介紹信息;還可以作為校園規(guī)劃的輔助工具,提高校園管理的現(xiàn)代化水平[6-7]。

      虛擬校園社區(qū)可以提供三維虛擬環(huán)境,用于支持對(duì)現(xiàn)實(shí)大學(xué)的資源管理、環(huán)境規(guī)劃、學(xué)校發(fā)展和遠(yuǎn)程訪問等。是校園景觀和教學(xué)環(huán)境在計(jì)算機(jī)中的虛擬再現(xiàn)。它利用地理信息技術(shù)、虛擬現(xiàn)實(shí)技術(shù)、計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)等高新技術(shù),實(shí)現(xiàn)對(duì)真實(shí)校園環(huán)境中的三維景觀和教學(xué)環(huán)境的數(shù)字化和虛擬化。到那時(shí),世界各地的人們不必親臨現(xiàn)場(chǎng),只需在網(wǎng)上就能暢游其間,方便人們隨時(shí)隨地了解校園的情況。

      虛擬校園為師生們提供了非常便利和快捷的交流,同時(shí)完善的虛擬校園系統(tǒng)集學(xué)習(xí)、工作、娛樂、生活為一體,增加了師生之間交流的趣味性,有利于師生之間的良好溝通。虛擬校園社區(qū)以網(wǎng)絡(luò)為基礎(chǔ),利用先進(jìn)的信息化手段和先進(jìn)的計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)、虛擬現(xiàn)實(shí)技術(shù),實(shí)現(xiàn)學(xué)校與教學(xué)、科研、管理和生活服務(wù)有關(guān)的所有信息資源進(jìn)行全面的數(shù)字化。把學(xué)校建設(shè)成面向校內(nèi)外,也面向社會(huì)的一個(gè)超越時(shí)間、超越空間的虛擬校園社區(qū),提高傳統(tǒng)校園的效率,擴(kuò)展傳統(tǒng)校園的功能。最終實(shí)現(xiàn)教育過程的全面信息化,從而達(dá)到提高教育管理水平的目的。虛擬校園技術(shù)必將成為今后校園信息化發(fā)展方向的主流,而基于網(wǎng)絡(luò)的大規(guī)模虛擬校園漫游將成為研究的新熱點(diǎn).本系統(tǒng)以u(píng)nity3d作為開發(fā)平臺(tái),結(jié)合AUTOCAD規(guī)劃總平面圖[8];利用AutoCAD、3DMAX、Photoshop、Unity3D等軟件實(shí)現(xiàn)了某高校虛擬校園設(shè)計(jì),該虛擬校園場(chǎng)景具有良好的沉浸感,通過網(wǎng)上發(fā)布,測(cè)試了其流暢性,可以作為該學(xué)校的數(shù)字解說平臺(tái)使用。

      1 三維虛擬校園漫游的總體設(shè)計(jì)

      1.1 虛擬校園漫游開發(fā)總體框架

      虛擬校園的設(shè)計(jì)總體框架如圖1所示。

      如圖1所示,首先,基于通過測(cè)量、觀察、相機(jī)記錄等方式獲取校園地理信息數(shù)據(jù)。包括校園建筑平面圖AutoCAD和校園建筑鳥瞰圖[9-10],以及花草、樹木、道路的具體數(shù)據(jù)及信息。

      然后,使用3d建模軟件例如maya 3dmax等專業(yè)建模軟件,制作三維數(shù)字模型。本系統(tǒng)使用的是最為流行的3dmax對(duì)校園建筑模型進(jìn)行加工和渲染。從而得到更加真實(shí)的三維立體模型。

      第三步,在Unity3D中添加地面。將上述步驟建好的三維建筑模型根據(jù)地理坐標(biāo)依次添加到Unity3D中,進(jìn)行場(chǎng)景融合。以及紋理添加、燈光渲染等工作[11-13]。

      第四步,通過unity3D的跨平臺(tái)性,生成可以通過網(wǎng)頁(yè)瀏覽的Web格式的虛擬社區(qū)[14]。

      1.2 Unity3d中虛擬場(chǎng)景的設(shè)計(jì)

      Unity3d中的地形建立:

      在Unity3D軟件中通過Terrain菜單建立及修改地形。Terrain地形編輯工具可以根據(jù)具體的實(shí)地場(chǎng)景進(jìn)行隨意設(shè)置及修改。采用標(biāo)準(zhǔn)統(tǒng)一的地形,可以完成山地、城市和鄉(xiāng)村場(chǎng)景的設(shè)計(jì),具有友好的界面。同時(shí),可以在整個(gè)地形上鋪設(shè)地形紋理來裝飾地圖風(fēng)景,還可以混合或合并地形紋理來平滑地過渡一個(gè)地圖到另一個(gè)地圖,或使地圖的環(huán)境多樣化。這極大方便了虛擬場(chǎng)景的制作。

      1.3 Unity3D中三維模型的導(dǎo)入

      Unity3D軟件只支持fbx格式的三維模型,因此,在設(shè)計(jì)時(shí),采用3DMax建模,將模型存儲(chǔ)為fbx類型。在Unity3D中的asset文件夾中添加Object文件夾,此時(shí),Unity3D將自動(dòng)識(shí)別該模型,并將其Material和 Textures分離出來導(dǎo)入到Object的文件夾下面。此時(shí),當(dāng)模型導(dǎo)入時(shí),我們可以在菜單欄Assetsimport new asset,選擇我們要導(dǎo)入的 *.fbx[15]。

      1.4 建筑模型紋理設(shè)計(jì)

      在Unity3d環(huán)境中設(shè)計(jì)紋理及貼圖之前應(yīng)先確定各模型的材質(zhì)、貼圖和物理屬性。在獲取相關(guān)屬性后,將模型導(dǎo)入U(xiǎn)nity3d中進(jìn)行Shader腳本設(shè)置和紋理貼圖。Unity3D中的shader腳本,采用shaderlab腳本語言編寫,shader的框架如下:

      shader"shader name"

      { properties

      { _Color("Diffuse Color",Color)=(1,.5,.5,1)_Texture("Main Texture",2D)=""{}

      }

      SubShader

      {

      Tags{"Queue"="Transparent"}

      pass

      {

      Tags{}

      Material{}

      }

      }

      Fallback""

      }

      其中,properties中定義的變量,是可以采用編輯器編輯的。在Unity3D編輯器中選中一個(gè)材質(zhì),材質(zhì)中的shader里面定義在properties中的變量就會(huì)出現(xiàn)該材質(zhì)的屬性面板中,可以手動(dòng)設(shè)置對(duì)應(yīng)的屬性。其中,紋理屬性后面,還有一些可選的屬性可以設(shè)置,用于設(shè)置紋理的坐標(biāo),和其他一些屬性。

      1.5 虛擬場(chǎng)景的合并

      在進(jìn)行模型設(shè)計(jì)后,需要將多個(gè)模型及場(chǎng)景依據(jù)平面圖進(jìn)行場(chǎng)景整合,還需要背景配樂等多媒體文件支持。在設(shè)計(jì)時(shí),通過建立Directional Light和sky box,可以使場(chǎng)景更加明亮和逼真。

      2 虛擬系統(tǒng)的實(shí)現(xiàn)

      2.1 漫游技術(shù)的實(shí)現(xiàn)

      在虛擬漫游中,我們希望通過控制鼠標(biāo)或者鍵盤實(shí)現(xiàn)視角和場(chǎng)景的轉(zhuǎn)換。在具體實(shí)現(xiàn)中,首先,在3DMax建模軟件中分別制作人物的行走動(dòng)畫、站立動(dòng)畫、跳躍動(dòng)畫和跑步動(dòng)畫,制作完畢后,將動(dòng)畫模型保存為.fbx文件格式。將動(dòng)作模型導(dǎo)入到Unity3D項(xiàng)目的Object文件夾中。然后,在欄中選中導(dǎo)入動(dòng)畫模型,在屬性面板中設(shè)置模型不同動(dòng)作的開始和結(jié)束幀,所拖拽動(dòng)畫模型到舞臺(tái)中去。

      通過Character Moto命令給動(dòng)畫模型添加人物控制器,在屬性面板中調(diào)節(jié)Radius和Height來調(diào)節(jié)人物控制器的輪廓、高度。在軟件中添加Javescript控制代碼實(shí)現(xiàn)運(yùn)動(dòng)控制。具體的,設(shè)計(jì)鼠標(biāo)控制需要對(duì)人物添加Mouse Look旋轉(zhuǎn)控制器,設(shè)計(jì)鍵盤控制需要對(duì)人物添加FPS Input Controller移動(dòng)控制器。對(duì)相應(yīng)控制器設(shè)計(jì)即可實(shí)現(xiàn)視角隨著鼠標(biāo)方向的旋轉(zhuǎn)和鍵盤控制人物實(shí)現(xiàn)前后左右的移動(dòng)[16-17]。

      在具體設(shè)計(jì)時(shí),需要考慮當(dāng)角色移動(dòng)時(shí),需要配合相應(yīng)的動(dòng)作來完成角色移動(dòng)的效果,比如:跑動(dòng)作、跳動(dòng)作等,為了給用戶帶來視覺的更加逼真的效果,在設(shè)計(jì)時(shí),在animatioController.js添加動(dòng)作代碼,其中核心代碼如下:

      if(Input.GetAxis("Vertical")> .1)//如果是豎直方向的向前運(yùn)動(dòng)

      {

      if(Input.GetButton("Run"))//按下 run 按鈕

      {

      animation.CrossFade("run");//播放 run 動(dòng)畫

      walkSpeed=4;//同時(shí)設(shè)置速度為4

      }

      else

      {

      animation["walk"].speed=1;//其他時(shí)候則為走路

      animation.CrossFade("walk");//播放走路動(dòng)畫

      walkSpeed=1;//同時(shí)設(shè)置速度為1

      }

      if(Input.GetAxis("Vertical")< -.1)////如果是豎直方向的向后運(yùn)動(dòng)

      {

      animation["walk"].speed=-1;//速度設(shè)置為負(fù)值

      animation.CrossFade("walk");//播放走畫面

      walkSpeed=1;

      }

      else

      {

      animation.CrossFade("idle");//其他時(shí)候?yàn)檎玖?dòng)畫

      }

      if(Input.GetI}eyDown ("space"))//當(dāng)空格鍵被按下就執(zhí)行跳躍動(dòng)畫。

      animation.CrossFade(”jump");

      }

      水平方向的控制和垂直方向運(yùn)動(dòng)相同代碼在此省略。

      2.2 碰撞檢測(cè)[18]

      碰撞檢測(cè)[19]是模擬現(xiàn)實(shí)環(huán)境中的人物及物體在遇到障礙物時(shí)發(fā)生的本能反應(yīng),例如,當(dāng)角色遇到墻壁,如果沒有設(shè)計(jì)碰撞檢測(cè),則角色會(huì)出現(xiàn)穿墻而過的失真現(xiàn)象,在現(xiàn)實(shí)中,應(yīng)該是當(dāng)發(fā)現(xiàn)墻壁與角色存在一定距離時(shí),則需要停止前進(jìn)。在這種情況下,設(shè)計(jì)人員需要添加碰撞檢測(cè)函數(shù)。在Unity3d軟件中提供了Mesh Collider撞檢測(cè)組件,該組件可以有效計(jì)算模型表面的網(wǎng)格自動(dòng)生成碰撞面,但是如果模型表面的網(wǎng)格較多會(huì)影響執(zhí)行效率,通過給網(wǎng)格較多的模型添加一個(gè)基本體作為該模型的父模型,設(shè)置成不可渲染則可以有效解決該問題。

      2.3 系統(tǒng)聯(lián)機(jī)功能實(shí)現(xiàn)

      當(dāng)用戶漫游在數(shù)字校園中,如果只包含靜態(tài)的建筑,而缺乏了動(dòng)態(tài)的人物交互,這樣的設(shè)計(jì)缺乏真實(shí)的體驗(yàn),在本系統(tǒng)中,采用C/S客戶端服務(wù)器模型,實(shí)現(xiàn)場(chǎng)景中的人物互動(dòng)。其中,服務(wù)器相對(duì)獨(dú)立,可支持多個(gè)客戶端的訪問。兩者之間交互的原理為:客戶端向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器給予反饋。當(dāng)訪問者按下移動(dòng)按鍵時(shí),客戶端將事件發(fā)送至服務(wù)器,服務(wù)器端判斷角色該如何移動(dòng)才能將事件返回給客戶端,當(dāng)客戶端接受到服務(wù)器返回的數(shù)據(jù)后,開始移動(dòng)角色,同時(shí)服務(wù)器端還會(huì)將其他訪問者的移動(dòng)事件發(fā)送給客戶端。這樣客戶端就可以顯示其他訪問者的模型位置了。

      具體設(shè)計(jì)時(shí),服務(wù)器默認(rèn)開啟,服務(wù)器端核心代碼:

      Void OnGUI(){

      Switch(Network.PeerType){

      Case NetworkPeerType.Disconnected:

      StartServer();

      Case NetworkPeerType.Server:

      Break;

      Case NetworkPeerType.Client:

      Break;

      Case NetworkPeerType.Connecting

      Break;

      }

      }

      Void StartServer()

      {

      if(GUILayout.Button("創(chuàng)建服務(wù)器”))

      {

      //服務(wù)端創(chuàng)建服務(wù)器

      NetworkConnectionError error=Network.Connect(IP,Port,false);

      //如果連接失敗,將錯(cuò)誤信息打印出來

      Debug.Log("連接狀態(tài):"+error);

      }

      客戶端核心代碼為:

      Void OnGUI(){

      Switch(Network.PeerType){

      Case NetworkPeerType.Disconnected:

      StartConnect();

      Case NetworkPeerType.Server:

      Break;

      Case NetworkPeerType.Client:

      Break;

      Case NetworkPeerType.Connecting

      Break;

      }

      }

      Void StartConnect()

      {

      if(GUILayout.Button("連接服務(wù)器”))

      {

      //客戶端連接服務(wù)器

      NetworkConnectionError error=Network.Connect(IP,Port);

      //如果連接失敗,將錯(cuò)誤信息打印出來

      Debug.Log("連接狀態(tài):"+error);

      }

      服務(wù)器創(chuàng)建完成后,客戶端需要向服務(wù)服務(wù)器發(fā)送消息請(qǐng)求,并且確保服務(wù)器能夠?qū)碜阅骋豢蛻舳说恼?qǐng)求消息返回給連接到服務(wù)器的所有客戶端。需要首先創(chuàng)建一個(gè)網(wǎng)絡(luò)視圖組件,然后就可以使用RPC向服務(wù)器發(fā)送消息了。使用RPC發(fā)送消息的方法如下:

      networkView.RPC("RequestMessage",RPCMode.All,inputMessage);

      在服務(wù)器端或客戶端中接收消息請(qǐng)求的方法如下:

      void RequestMessage(string message,NetworkMessageInfo info)

      {

      //message:消息內(nèi)容

      //info:消息附帶信息

      }

      模擬效果如下:

      3 軟件測(cè)試與優(yōu)化

      任何系統(tǒng)都需要進(jìn)行黑盒子測(cè)試以發(fā)現(xiàn)系統(tǒng)存在的問題和漏洞。本系統(tǒng)也進(jìn)行了相應(yīng)的測(cè)試。在測(cè)試中發(fā)現(xiàn),基于網(wǎng)絡(luò)環(huán)境下,系統(tǒng)存在占用網(wǎng)絡(luò)流量大,運(yùn)行緩慢的現(xiàn)象。分析原因是因?yàn)闇y(cè)試電腦配置較低及網(wǎng)絡(luò)帶寬限制。這就要求我們從用戶角度出發(fā),在保證真實(shí)度的情況下盡量減少模型的數(shù)量,大部分建筑需要通過平面建模來優(yōu)化模型的復(fù)雜度,在建模過程中盡量減少模型頂點(diǎn)和分段數(shù),在unity3d處理過程中,盡量使用靜態(tài)燈光,動(dòng)態(tài)實(shí)時(shí)燈光相比靜態(tài)燈光,非常耗費(fèi)資源。所以除了能動(dòng)的角色和物體靜態(tài)的地形和建筑。盡量減少視角范圍和距離,減少不必要的運(yùn)行消耗。

      4 總結(jié)

      本系統(tǒng)通過Unity3D平臺(tái)建立了一個(gè)虛擬系統(tǒng),并通過C/S模式構(gòu)建人物交互,采用HTML格式發(fā)布,幾乎適應(yīng)所有平臺(tái)瀏覽。實(shí)現(xiàn)效果逼真仿真度高,系統(tǒng)運(yùn)行穩(wěn)定可靠性好,系統(tǒng)與用戶交互性好,能夠非常直觀地帶給用戶身臨其境的場(chǎng)景漫游效果,漫游過程場(chǎng)景切換順暢,而且可以為場(chǎng)景提供豐富的多媒體影音交互。

      Unity3D提供可視化的界面操作,地形制作和文理添加,以及擁有“對(duì)象碰撞檢測(cè)”、“角色漫游”功能,方便了系統(tǒng)的開發(fā)?;赨nity3D的虛擬漫游技術(shù)原理與渲染效果非常適合虛擬校園漫游的設(shè)計(jì),隨著以后越來越多的漫游系統(tǒng)的需求,Unity3D引擎技術(shù)將會(huì)被更為廣泛的應(yīng)用。

      [1]范立冬,李曙光,張治剛.虛擬現(xiàn)實(shí)技術(shù)在醫(yī)學(xué)訓(xùn)練中的應(yīng)用[J].創(chuàng)傷外科雜志,2008,12(9).

      [2]吳燕玲.基于Wed的玩味動(dòng)畫技術(shù)及其在教學(xué)中的應(yīng)用[J].中山大學(xué)學(xué)報(bào):自然科學(xué)版.2002,12(6):53-56.

      [3]詹勝利.Web3D技術(shù)在網(wǎng)絡(luò)教學(xué)中的應(yīng)用[J].網(wǎng)絡(luò)技術(shù)與網(wǎng)絡(luò)教學(xué),2006.1:15-17.

      [4]來翔.面向電子商務(wù)的虛擬商品模型研究[J].浙江大學(xué),2003.

      [5]沈璞.虛擬現(xiàn)實(shí)技術(shù)在現(xiàn)代工業(yè)設(shè)計(jì)中的應(yīng)用[J].制造業(yè)自動(dòng)化,2004.11(6):76-78.

      [6]張典華,陳一民.基于Unity3D的多平臺(tái)虛擬校園設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,24(2):127,135.

      [7]馬瑞.基于Unity3D的多平臺(tái)三維虛擬數(shù)字校園的設(shè)計(jì)與實(shí)現(xiàn)[J].蚌埠學(xué)院學(xué)報(bào),2014,3(2):13-16.

      [8]Okabe M,Igarashi T.3D modeling of trees from freehand sketches[C]//International Conference on Computer Graphics and Interactive Techniques.ACM SIGGRAPH 2003 Sketches&Applications.New York,USA:ACM,2003:1-1.

      [9]Okabe M,Owada S,Igarashi T.Interactive design of botanical trees using freehand sketches and example-based editing [J].Computer Graphics Forum,Eurographics(S0167-7055),2005,24(3):487-496.

      [10]Livny Y,Yan F L,Olson M,et al.Automatic Reconstruction of Tree Skeletal Structures from Point Clouds [J].ACM Transactions on Graphics (S0730-0301),2010,29(6):151-1:151-8.

      [11]周希望,劉正東.虛擬校園的建模優(yōu)化及Web3D交互技術(shù)[J].軟件導(dǎo)刊,2010,9(1).

      [12]付林.永豐大廈虛擬漫游數(shù)字平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京交通大學(xué),2010(1).

      [13]倪樂波,戚鵬.Unity 3D產(chǎn)品虛擬展示技術(shù)的研究與應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用,2010(9).

      [14]郭海新.Unity 3D與HTML交互機(jī)理的研究[J].煤炭技術(shù),2012(9).

      [15]毛天露,王兆其.個(gè)性化三維人體模型快速建模方法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2005,17(10):2191-2195.

      [16]干建松.基于Unity 3d的室內(nèi)漫游的關(guān)鍵技術(shù)研究[J].鹽城工學(xué)院學(xué)報(bào):自然科學(xué)版,2011(20).

      [17]何志毅,田金萍,李天松,等.虛擬人行走的動(dòng)作融合[J].計(jì)算機(jī)工程,2009,35(22):267-271.

      [18]甘建紅,彭強(qiáng),戴培東,等.基于 OBB層次結(jié)構(gòu)碰撞檢測(cè)的改進(jìn)算法[J].系統(tǒng)仿真學(xué)報(bào),2011,23(1):2619-2173.

      [19]Gayle R,Manocha D.Navigating virtual agents in online virtual worlds[C]//Proceedings of the Web3D 2008.New York,NY,USA:ACM,2008:53-56.

      猜你喜歡
      漫游客戶端動(dòng)畫
      做個(gè)動(dòng)畫給你看
      動(dòng)畫發(fā)展史
      我的動(dòng)畫夢(mèng)
      文苑(2019年22期)2019-12-07 05:28:56
      縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
      孵化垂直頻道:新聞客戶端新策略
      基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
      霹靂漫游堂
      NASA漫游記
      我是動(dòng)畫迷
      客戶端空間數(shù)據(jù)緩存策略
      罗定市| 开平市| 桂阳县| 鹤山市| 大港区| 呼玛县| 电白县| 蕲春县| 永福县| 海宁市| 澄迈县| 襄城县| 青岛市| 林周县| 铅山县| 邻水| 田阳县| 南昌县| 正阳县| 东安县| 瑞丽市| 武汉市| 广河县| 沅江市| 灌云县| 辽宁省| 罗甸县| 吉隆县| 武平县| 四会市| 兴宁市| 洛浦县| 海城市| 绩溪县| 方城县| 涞源县| 台湾省| 江阴市| 太白县| 伊金霍洛旗| 盖州市|