999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于AR技術的嶺南地標建筑交互系統設計

2023-06-15 07:40:20李廣松官澤良吳吉宏
無線互聯科技 2023年3期
關鍵詞:按鈕動畫建筑

李廣松 官澤良 吳吉宏

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

關鍵詞:增強現實;嶺南地標建筑;Unity 3D;Vuforia

中圖分類號:TP302? 文獻標志碼:A

0 引言

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

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

1 系統架構

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

系統使用地標建筑卡片作為識別對象,借助移動設備外置攝像頭進行識別,并返回識別結果。Unity根據Vuforia返回的識別結果實現邏輯功能。系統把虛擬環境中的模型、動畫、語音、文字和特效疊加在現實世界中,并通過單點或多點觸控進行交互設計架構,如圖1所示。

2 設計流程

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

3 項目搭建

3.1 配置Unity項目

系統使用UnityHub 3.2工具并以3D模板創建

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

3.2 識別圖與模型

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

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

3.3 Vuforia項目構建

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

4 系統功能實現

4.1 識別對象和播放特效

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

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

{

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

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

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

}

Awake()

{

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

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

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

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

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

}

4.2 模型旋轉與縮放

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

//如果當前接觸屏幕手指數為1,且手指編號0,當前幀的狀態為移動狀態。

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

{

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

rotateSpeed);//根據當前手指滑動距離和方向進行旋轉模型。

}

//如果當前接觸屏幕手指數為2,且任意一個手指的狀態為移動狀態。

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);

//計算手指間當前距離

float curDistance=

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

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

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

//進行等比縮放

transform.localScale=

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

maxScale);

}

4.3 虛擬按鈕交互

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

//注冊事件

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;//模型旋轉控制

case "Des":

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

case "Ani":

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

}

}

4.4 建筑展示與動畫

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

5 導出與測試

5.1 導出設置

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

5.2 調試和測試

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

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

5.3 測試結果分析

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

6 結語

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

參考文獻

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

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

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

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

[5]張正柱,羅成立.基于Vuforia引擎的船政文化AR文創產品設計[J].寧夏大學學報(自然科學版),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

猜你喜歡
按鈕動畫建筑
這些按鈕能隨便按嗎?
當你面前有個按鈕
《北方建筑》征稿簡則
北方建筑(2021年6期)2021-12-31 03:03:54
做個動畫給你看
關于建筑的非專業遐思
文苑(2020年10期)2020-11-07 03:15:36
動畫發展史
建筑的“芯”
現代裝飾(2020年6期)2020-06-22 08:43:12
我的動畫夢
文苑(2019年22期)2019-12-07 05:28:56
我是動畫迷
學生天地(2016年9期)2016-05-17 05:45:06
獨特而偉大的建筑
主站蜘蛛池模板: 91在线一9|永久视频在线| 国产色伊人| 色婷婷亚洲综合五月| 日韩欧美高清视频| 国产偷倩视频| a欧美在线| 亚洲一区二区在线无码| 麻豆国产精品一二三在线观看| 国产无套粉嫩白浆| 黄色三级网站免费| 久久综合婷婷| 久久精品视频一| 青青青国产免费线在| 福利在线一区| 色老头综合网| 亚洲综合经典在线一区二区| 国产va在线观看免费| 精品国产三级在线观看| 亚洲第一页在线观看| 青青网在线国产| 亚洲一区二区三区香蕉| 久久香蕉国产线看观| 最新精品国偷自产在线| 亚洲成人高清在线观看| 日韩无码真实干出血视频| 日韩在线中文| 91亚洲精品第一| 2020亚洲精品无码| 久久精品aⅴ无码中文字幕| 国产精品亚洲va在线观看| 九九精品在线观看| 亚洲成A人V欧美综合天堂| 国产精品欧美在线观看| 老司国产精品视频| 中文国产成人精品久久| 久操中文在线| a级毛片毛片免费观看久潮| 欧美日韩91| 1769国产精品免费视频| 老熟妇喷水一区二区三区| 国产69精品久久久久孕妇大杂乱 | 在线99视频| 午夜精品久久久久久久2023| 青青国产视频| 国产理论最新国产精品视频| 97视频免费在线观看| 正在播放久久| 亚洲精品老司机| 欧美亚洲一区二区三区在线| 国产高清无码第一十页在线观看| 国产精品久久国产精麻豆99网站| 91精品日韩人妻无码久久| 97精品久久久大香线焦| 欧美一级在线| 9999在线视频| 国产91精品久久| 国产成人综合网| 无码精品一区二区久久久| 无码福利日韩神码福利片| 一级看片免费视频| 国产大片喷水在线在线视频| 人妻精品久久无码区| 精品无码一区二区三区电影| 亚洲国产成熟视频在线多多| 欧美一区精品| 亚洲国模精品一区| 成人精品午夜福利在线播放| 99尹人香蕉国产免费天天拍| 国产农村1级毛片| 国产99视频免费精品是看6| 福利片91| 亚洲天堂色色人体| 精品亚洲麻豆1区2区3区| 国产成人精品午夜视频'| Aⅴ无码专区在线观看| 欧美一级片在线| 精品国产毛片| 国产在线精品网址你懂的| 国产成人亚洲综合a∨婷婷| 亚洲精选无码久久久| 国产美女精品一区二区| 免费 国产 无码久久久|