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

        ?

        基于Unity 的《AR 槍械》的設計與實現(xiàn)

        2021-03-24 08:22:04彭偉國栗昊
        現(xiàn)代計算機 2021年3期
        關鍵詞:槍械藏品按鈕

        彭偉國,栗昊

        (平頂山學院計算機學院(軟件學院),平頂山467000)

        0 引言

        隨著智能手機的普及,人們通過手機圖片和視頻去觀察了解事物,但是不能從三維視角下觀看物體的方方面面。AR 的優(yōu)勢就在于能夠把原本在現(xiàn)實物理世界中難以體驗到的真實的感官信息,通過科學技術模擬仿真后再疊加到現(xiàn)實世界被人類感官所感知,從而達到超越現(xiàn)實的感官體驗[1]。而AR 技術的這一優(yōu)勢能幫助人們在虛實結合的場景中有更好的交互體驗。槍械并不是每個人都能接觸到的物品,但又有很多人對槍械特別感興趣。眾多人的愛好需求和社會現(xiàn)狀出現(xiàn)了矛盾,《AR 槍械》通過增強現(xiàn)實技術,將真實的環(huán)境和虛擬的物體實時地疊加到了同一個畫面或空間。AR 技術使真實場景與虛擬物體無縫對接,通過《AR 槍械》這一科普軟件,用戶能夠以立體真實的視角,增強用戶對槍械知識的學習興趣,了解槍械科技的發(fā)展。

        1 項目策劃

        《AR 槍械》能夠讓用戶通過掃描槍械平面識別圖來觀察三維的槍械模型,并且會出現(xiàn)槍械數(shù)據(jù)和槍械歷史,用戶可以通過閱讀屏幕上的內容來了解所掃描的槍械的數(shù)據(jù)及歷史。并且三維槍械模型出現(xiàn)后,用戶可以通過滑動屏幕旋轉模型,滿足用戶全方位觀察槍械的需求。

        啟動AR 程序,用戶能夠看到開始識圖、藏品、項目設置、項目幫助和退出項目等五個按鈕。用戶點擊開始識圖,項目會跳轉到識圖界面,用戶通過槍械識別圖獲取該槍械的三維模型。通過單個手指在手機屏幕上下左右滑動控制模型上下左右旋轉。當兩個手指間的距離變小時模型縮小,當距離變大時模型放大。用戶可通過數(shù)據(jù)和歷史按鈕來查看該槍械的相關數(shù)據(jù)和歷史介紹。用戶也可選擇截圖、收藏和退出等功能。

        用戶點擊藏品按鈕,項目會進入到藏品界面,在藏品界面用戶可查看槍械藏品的三維模型及該槍械的槍械數(shù)據(jù)和槍械歷史,用戶也可選擇取消收藏該槍械。通過設置按鈕可跳轉到設置界面,用戶可以通過滑條控制項目音效大小。通過射擊體驗按鈕可跳轉到射擊體驗場景,可以使用自己選擇的槍進行射擊體驗。通過項目幫助按鈕可跳轉到項目操作介紹界面,用戶點擊退出按鈕,退出項目界面。

        2 項目實現(xiàn)技術

        《AR 槍械》應用程序主要運用Unity3D 游戲引擎、Vuforia 軟件開發(fā)工具包和C#腳本語言進行開發(fā),項目UI 主要運用Photoshop 和Unity 軟件進行制作,項目中的槍械3D 模型主要運用Maya 軟件進行建模?!禔R 槍械》在項目策劃的基礎上,首先完成了槍械3D 模型、項目UI 等設計工作,然后進行AR 識圖、槍械收藏、資源加載、截圖、藏品展示、項目幫助、項目設置、射擊體驗等功能的開發(fā)。項目中的槍械數(shù)據(jù)使用JSON 進行存儲。項目模塊間采用了單例模式進行通信。

        項目資源準備方面,除了模型、UI 效果圖之外,實現(xiàn)AR 槍械的關鍵一環(huán)就是識別圖的制作了。

        首先,在Maya 中渲染出槍械模型的正視圖,保存其位置,作為AR 槍械模型的渲染圖;然后,在Vuforia的官網(wǎng)(https://developer.vuforia.com/)注冊并登錄賬號,通過官網(wǎng)Add Database 按鈕創(chuàng)建槍械數(shù)據(jù)庫Firearms?Database;最后,在數(shù)據(jù)庫界面點擊Add Target 按鈕,選取制作的渲染圖,完成一個識別圖的添加。重復前面步驟,添加其他槍械識別圖,完成識別圖數(shù)據(jù)庫的創(chuàng)建。

        3 項目功能設計

        在軟件系統(tǒng)開發(fā)過程中,類圖設計起到承上啟下的作用,對上是用例分析的結果,對下是系統(tǒng)代碼設計的藍本[2]。類圖也是描述系統(tǒng)詳細功能設計的有效方式之一,能夠描述系統(tǒng)設計中類與類之間的聯(lián)系,也能夠對類的內部構成加以說明[3]。AR 識圖、資源加載、藏品展示是整個項目里面最核心的幾個功能,在進行項目開發(fā)的初期,首先要完成各個功能模塊的類圖設計。

        3.1 AR識圖功能設計

        AR 槍械軟件啟動后,當用戶點擊應用軟件上的識圖功能,打開相機,相機對準識別圖進行識別,根據(jù)不同的槍械識別圖,用戶能識別出不同的槍械模型,并對識別出的模型進行放大縮小和旋轉操作。

        AR 識圖類圖如圖1 所示,類GameManger 和類MyDefaultTrackableEventHandler 之間是依賴關系。設計單例類GameManger 儲存識別的槍械的名字,在該類中設計string 類型name 字段儲存槍械名稱,設計方法SetFirearmsName()獲取槍械名稱。設計類MyDefault?TrackableEventHandler 解析識別圖數(shù)據(jù)庫以及實現(xiàn)模型的加載,在該類中設計GameObject 類型的pregabs儲存槍械模型資源,設計方法OnTrackingFound()加載模型,設計方法OnTrackingLost()刪除模型。

        圖1 AR識圖功能類圖

        3.2 資源加載功能設計

        當用戶掃描槍械識別圖時,加載對應的槍械模型,當用戶點擊菜單欄中的數(shù)據(jù)按鈕時會加載并顯示當前槍械的數(shù)據(jù);當用戶點擊菜單欄中的歷史按鈕時會加載并顯示當前槍械的歷史信息。

        資源加載類圖如圖2 所示,資源加載功能有關類的設計如下:類CollectionUIManager 和類UIManager 都與類InventoryManager 存在依賴關系,類InventoryMan?ager 和類Firearms 組合關系。設計類InventoryManager通過JsonLoadFirearms()方法實現(xiàn)對Item.Json 文件的解析,解析槍的數(shù)據(jù)、歷史和槍械模型Prefab。類Col?lectionUIManager 和類UIManager 實現(xiàn)對類Inventory?Manager 解析的槍的數(shù)據(jù)、歷史和槍械模型Prefab 加載到相應位置。設計類UIManager,在該類中設計方法DataButtonClick()和HistoryButtonClick()實現(xiàn)在識圖場景當用戶點擊數(shù)據(jù)或者歷史按鈕時,顯示對應的數(shù)據(jù)。

        圖2 資源加載功能類圖

        3.3 藏品展示功能設計

        藏品展示功能為了滿足藏品場景的互動性和簡潔性進行單獨設計,當用戶點擊主界面的藏品按鈕,進入藏品界面,在藏品界面的右邊是收藏的槍械列表,左邊是槍械的數(shù)據(jù)以及歷史,中間是槍械模型,用戶能滑動中間屏幕旋轉、放大和縮小槍械模型,也能滑動歷史Panel 查看完整的歷史介紹。當用戶點擊藏品列表的槍械時,在對應位置顯示所點擊槍械的模型、數(shù)據(jù)以及歷史。

        藏品展示功能類的設計如下:類CollectionUIMan?ager 和類InventoryManager 之間是依賴關系,類Inven?toryManager 和類Firearms 之間是組合關系。在類Col?lectionUIManager 中設計方法Init()實現(xiàn)控制藏品場景中槍械列表的刷新;對類InventoryManager 解析的槍的數(shù)據(jù)、歷史和槍械模型Prefab 加載到相應位置,設計方法CollectionButtonClickTo()實現(xiàn)當用戶點擊槍械列表中的槍械圖標時,加載對應槍械的數(shù)據(jù)、歷史和槍械模型Prefab。類Firearms 用來存放槍械對象,在類Inven?toryManager 中設計方法JsonLoadFirearms()解析的槍械數(shù)據(jù),槍械數(shù)據(jù)都是按照類Firearms 對象的狀態(tài)儲存在內存中,方便查找。

        藏品展示功能的類圖設計如圖3 所示。

        圖3 藏品展示功能類圖

        4 項目功能實現(xiàn)

        4.1 AR識圖功能實現(xiàn)

        在SampleScene 場景的Hierarchy 面板中鼠標右鍵創(chuàng)建Vuforia Engine Image,并在該Image 的Inspector面板中點擊選擇Image TargetBehavior 中的Type 為Predefined,Database 為FirearmsDatabase,ImageTarge為槍械中的一個,并將Image 的名稱改為選擇的Imag?eTarge 的名稱一致。重復上述步驟完成所有槍械Im?age 的制作。

        為所有Image 槍械添加MyDafaultTrackableEven?tHandler 腳本,在這個腳本中編寫名字為OnTrack?ableStateChanged()方法,當程序運行時通過該方法中的Stattus 屬性去解析識別到的圖片是否是當前Image圖片,如果不是繼續(xù)識別,如果是當前圖片將調用名字為OnTrackingFound()方法將該槍械模型加載到內存中,通過GameObject 類型的gameobj 去索引模型,通過Instantiate 方法將gameobj 加載到場景中,完成對應槍械模型的加載,實現(xiàn)識圖功能。AR 識圖功能效果圖如圖4 所示。

        圖4 AR識圖功能效果圖

        4.2 資源加載功能實現(xiàn)

        在項目場景的Hirerarchy 面板創(chuàng)建空物體,創(chuàng)建InventoryManager 的腳本并加載在空物體上,通過腳本中的JsonLoadFirearms 方法,以文件讀寫的方式讀入Items.Json 文件中槍械編號、槍械名稱、槍械收藏狀態(tài)、槍械歷史、槍械重量等槍械資源。通過firearmsList 列表存儲JSON 解析的全部槍械數(shù)據(jù),然后通過GetFire?armsState()方法獲取某個槍械的所有數(shù)據(jù)。

        在識圖場景,當用戶識別槍械后,用戶點擊菜單欄中的數(shù)據(jù)按鈕,該按鈕通過監(jiān)聽事件通過MainMe?nuButtonClick()方法通過GameManager 類獲取當前槍械的名稱name 字段,在通過DataButtonClick()方法將槍械名字name 發(fā)送給InventoryManager 類的GetFire?armsText 方法,該方法將返回一個Firearms 對象,該對象存儲著當前槍械的數(shù)據(jù)信息,獲當前數(shù)據(jù)后,將槍械數(shù)據(jù)發(fā)送給Datapanel 面板寫的DataText 的Text 文本,將數(shù)據(jù)顯示在屏幕上;當用戶點擊HistoryButtonClick按鈕時,重復數(shù)據(jù)按鈕方法,將槍械歷史顯示在屏幕上。

        4.3 藏品展示功能實現(xiàn)

        藏品展示功能的實現(xiàn)效果圖如圖5 所示,該功能的實現(xiàn)步驟如下:

        (1)給藏品場景中的Canvas 掛在CollectionUIMan?ager 腳本,當場景運行時,該腳本將通過Init 方法獲取場景中的藏品展示列表CollectionPanel 以及面板下的所用子物體。

        (2)在場景中的Hirerarchy 面板中創(chuàng)建一個空物體,命名為InventoryManager,再掛載InventoryManager腳本,當場景運行時,該腳本將運行腳本中的JsonLoad?Firearms()方法,將Items.Json 文件中的數(shù)據(jù)讀入Fire?List 列表中。Items.Json 文件中通過State 存儲槍械的狀態(tài),通過查看FireList[n].state 的值來確定槍械是否收藏。

        (3)在場景中類CollectionUIManager 通過UpdateS?ceneCollectionFirearmsList()方法將從InventoryManager類的GetCollectionNameList()方法中獲取的收藏中的槍械名稱存儲TextList 列表內,并依次在CollectionPan?el 通過Init()方法將槍械名稱加載到藏品列表中,在屏幕上顯示。根據(jù)當前列表中槍械名稱,通過Resource.load()方法將槍械對應的圖片,從Resource 文件夾內加載到列表中。

        5 結語

        AR 槍械這款應用程序,用戶通過手機掃描槍械識別圖,識別出槍械模型;用戶通過資源加載功能讀寫槍械配置資源,以在UI 界面顯示槍械數(shù)據(jù)信息和歷史信息;用戶通過藏品展示功能,收藏喜愛的槍械。另外,用戶還可以運用槍械模型進行射擊體驗,享受射擊的快樂。

        圖5 藏品展示功能效果圖

        猜你喜歡
        槍械藏品按鈕
        哪個是門鈴真正的按鈕
        小讀者手繪槍械
        輕兵器(2024年1期)2024-02-01 16:09:28
        當你面前有個按鈕
        槍械圖鑒——VKS狙擊步槍
        槍械圖鑒——TS12霰彈槍
        抱樸齋藏品
        李杰森藏品
        譚禮藏品
        槍械的“外掛神器”
        羅妍妍藏品欣賞
        寶藏(2017年11期)2018-01-03 06:46:09
        亚洲国产中文在线二区三区免| 国产麻豆精品传媒av在线| 天天躁日日躁狠狠躁av麻豆| av一区二区三区人妻少妇 | 无码孕妇孕交在线观看| 亚无码乱人伦一区二区| 亚洲色欲色欲www在线观看| 久久久久99精品成人片试看| 小13箩利洗澡无码免费视频| 中文字幕日本av网站| 无码人妻一区二区三区免费看| 国产老熟女狂叫对白| 99re6久精品国产首页| 国产影片免费一级内射| 蜜臀av在线观看| 国产亚洲情侣一区二区无| 欧美精品日韩一区二区三区| 日本淫片一区二区三区| 免费无遮挡无码永久视频| 少妇被爽到高潮动态图| 在线成人tv天堂中文字幕| 一本色道88久久加勒比精品| 人人妻人人澡人人爽欧美一区双| 老少交欧美另类| 久久久久无码精品国| 在线观看国产激情视频| 人妻少妇乱子伦精品| 丝袜国产高跟亚洲精品91| 亚洲国产免费一区二区| 米奇欧美777四色影视在线| 亚洲精品久久中文字幕| 99久久综合狠狠综合久久一区| 国产在线精品观看一区二区三区| 久久国产加勒比精品无码| 丰满岳乱妇在线观看中字无码| 亚洲中文有码一区二区| 日本高清乱码中文字幕| 香蕉久久福利院| 久久久久综合一本久道| 亚洲中文字幕精品视频| 亚洲日韩国产一区二区三区在线|