• 
    

    
    

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

      ?

      基于手持移動(dòng)設(shè)備的虛擬裝置教學(xué)系統(tǒng)

      2016-11-02 23:23陸樂(lè)衛(wèi)剛
      電腦知識(shí)與技術(shù) 2016年18期
      關(guān)鍵詞:教學(xué)系統(tǒng)鼠標(biāo)部件

      陸樂(lè) 衛(wèi)剛

      摘要:作為虛擬現(xiàn)實(shí)的應(yīng)用,虛擬裝置教學(xué)系統(tǒng)已經(jīng)在各領(lǐng)域得到了廣泛的應(yīng)用。鑒于移動(dòng)設(shè)備飛速發(fā)展的趨勢(shì),該系統(tǒng)根據(jù)PRT格式導(dǎo)出的機(jī)械模型,通過(guò)3DMAX轉(zhuǎn)換后,使用Unity3D、SQLite等一系列工具建立了面向移動(dòng)設(shè)備的虛擬裝置教學(xué)系統(tǒng)。最終,該系統(tǒng)能夠在iOS端以及任意能夠訪(fǎng)問(wèn)網(wǎng)頁(yè)的瀏覽器上使用。用戶(hù)獲得虛擬現(xiàn)實(shí)身臨其境的體驗(yàn)、豐富的交互的同時(shí),移動(dòng)化的訪(fǎng)問(wèn)讓用戶(hù)的學(xué)習(xí)達(dá)到了隨時(shí)隨地訪(fǎng)問(wèn)、充分利用碎片時(shí)間工程目標(biāo)。

      關(guān)鍵詞: Unity 3D; 虛擬現(xiàn)實(shí); 教學(xué)系統(tǒng); iOS系統(tǒng); WebGL

      中圖分類(lèi)號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)18-0221-03

      A Device-Training System Based on Mobile Platform

      LU Le,WEI Gang

      (College of Electronic and Information Engineering, TongJi university, Shanghai 201804, China)

      Abstract:As virtual reality applications, virtualization means teaching system has been widely used in various fields. Given the trend of rapid development of mobile devices, the system according to the mechanical model derived PRT format, through 3DMAX conversion using Unity3D, SQLite and some other tools to create a virtual device for mobile devices Teaching System. Ultimately, the system can be used on iOS side and be able to access any web browser. Users get the virtual reality immersive experiences, rich interactive at the same time, mobile access allows users to learn anytime, anywhere access to reach the full use of fragments of time the project objectives.

      Key words: Unity 3D; VR; training system; iOS system; WebGL

      1 引言

      隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,人們獲取信息以及學(xué)習(xí)的方式已經(jīng)受到了巨大的影響。信息爆炸、現(xiàn)代社會(huì)化競(jìng)爭(zhēng)壓力增大等因素導(dǎo)致人們開(kāi)始傾向于追求碎片化、實(shí)時(shí)性的交互方式。近年來(lái),各領(lǐng)域已經(jīng)展現(xiàn)出由已個(gè)人電腦為主轉(zhuǎn)變到了今天以移動(dòng)設(shè)備為主的趨勢(shì)。另一方面,一直以來(lái)由于我國(guó)人口眾多,基礎(chǔ)教育資源不足等原因,實(shí)驗(yàn)教學(xué)在我國(guó)教育發(fā)展中相對(duì)薄弱。 此時(shí),虛擬現(xiàn)實(shí)(Virtual Reality,VR)技術(shù)的出現(xiàn),為教學(xué)提供了一種新的方式。虛擬現(xiàn)實(shí)技術(shù)已成為計(jì)算機(jī)應(yīng)用行業(yè)的研究重點(diǎn)[1]。基于虛擬現(xiàn)實(shí)的虛擬裝置教學(xué),目的是在三維的虛擬空間中,對(duì)產(chǎn)品的結(jié)構(gòu)、部件之間的關(guān)系等進(jìn)行展示,并且提供可以人機(jī)交互的界面。不但增強(qiáng)教學(xué)的趣味性,還降低了設(shè)備、人工和場(chǎng)地等的成本。

      2 虛擬現(xiàn)實(shí)技術(shù)相關(guān)軟件

      本項(xiàng)目主要使用的軟件有Unity3D、Visual Studio 2010等。開(kāi)發(fā)環(huán)境如表1所示。

      Unity3D技術(shù)[2][3]可以讓設(shè)計(jì)者輕松地創(chuàng)建一個(gè)三維視頻,是一個(gè)建筑可視化,創(chuàng)建動(dòng)畫(huà)和其他類(lèi)型的實(shí)時(shí)三維互動(dòng)內(nèi)容集成的多平臺(tái)游戲開(kāi)發(fā)工具,是一個(gè)完整專(zhuān)業(yè)的游戲引擎。Unity3D平臺(tái)既可以創(chuàng)建工作流,同樣也可以直接運(yùn)行工作流,是一個(gè)一站式的解決方案平臺(tái)。Unity3D的開(kāi)發(fā)人員提供了看似簡(jiǎn)單的專(zhuān)業(yè)創(chuàng)意組合,但采用最先進(jìn)的3D游戲引擎,你可以創(chuàng)建一個(gè)簡(jiǎn)短的令人驚嘆的3D作品。Unity3D支持所有主要文件格式,支持JavaScript腳本語(yǔ)言和編程語(yǔ)言還支持IOS和Android平臺(tái)的擴(kuò)展,真正實(shí)現(xiàn)了跨平臺(tái)。

      SQLite[4]是一個(gè)開(kāi)源的嵌入式關(guān)系數(shù)據(jù)庫(kù),實(shí)現(xiàn)自包容、零配置、支持事務(wù)的SQL數(shù)據(jù)庫(kù)引擎。 其特點(diǎn)是高度便攜、使用方便、結(jié)構(gòu)緊湊、高效、可靠。

      NGUI是嚴(yán)格遵循KISS原則并用C#編寫(xiě)的Unity(適用于專(zhuān)業(yè)版和免費(fèi)版)插件,提供強(qiáng)大的UI系統(tǒng)和事件通知框架。其代碼簡(jiǎn)潔,多數(shù)類(lèi)少于200行代碼。這意味著程序員可以很容易地?cái)U(kuò)展NGUI的功能或調(diào)節(jié)已有功能。對(duì)所有其他用戶(hù)而言,這意味著更高的性能、更低的學(xué)習(xí)難度和更加有趣。

      PrimitivesPro是Unity Assets Store中協(xié)助程序建模的一個(gè)高級(jí)插件包。它包含18個(gè)程序腳本,可以實(shí)現(xiàn)高性能網(wǎng)狀切割機(jī)和布爾運(yùn)算功能。其中沒(méi)有預(yù)制體,直接由代碼產(chǎn)生所需的功能及GameObject。用戶(hù)可以在運(yùn)行時(shí)檢查和修改參數(shù)。

      3 系統(tǒng)總體框架設(shè)計(jì)

      3.1 需求分析與模塊設(shè)計(jì)

      根據(jù)裝置教學(xué)的需求,本系統(tǒng)可分為設(shè)備瀏覽、零件瀏覽、子部件局部視圖和剖切模塊。

      3.1.1 設(shè)備瀏覽、零件瀏覽模塊

      用戶(hù)可以選擇某個(gè)特定的設(shè)備進(jìn)行拆裝、瀏覽,查看介紹,并對(duì)設(shè)備各個(gè)零部件學(xué)習(xí)。本項(xiàng)目采用以下操作瀏覽設(shè)備模型:

      1. 滑動(dòng)鼠標(biāo)滾輪對(duì)模型設(shè)備放大縮小

      2. 鼠標(biāo)移動(dòng)到某部件對(duì)其進(jìn)行高亮處理

      3. 鼠標(biāo)左鍵選中某部件可以對(duì)其進(jìn)行平移

      4. 鼠標(biāo)右鍵可調(diào)出對(duì)應(yīng)該部件的菜單

      3.1.2 子部件局部視圖模塊

      對(duì)于用戶(hù)想要深入觀察的子部件,可將其單獨(dú)拿出至另一個(gè)界面觀看。在觀看時(shí),可對(duì)子部件中的每個(gè)小部件進(jìn)行自由移動(dòng)、旋轉(zhuǎn)、拆裝。在這個(gè)模塊,用戶(hù)可以深入學(xué)習(xí)這個(gè)子部件的結(jié)構(gòu)。

      3.1.3 零件信息展示和編輯模塊

      在主視圖中,通過(guò)鼠標(biāo)右擊,可選中子部件并觀看、修改其屬性。當(dāng)用戶(hù)選擇“部件屬性”時(shí),我們使用NGUI控件繪制一個(gè)可交互的窗體。在這個(gè)窗體用戶(hù)可以瀏覽學(xué)習(xí)這個(gè)部件的屬性。點(diǎn)擊“編輯”按鈕進(jìn)入編輯界面。對(duì)這個(gè)部件的屬性進(jìn)行修改,并存入數(shù)據(jù)庫(kù)中,以便后期查閱。

      3.1.3 剖切模塊

      剖切功能借助Unity插件PrimitivesPro實(shí)現(xiàn),需要目標(biāo)GameObject包含meshfilter。用戶(hù)右鍵點(diǎn)擊指定部件,在其右鍵菜單中選擇剖切,可以進(jìn)入到部件的剖切功能。用戶(hù)可以通過(guò)參數(shù)設(shè)置,選擇三點(diǎn)來(lái)形成固定剖切面,也可以選擇一點(diǎn),隨機(jī)生成一個(gè)通過(guò)該點(diǎn)的任意剖切面,通過(guò)參數(shù)修改可以調(diào)整剖面的位置。對(duì)于切割后的部件,用戶(hù)可以設(shè)置切割部分之間分開(kāi)的間距,也可隱藏其中一部分,便于觀察切面細(xì)節(jié)。

      3.2 技術(shù)路線(xiàn)

      本項(xiàng)目的開(kāi)發(fā)難度主要集中在復(fù)雜機(jī)械模型的加工和處理上。由于用戶(hù)提供的樣本模型“390多流體接頭”的格式不能被Unity3D正確地打開(kāi),在本工程中我們把格式轉(zhuǎn)化成通用模型格式FBX。導(dǎo)入U(xiǎn)nity工程后,為了讓經(jīng)過(guò)轉(zhuǎn)換的模型變得可操作,我們還需要對(duì)其做進(jìn)一步預(yù)處理。得到處理過(guò)的模型以后,采用軟件工程的思想進(jìn)行Unity3D開(kāi)發(fā),在PC端調(diào)試完成后,做最后的移植工作。

      4 虛擬裝置教學(xué)系統(tǒng)實(shí)現(xiàn)的關(guān)鍵技術(shù)

      4.1 模型的導(dǎo)入和預(yù)處理

      FBX的模型導(dǎo)入到Unity工程中,產(chǎn)生的主要問(wèn)題有:1. 裝置的錨點(diǎn)偏移。2. 轉(zhuǎn)換后的模型中,層次嵌套層數(shù)非常多。

      于是,我們對(duì)模型進(jìn)行手工的預(yù)處理。第一步,是對(duì)于本工程不需要的邏輯層級(jí)進(jìn)行剔除。只保留原來(lái)模型中有Mesh render的部分,并且大幅減少他們的層次嵌套關(guān)系。第二步,根據(jù)對(duì)390多流體接頭的特性分析,我們選擇了約60個(gè)合適大小的子部件進(jìn)行分類(lèi),作為用戶(hù)鼠標(biāo)單擊選擇的最小單元。第三步,為了能夠?qū)ψ硬考M(jìn)行操作,我們需要為子部件加入Colider和Mesh Render屬性。對(duì)于Colider屬性,我們采用手工添加的方法,保證每個(gè)子部件的Colider的大小比較接近模型實(shí)際大小。對(duì)于Mesh Render屬性,由于這是支持模型高亮和剖切的關(guān)鍵屬性,手工添加的方法不能滿(mǎn)足要求。我們使用遍歷每個(gè)最小的零件,然后從模型的角度,將它們拼合,成為一個(gè)單獨(dú)的Mesh。

      4.2 模型的拖動(dòng)、旋轉(zhuǎn)等交互功能的實(shí)現(xiàn)

      對(duì)于用戶(hù)通過(guò)鼠標(biāo)點(diǎn)擊來(lái)對(duì)模型、以及模型的零部件進(jìn)行操作,我們通過(guò)從鼠標(biāo)的位置發(fā)射一條射線(xiàn),并檢測(cè)射線(xiàn)與部件的碰撞Colider實(shí)體是否接觸。

      于是我們需要為單個(gè)部件增加Box Colider屬性,并調(diào)整期大小,使之跟用戶(hù)看到的模型大小匹配。對(duì)于子部件,我們選取比較大小的顆粒度,把一部分有邏輯聯(lián)系的子部件合成為一個(gè)部件,為其增加Box Colider屬性。

      給所有需要點(diǎn)擊的模型加入Box Colider后,我們?yōu)檫@些部件增加Click Move、Click Rotate等腳本,讓它們支持鼠標(biāo)選擇。對(duì)于用戶(hù)點(diǎn)擊后動(dòng)態(tài)生成的子部件,我們?cè)邳c(diǎn)擊的動(dòng)作中,動(dòng)態(tài)為其加入這些功能性腳本。Click Move腳本主要的任務(wù)除了得到當(dāng)前物體,另外一個(gè)任務(wù)是用戶(hù)看到的屏幕和鼠標(biāo)2D坐標(biāo)和實(shí)際的3D空間坐標(biāo)以及方向的轉(zhuǎn)換。限于篇幅,僅展示Click Move腳本核心代碼:

      [ IEnumerator OnMouseDown()

      {

      Vector3 ScreenSpace = Camera.main.WorldToScreenPoint(transform.position);

      Vector3 offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, ScreenSpace.z));

      while (Input.GetMouseButton(0))

      {

      Vector3 curScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, ScreenSpace.z);

      Vector3 CurPosition = Camera.main.ScreenToWorldPoint(curScreenSpace) + offset;

      transform.position = CurPosition;

      yield return new WaitForFixedUpdate();

      }

      } ]

      4.3 移動(dòng)設(shè)備的移植

      由于Unity3D的跨平臺(tái)跨平臺(tái)的特性,項(xiàng)目可以被導(dǎo)出、編譯為移動(dòng)設(shè)備可以執(zhí)行的代碼。通過(guò)Unity3D的工程編譯頁(yè)面,我們可以看到豐富的輸出平臺(tái)選擇。只要我們?cè)赨nity3D安裝時(shí),選擇了相應(yīng)的依賴(lài)包,我們就可以把工程移植到對(duì)應(yīng)的平臺(tái)。對(duì)于手機(jī)端來(lái)說(shuō),主要有以下三點(diǎn)與普通的PC平臺(tái)不同:

      1. 屏幕分辨率不同。由于手機(jī)屏幕分辨率的多樣性,在工程實(shí)施階段需要考慮到比較小的分辨率的情況。在本工程中,我們把分辨率限制在1024*768的范圍內(nèi),以兼容低端手機(jī),確保在各個(gè)終端都有比較好的顯示。

      2. 輸入方式不同。本工程在PC端主要使用鼠標(biāo)與系統(tǒng)交互,而手機(jī)上的輸入設(shè)備是觸摸屏。于是,我們需要對(duì)鼠標(biāo)的操作映射到觸摸屏的相關(guān)操作上。在Unity3D中,調(diào)整相關(guān)設(shè)置,將觸摸點(diǎn)擊映射為鼠標(biāo)左鍵,雙指觸摸映射為鼠標(biāo)右鍵,即可完成適配。

      3. 移動(dòng)設(shè)備的計(jì)算能力不同。雖然本項(xiàng)目沒(méi)有用到太多的計(jì)算資源,對(duì)于某些低端手機(jī),仍然可能由于性能的不足造成一定的卡頓。所以,在移動(dòng)設(shè)備上,我們降低了3D效果的質(zhì)量,減少對(duì)設(shè)備性能的要求。實(shí)際測(cè)試來(lái)看,效果令人滿(mǎn)意。

      4.3.1 導(dǎo)出及編譯iOS工程

      Unity3D的擴(kuò)展包幫助我們把C#的源代碼以及項(xiàng)目需要的庫(kù)函數(shù)編譯成C++語(yǔ)言。編譯后,工程被輸出為以C++描述的Xcode工程。用Xcode打開(kāi)編輯工程,仍需要對(duì)工程的包ID、代碼簽名、設(shè)備適配等進(jìn)行進(jìn)一步配置,如下圖所示。編譯這個(gè)工程并部署到iPhone以后,就可以正常運(yùn)行了。

      4.3.2 導(dǎo)出為WebGL網(wǎng)頁(yè)

      很多時(shí)候,網(wǎng)頁(yè)的靈活性要比手機(jī)上的app更好,用戶(hù)不需要特定的地方下載并且經(jīng)歷漫長(zhǎng)的等待。只要打開(kāi)鏈接,就可以嘗試內(nèi)容。所以,把項(xiàng)目移植到網(wǎng)頁(yè)也是本項(xiàng)目的重要內(nèi)容。

      如上文所述,Unity3D可以簡(jiǎn)單地導(dǎo)出可用于本機(jī)打開(kāi)的HTML文件包,運(yùn)行效果如圖8所示:

      為了讓用戶(hù)能夠在各地訪(fǎng)問(wèn)這個(gè)頁(yè)面,我們需要組建一個(gè)Web服務(wù)器以供訪(fǎng)問(wèn)。

      1. 本項(xiàng)目采用阿里云的ECS虛擬主機(jī),由此我們可以得到一個(gè)唯一的公網(wǎng)IP地址。

      2. 在虛擬主機(jī)上下載Apache網(wǎng)頁(yè)服務(wù)器程序,并對(duì)其進(jìn)行配置,讓其默認(rèn)載入本項(xiàng)目的index.html文件

      3. 如有需要,可以為這個(gè)IP地址購(gòu)買(mǎi)相應(yīng)的域名服務(wù),增加可維護(hù)性。本項(xiàng)目由于是企業(yè)內(nèi)部使用,仍使用IP地址進(jìn)行訪(fǎng)問(wèn)。

      5 結(jié)束語(yǔ)

      可以預(yù)見(jiàn)的是,隨著移動(dòng)設(shè)備計(jì)算能力以及人機(jī)交互技術(shù)的不斷創(chuàng)新和增強(qiáng),移動(dòng)設(shè)備將會(huì)越來(lái)越成為人們工作、學(xué)習(xí)生活中不可或缺的角色。軟件工程的項(xiàng)目在策劃伊始就開(kāi)始考慮對(duì)于移動(dòng)設(shè)備的兼容將會(huì)是未來(lái)的趨勢(shì)。本系統(tǒng)通過(guò)使用簡(jiǎn)單、畫(huà)面精美的人機(jī)交互,展示了在移動(dòng)設(shè)備上進(jìn)行高難度機(jī)械設(shè)備教學(xué)的可能。讓用戶(hù)能夠無(wú)論身處何地,都能利用自己的碎片時(shí)間進(jìn)行設(shè)備瀏覽和學(xué)習(xí),對(duì)虛擬現(xiàn)實(shí)的推廣起到了積極作用。

      參考文獻(xiàn):

      [1] 趙德彩. 山東科技大學(xué)三維虛擬校園系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].青島:山東科技大學(xué),2013

      [2] 于文洋,楊崇俊. 三維虛擬城市景觀基礎(chǔ)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程. 2006(02)

      [3] 徐偉,陳新. 三維可視化技術(shù)在現(xiàn)代醫(yī)學(xué)中的應(yīng)用[J]. 計(jì)算機(jī)與現(xiàn)代化. 2007(06)

      [4] 韓太東,盧秉亮,朱健,房玲玲. 嵌入式數(shù)據(jù)庫(kù)SQLite在Windows程序中的應(yīng)用[J]. 沈陽(yáng)航空工業(yè)學(xué)院學(xué)報(bào). 2009(04)

      猜你喜歡
      教學(xué)系統(tǒng)鼠標(biāo)部件
      基于Unity的計(jì)算機(jī)硬件組裝仿真教學(xué)系統(tǒng)設(shè)計(jì)
      Progress in Neural NLP: Modeling, Learning, and Reasoning
      多地遠(yuǎn)程互動(dòng)同步教學(xué)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
      基于Siemens NX和Sinumerik的銑頭部件再制造
      部件拆分與對(duì)外漢字部件教學(xué)
      基于交互式雙板教學(xué)系統(tǒng)的高中地理教學(xué)研究
      水輪機(jī)過(guò)流部件改造與節(jié)能增效
      汽車(chē)配件營(yíng)銷(xiāo)實(shí)踐教學(xué)系統(tǒng)開(kāi)發(fā)
      焦利氏秤各部件的修理和改裝
      超能力鼠標(biāo)
      清河县| 教育| 开阳县| 鄯善县| 扶沟县| 维西| 韶关市| 沙河市| 光山县| 小金县| 宣威市| 酒泉市| 禹州市| 荣昌县| 华容县| 财经| 绥化市| 岢岚县| 临澧县| 宁化县| 日土县| 海门市| 常宁市| 黎川县| 渝中区| 乌拉特中旗| 长宁县| 平遥县| 淅川县| 崇左市| 安徽省| 马公市| 全州县| 安顺市| 河曲县| 高安市| 黔西| 杂多县| 凤凰县| 达尔| 平塘县|