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

        ?

        基于AR技術(shù)的嶺南地標(biāo)建筑交互系統(tǒng)設(shè)計

        2023-06-15 07:40:20李廣松官澤良吳吉宏
        無線互聯(lián)科技 2023年3期
        關(guān)鍵詞:嶺南按鈕動畫

        李廣松 官澤良 吳吉宏

        摘要:文章采用Unity 3D游戲引擎和Vuforia SDK插件,開發(fā)完成了一款基于嶺南地標(biāo)建筑的增強現(xiàn)實3D虛擬交互系統(tǒng)。通過3DS MAX構(gòu)建虛擬的地標(biāo)建筑模型,應(yīng)用Photoshop設(shè)計地標(biāo)建筑卡片,使用Vuforia SDK完成卡片識別,實現(xiàn)虛擬環(huán)境中模型、動畫、語音、文字、特效和多點觸控融合交互功能。導(dǎo)出apk文件,并在安卓平臺上安裝測試。測試結(jié)果表明,該系統(tǒng)實現(xiàn)了相關(guān)功能。文章為嶺南地標(biāo)建筑的虛擬展示提供了一種增強現(xiàn)實技術(shù)方案。

        關(guān)鍵詞:增強現(xiàn)實;嶺南地標(biāo)建筑;Unity 3D;Vuforia

        中圖分類號:TP302? 文獻標(biāo)志碼:A

        0 引言

        2021年,習(xí)近平總書記在福建考察調(diào)研時強調(diào),保護好傳統(tǒng)街區(qū)、保護好古建筑、保護好文物,就是保存了城市的歷史和文脈。嶺南建筑是嶺南文化的物質(zhì)組成部分,是嶺南地域文化的一種現(xiàn)象,同時,嶺南建筑也是技術(shù)與藝術(shù)的綜合體,需要滿足人們實用和審美的雙重需求[1]。元宇宙語境下,嶺南的建筑遺產(chǎn)在不斷創(chuàng)新活化利用手段的同時,建筑與建筑師之間,也將構(gòu)建起元宇宙的嶺南活態(tài)空間新思維[2]。增強現(xiàn)實(Augmented Reality,AR)技術(shù)是一種將計算機仿真的虛擬信息經(jīng)過算法處理后疊加在真實的物理世界之上,增強用戶對現(xiàn)實世界的虛擬體驗和認知的新技術(shù)。以增強現(xiàn)實為主的三維計算技術(shù)可以為學(xué)習(xí)者構(gòu)建立體化學(xué)習(xí)場景,增強了學(xué)習(xí)者的學(xué)習(xí)臨場感和沉浸式學(xué)習(xí)體驗[3]。增強現(xiàn)實技術(shù)在工業(yè)、醫(yī)療、軍事、旅游文化[4-5]和教育等多個領(lǐng)域均有應(yīng)用,但該技術(shù)在地標(biāo)建筑虛擬展示方面卻少有涉獵。

        本文使用AR技術(shù)進行嶺南地標(biāo)建筑的虛擬交互系統(tǒng)開發(fā)。系統(tǒng)采用Unity 3D引擎和Vuforia插件為開發(fā)平臺,以6個嶺南地標(biāo)建筑為例,闡述了AR產(chǎn)品的開發(fā)流程,并具體分析了開發(fā)中使用到的關(guān)鍵技術(shù)。系統(tǒng)采用的多功能融合開發(fā)為建筑類傳統(tǒng)文化的虛擬傳承提供了一種AR技術(shù)方案。

        1 系統(tǒng)架構(gòu)

        Unity是由Unity Technologies開發(fā)的專業(yè)游戲引擎。開發(fā)者使用其圖形化編輯器可以創(chuàng)建三維虛擬現(xiàn)實交互環(huán)境。系統(tǒng)通過使用C#編寫交互腳本,提供沉浸式和實時交互反饋。Vuforia是一個增強現(xiàn)實引擎,是針對移動設(shè)備的增強現(xiàn)實軟件開發(fā)工具包。本文采用Unity 3D 2019.4版本和Vuforia 8.5版本進行開發(fā)。

        系統(tǒng)使用地標(biāo)建筑卡片作為識別對象,借助移動設(shè)備外置攝像頭進行識別,并返回識別結(jié)果。Unity根據(jù)Vuforia返回的識別結(jié)果實現(xiàn)邏輯功能。系統(tǒng)把虛擬環(huán)境中的模型、動畫、語音、文字和特效疊加在現(xiàn)實世界中,并通過單點或多點觸控進行交互設(shè)計架構(gòu),如圖1所示。

        2 設(shè)計流程

        本系統(tǒng)主要針對Android平臺進行設(shè)計,設(shè)計流程如圖2所示。Unity平臺打包發(fā)布為.apk格式的安裝包,并在移動平臺上運行。系統(tǒng)首先在Unity 3D中通過Package Manager導(dǎo)入Vuforia SDK插件,然后在Vuforia官網(wǎng)通過注冊獲取許可密鑰和創(chuàng)建數(shù)據(jù)庫,并上傳嶺南地標(biāo)建筑識別圖,最后下載Unity Package資源包,并導(dǎo)入Unity項目。在Unity中,開發(fā)者配置Vuforia SDK環(huán)境和編寫腳本,實現(xiàn)對模型、UI、動畫、語音、文字和特效展示效果的控制。最后進行調(diào)試、打包和移動平臺測試。

        3 項目搭建

        3.1 配置Unity項目

        系統(tǒng)使用UnityHub 3.2工具并以3D模板創(chuàng)建

        Unity工程。工程打開后,首先把File->Build Settings->Platform窗口的發(fā)布平臺設(shè)置為Android。接著打開Edit->Preferences->External Tools窗口,檢查并安裝JDK,Android SDK,Android NDK3個配置項。最后安裝Gradle工具。

        3.2 識別圖與模型

        Vuforia是針對識別對象的自然特征點進行檢測匹配,其實時檢測的地標(biāo)建筑卡片的特征點跟Vuforia數(shù)據(jù)庫中的模板圖片的特征點一致時才能識別成功。為提高Vuforia識別時的準確性,系統(tǒng)地標(biāo)識別圖的設(shè)計采用了良好的對比度、較明顯的特征和豐富的細節(jié)的圖形。識別圖的文件類型為JPG或PNG,文件格式為8位灰度或24位RGB,文件大小不超過2 M。項目中使用Photoshop制作的識別圖(見圖3)。

        在地標(biāo)建筑模型構(gòu)建中,項目使用了3DS MAX軟件的Extrule,Mirror,Bevel,Loft,Edit Spline命令。比如在“肇慶古城墻”的建模中,橫梁、柱基等就較多地使用了Extrule,Edit Spline命令。為了減少模型面數(shù)和保證運行流暢度,項目在建模過程中,避免使用NURMS強制細分命令和渦輪平滑命令,同時使用紋理映射以提高模型逼真程度。

        3.3 Vuforia項目構(gòu)建

        Vuforia許可密鑰的獲取首先需要在Vuforia官網(wǎng)注冊賬號并登錄,然后選擇Develop菜單和License Manager標(biāo)簽,再通過Get Basic按鈕創(chuàng)建License Name,最后選擇并獲取許可密鑰License Key。Vuforia資源包的獲取需要選擇Target Manager標(biāo)簽,并通過Add Database按鈕創(chuàng)建Device類型的Database,再選擇Add Target按鈕上傳識別對象并下載資源包。Unity項目先通過Package Manager導(dǎo)入Vuforia SDK插件,在Resources/VuforiaConfiguration文件的屬性窗口中找到App License Key,再添加Vuforia的許可密鑰License Key。最后,項目導(dǎo)入Vuforia的數(shù)據(jù)資源包。將場景中的攝像頭替換為AR攝像頭,項目完成Vuforia配置。

        4 系統(tǒng)功能實現(xiàn)

        4.1 識別對象和播放特效

        在Hierarchy面板中,工程添加圖片識別對象ImageTarget,并在其屬性窗口中配置對應(yīng)的Vuforia數(shù)據(jù)庫以及識別圖。程序運行時,如果移動設(shè)備的攝像頭成功捕獲到識別圖或者可識別對象狀態(tài)發(fā)生變化,會通知TrackableBehaviour組件中的所有監(jiān)聽者。在Unity編輯器中,先創(chuàng)建新腳本繼承并實現(xiàn)Itrackable EventHandler接口,然后獲取識別對象ImageTarget身上需要綁定的TrackableBehaviour組件。當(dāng)對識別對象識別狀態(tài)發(fā)生變化時,TrackableBehaviour的Register TrackableEventHandler注冊的所有監(jiān)聽者會通知OnTrackableStateChanged函數(shù)。識別流程代碼如下:

        if(Status == DETECTED‖TRACKED‖EXTENDED_TRACKED)//識別成功

        {

        Instantiate(target);//實例化模型,自動調(diào)用target上的Awake函數(shù)

        target.transform.SetParent(this);//模型置為ImageTarget子物體

        GetComponentInChildren().enabled=true;//顯示模型對應(yīng)的UI

        }

        Awake()

        {

        AdSource.clip = AdClips[0];//添加特效的聲音片段

        AdSource.Play();//播放音效

        GameObject effect = Instantiate(effectPrefab);//播放特效

        effect.transform.SetParent(this.transform);//特效對象置為模型子物體

        Destroy(effect,2f);//特效播放2秒后銷毀

        }

        4.2 模型旋轉(zhuǎn)與縮放

        系統(tǒng)通過Unity內(nèi)置輸入系統(tǒng)接口實現(xiàn)手指交互,并操控模型的縮放與旋轉(zhuǎn)。Unity中Touch類用來記錄一個手指觸摸在屏幕上的狀態(tài)與位置的相關(guān)數(shù)據(jù),用來完成對有觸摸屏的設(shè)備進行交互邏輯實現(xiàn)。其通過Input類的touchSupported與multiTouch Enable的值判斷機型差異,并能在不具備觸摸功能或多指觸摸功能時關(guān)閉旋轉(zhuǎn)或縮放模型功能。單指觸摸屏幕且進行左右滑動時,系統(tǒng)根據(jù)滑動距離旋轉(zhuǎn)模型。雙指觸摸且移動時,其根據(jù)雙指移動后的距離與剛接觸屏幕時的距離之間的差值進行判斷,如果差值大于0,則距離變大和模型放大,否則縮小。實現(xiàn)代碼如下:

        //如果當(dāng)前接觸屏幕手指數(shù)為1,且手指編號0,當(dāng)前幀的狀態(tài)為移動狀態(tài)。

        if(Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved)

        {

        transform.Rotate(transform.up * (Input.GetTouch(0).deltaPosition.x / 1920)*

        rotateSpeed);//根據(jù)當(dāng)前手指滑動距離和方向進行旋轉(zhuǎn)模型。

        }

        //如果當(dāng)前接觸屏幕手指數(shù)為2,且任意一個手指的狀態(tài)為移動狀態(tài)。

        else if (Input.touchCount == 2 && (Input.GetTouch(0).phase == TouchPhase.Moved ‖ Input.GetTouch(1).phase == TouchPhase.Moved))

        {

        //計算手指間原始距離

        float preDistance=

        Vector2.Distance(Input.GetTouch(0).rawPosition,Input.GetTouch(1).rawPosition);

        //計算手指間當(dāng)前距離

        float curDistance=

        Vector2.Distance(Input.GetTouch(0).position,Input.GetTouch(1).position);

        curDistance -= preDistance // 計算偏移距離

        curDistance /= 720;//根據(jù)屏幕分辨率控制偏移距離

        //進行等比縮放

        transform.localScale=

        Vector3.one * Mathf.Clamp(originalScale.x + curDistance * scaleSpeed,minScale,

        maxScale);

        }

        4.3 虛擬按鈕交互

        用戶在虛擬場景進行交互時,虛擬按鈕通過遮擋模型圖形模擬觸摸按鈕的效果。虛擬按鈕的設(shè)置需要選中場景中的識別對象,在屬性面板中展開Image Target Behaviour組件的Advanced屬性,點擊Add Virtual Button。在場景中,選中虛擬按鈕對象可以對其位置信息進行調(diào)整,在其組件Virtual Button Behaviour上可以設(shè)置按鈕名稱與觸摸識別的靈敏度。在自定義腳本中,項目通過Virtual Button Behaviour組件類中的RegisterEventHandler函數(shù)注冊事件,并通過虛擬按鈕的名稱對按鈕事件進行響應(yīng)。

        //注冊事件

        VirtualButtonBehaviour[] vbs = GetComponentsInChildren();

        for (int i = 0;i < vbs.Length;++i)

        {

        vbs[i].RegisterEventHandler(this);

        }

        //虛擬按鈕事件

        public void OnButtonPressed(VirtualButtonBehaviour vb)

        {

        switch (vb.VirtualButtonName)

        {

        case "Rot":

        OnRotButtonClick();break;//模型旋轉(zhuǎn)控制

        case "Des":

        desPanel.SetActive(true);break;//顯示模型文本和語音面板

        case "Ani":

        OnAniButtonClick();break;//模型動畫控制

        }

        }

        4.4 建筑展示與動畫

        系統(tǒng)以建筑展示為目的,通過分離模型部件的形式進行部件介紹和細節(jié)展示。當(dāng)點擊虛擬按鈕展開建筑細節(jié)時,系統(tǒng)就會觸發(fā)交互邏輯,并獲取對應(yīng)模型上的Animator組件。Animator是Unity 3D的動畫狀態(tài)機,是把Animation動畫片段進行統(tǒng)一管理和邏輯狀態(tài)管理的組件,系統(tǒng)通過Animator組件進行圖形化狀態(tài)管理。當(dāng)虛擬按鈕觸發(fā)動畫播放邏輯時,系統(tǒng)展開動畫,并對展開完畢時的狀態(tài)進行定格,展開完畢時的動畫效果如圖4所示。

        5 導(dǎo)出與測試

        5.1 導(dǎo)出設(shè)置

        系統(tǒng)導(dǎo)出apk時需要進行設(shè)置,設(shè)置內(nèi)容是Project Settings->Player中的Company Name,Product Name與Minimum API Level3項。為避免許多系統(tǒng)層面上的問題,Minimum API Level設(shè)置項需要適當(dāng)提高。本文建議先進行空項目空場景導(dǎo)出,以避免項目復(fù)雜后影響報錯判斷。

        5.2 調(diào)試和測試

        調(diào)試需要啟用ADB調(diào)試功能。首先在Build Settings->Android中勾選Development Build和Script Debugging,并在移動設(shè)備中開啟USB調(diào)試功能,然后通過數(shù)據(jù)線連接開發(fā)設(shè)備端以及移動設(shè)備,最后重新打包并運行App,Unity會輸出調(diào)試信息。

        Unity調(diào)試沒錯后,導(dǎo)出apk,并復(fù)制到移動設(shè)備上安裝并運行。程序運行時,將攝像頭聚焦到識別圖上,如果未識別到,說明識別圖可能質(zhì)量低,應(yīng)重新制作。如果模型顯示正常,對交互功能進行測試,主要測試手指觸摸旋轉(zhuǎn)、縮放等操作。UI測試主要測試在不同手機分辨率下UI是否會拉伸和位置偏移等。UI測試需要多機型支持,系統(tǒng)采用主流的基于安卓系統(tǒng)手機品牌,包括華為、榮耀、小米和Vivo,使用Vivo進行測試的效果如圖5所示。

        5.3 測試結(jié)果分析

        系統(tǒng)經(jīng)過打包并在手機端進行安裝測試,對掃描地標(biāo)建筑識別圖完成后出現(xiàn)的模型進行交互操作,實現(xiàn)了動畫、語音、文字、特效和多點觸控功能。測試結(jié)果為:掃描對應(yīng)的6張識別圖,識別圖的識別率為100%,模型顯示正確率為100%,識別成功時模型出現(xiàn)時間小于0.1 s,實現(xiàn)了真實世界和虛擬世界的實時交互融合以及虛擬物體和真實物體的精確3D配準。經(jīng)反復(fù)測試,該系統(tǒng)功能穩(wěn)定,人機交互流暢,達到了較好的增強實境效果。

        6 結(jié)語

        系統(tǒng)采用C#語言,通過Unity 3D 2019.4引擎和高通Vuforia 8.5插件進行開發(fā),并設(shè)計了地標(biāo)建筑識別圖,實現(xiàn)了在虛擬場景中對地標(biāo)建筑模型進行交互的功能。系統(tǒng)通過實例化模型時調(diào)用模型上的Awake函數(shù),實現(xiàn)語音和特效播放,通過虛擬按鈕實? 現(xiàn)虛擬場景和UI交互,通過Animator對Animation動畫片段進行邏輯狀態(tài)管理,并在基于安卓系統(tǒng)的多個手機品牌下測試成功。由于模型和貼圖制作精細,存在的問題是導(dǎo)出的apk文件偏大,接下來的研究重點是apk的瘦身,研究的方向是編譯日志、冗余資源和AssetBundle打包等。

        參考文獻

        [1]陳詩祺.地域文化影響下嶺南建筑“怪而實用”的特征研究[D].廣州:華南理工大學(xué),2020.

        [2]唐培峰.嶺南建筑或在元宇宙中永久存檔[N].廣東建設(shè)報,2022-05-30(008).

        [3]張國云,楊文正,趙梅.“技術(shù)賦能學(xué)習(xí)”視域下新興技術(shù)在教育APP中的應(yīng)用前瞻分析[J].中國電化教育,2018(10):107-117.

        [4]梁紅昕.基于增強現(xiàn)實技術(shù)的粵西文化旅游體驗平臺設(shè)計研究[J].家具與室內(nèi)裝飾,2020(8):86-87.

        [5]張正柱,羅成立.基于Vuforia引擎的船政文化AR文創(chuàng)產(chǎn)品設(shè)計[J].寧夏大學(xué)學(xué)報(自然科學(xué)版),2022(1):121-124.

        (編輯 何 琳)

        Design of Lingnan landmark building interaction system based on AR technology

        Li? Guangsong, Guan? Zeliang, Wu? Jihong

        (Guangdong Polytechnic, Foshan 528041, China)

        Abstract:? This article uses the Unity 3D game engine and Vuforia SDK plug-in to develop an augmented reality 3D virtual interaction system based on Lingnan landmark buildings. Build a virtual landmark building model through 3DS MAX, use Photoshop to design landmark building cards, use Vuforia SDK to complete card recognition, and realize the interactive functions of model, animation, voice, text, special effects and multi-touch integration in the virtual environment. Export the apk file and install the test on the Android platform. The test results show that the system has achieved relevant functions. This article provides an augmented reality technology solution for the virtual display of Lingnan landmark buildings.

        Key words: augmented reality; Lingnan landmark building; Unity 3D;Vuforia

        猜你喜歡
        嶺南按鈕動畫
        哪個是門鈴真正的按鈕
        當(dāng)你面前有個按鈕
        憶嶺南
        黃河之聲(2022年14期)2022-11-16 10:58:50
        做個動畫給你看
        雨嶺南
        心聲歌刊(2020年5期)2020-11-27 01:56:04
        動畫發(fā)展史
        我的動畫夢
        文苑(2019年22期)2019-12-07 05:28:56
        不辭長作嶺南人
        商周刊(2018年26期)2018-12-29 12:55:58
        死循環(huán)
        我是動畫迷
        亚洲国产一区二区三区| 亚洲熟女av超清一区二区三区| 欧美h久免费女| 丝袜美腿亚洲综合第一页| 久久理论片午夜琪琪电影网| 成人黄色网址| 成人午夜视频一区二区无码| 久久久精品人妻一区二区三区免费| 午夜福利一区在线观看中文字幕| 亚洲中文字幕成人无码| 亚欧国产女人天堂Av在线播放| 亚洲AV手机专区久久精品| 日韩在线一区二区三区中文字幕| 十八禁无遮挡99精品国产| 色狠狠一区二区三区香蕉| 国产成人永久在线播放| 亚洲人成精品久久熟女| 免费无码精品黄av电影| 亚洲av永久无码一区| 在线偷窥制服另类| 一区二区三区乱码专区| 国产精品美女久久久久av超清| av网站免费线看| 国产美女久久久亚洲综合| 99久久99久久久精品蜜桃| 亚洲精品熟女国产| 亚洲无码a∨在线视频| 亚洲精品女人天堂av麻| 国产精品久久久久久久久绿色| 亚洲乱码国产一区三区| 精品一二区| 久久精品亚洲精品国产区| 亚洲乱亚洲乱妇| 欧美色精品91av| 国产日韩精品视频一区二区三区| 极品尤物人妻堕落沉沦| 激情综合一区二区三区| 在线观看国产三级av| 一级一片内射视频网址| 99国产精品自在自在久久| 国产日韩欧美网站|