




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
AR奇石案例Adesignercanusedefaulttexttosimulatewhattextwouldlooklike.Itlooksevenbetterwithyouusingthistext.目錄content01案例簡介02環境配置03功能開發04重點難點PART01案例介紹
AR奇石案例本案例是利用Unity增強現實技術實現的以“奇石”為主題的圖像識別,通過學習制作本案例,使開發者了解我國的奇石文化,增加對傳統文化的認知,豐富民族文化的思想和內涵。用戶可以通過手機攝像機識別奇石圖像,獲取奇石模型,也可以通過手指觸屏來實現奇石的縮放、旋轉等功能。PART02環境配置vuforia首先需要注冊一個Vuforia賬號,建議使用常用qq郵箱注冊登錄以后在Develop界面點擊“AddDatabase”創建一個數據庫點擊“AddTarget”增加圖片數據。最后點擊“DownloadDatabase”下載數據庫Vuforia是創建增強現實應用程序的軟件平臺。開發人員可以輕松地將高級計算機視覺功能添加到任何應用程序,使其能夠識別圖像和對象,并與現實世界中的空間進行交互。安裝vuforia環境0102打開unityHub,在安裝界面,選擇對應版本的編輯器,右側添加模塊,勾選vuforia,繼續安裝。安裝vuforia打開unity,點擊菜單欄GameObject選項欄,看里面是否有vuforia選項,如果有,說明已經安裝。查看自己是否已安裝vuforia5%70%PART03功能開發1.UI界面與交互創建Button菜單欄GameObject-UI中選擇Button,調整其位置與大小,添加image,找到簡介按鈕,將其拖曳至SourceImage處制作簡介面板創建一個Image,修改其大小及位置,找到背景圖片,將其拖曳至SourceImage處1.UI界面與交互創建一個腳本,代碼如下聲明兩個私有變量privateButtonjianjie;privateImagexiangqing;以尋找名字的方法,從場景中獲取簡介按鈕和詳情圖像jianjie=transform.Find("jianjie").GetComponent<Button>();xiangqing=transform.Find("xiangqing").GetComponent<Image>();監聽簡介按鈕事件,判斷是否點擊按鈕,調整詳情的縮放大小transform.localScale:轉換相對于父對象的比例xiangqing.transform.localScale=Vector3.one;2.動畫功能制作識別封面圖像出現書翻頁動畫。1.在GameObject-Vuforia中選擇Image,創建Images對象,用于存放識別圖像。2.Database和ImageTarget分別選擇之前設置好的數據庫“cover”和圖片對象“fengmian”2.動畫功能創建一個腳本,代碼如下定義一個放置動畫的公有變量publicGameObjectmodelPrefab;選擇book動畫預制體,將其拖曳給Hierarchy面板中的fengmian對象和fengmian掛載的腳本的變量ModelPrefab處3.特效功能制作一個落葉的特效打開MyDefaultTrackableEventHandler.cs腳本,編寫如下代碼publicGameObjecttexiaoPrefab;//定義特效選擇特效預制體CFXM3_FallingLeaves,將其拖曳至fengmian對象的腳本變量TexiaoPrefab處。4.音頻播放功能0102選擇fengmian對象,在其屬性面板下添加音效組件。選擇音效TheFadingStories-不再年輕的村莊,將其拖曳至音效組件處4.音頻播放功能打開腳本MyDefaultTrackableEventHandler,代碼如下定義一個私有變量,用于存放音頻privateAudioSourceaudio;繼承項目中的音頻組件audio=this.GetComponent<AudioSource>();識別到圖像時播放背景音效if(!audio.isPlaying)//判斷音頻是否播放{audio.Play();//播放音頻}5.生成與銷毀功能010203找到預制體,拖拽到腳本變量ModelPrefab處,并隱藏模型制作第一張奇石識別圖像,選擇fengmian對象,Ctrl+D復制一份修改huanglashi對象屬性面板里的數據庫和識別圖片,Database選擇stone,ImageTraget選擇huangla2,并且移除音頻組件AudioSource。5.生成與銷毀功能打開腳本MyDefaultTrackableEventHandler,代碼如下定義一個UI變量,用于放置UI預制體publicGameObjectthisui;在代碼的最前面需對使用UI進行聲明usingUnityEngine.UI;識別到圖片時生成奇石模型。(Instantiate:復制物體及其位置和方向)Quaternion(四元數):用于角度的旋轉。Euler函數:返回一個旋轉角度,繞z軸旋轉z度,繞x軸旋轉x度,繞y軸旋轉y度GameObjectmodel=GameObject.Instantiate(modelPrefab,transform.position-newVector3(0f,0f,0f),transform.rotation);model.transform.
=this.transform;model.transform.rotation=Quaternion.Euler(0,-180,0);5.生成與銷毀功能生成特效GameObjecttexiao=GameObject.Instantiate(texiaoPrefab,transform.position,Quaternion.identity);texiao.transform.parent=this.transform;生成UIGameObjectui=GameObject.Instantiate(thisui);ui.transform.parent=this.transform;未識別到圖片時銷毀已生成的模型。(Destroy:銷毀游戲物體。Find可以直接查找組件)Destroy(GameObject.Find("book(Clone)"));Destroy(GameObject.Find("huangla(Clone)"));Destroy(GameObject.Find("laibinshi(Clone)"));Destroy(GameObject.Find("dahua(Clone)"));Destroy(GameObject.Find("caitao(Clone)"));6.旋轉功能創建一個新腳本,命名為Rotate,代碼如下定義兩個變量,用于控制物體旋轉的速度floatxSpeed=150f;//水平速度floatySpeed=50f;//垂直速度先判斷是否觸摸了屏幕,再判斷是幾個手指觸摸。Input.GetMouseButton(0)表示鼠標左鍵按下。Input.touchCount==1表示單點觸摸if(Input.GetMouseButton(0)){if(Input.touchCount==1)6.旋轉功能判斷手指是否移動及移動方向。Input.GetTouch(0).phase==TouchPhase.Moved表示移動觸摸if(Input.GetTouch(0).phase==TouchPhase.Moved){//以手指橫向移動的值繞世界坐標的Y軸旋轉transform.Rotate(Vector3.up*Input.GetAxis("MouseX")*xSpeed*Time.deltaTime,
Space.World);//以手指縱向移動的值繞世界坐標的X軸旋轉transform.Rotate(Vector3.left*Input.GetAxis("MouseY")*ySpeed*Time.deltaTime,
Space.World);7.縮放功能通過兩個手指的手勢實現模型的放大與縮小原理通過判斷兩個手指間的距離變化來實現,若距離變大,則放大模型,若距離變小,則縮小模型。可以使用兩點間的距離公式√[(x1-x2)2+(y1-y2)2]來計算7.縮放功能創建一個新腳本,命名為EnLarge,代碼如下首先判斷手勢是放大還是縮小bool:返回true或falseMathf.Sqrt:返回一個數的平方根length1表示初始距離。length2表示手指變化后的距離。通過兩者比較,判斷手勢(oP1.x-oP2.x)*(oP1.x-oP2.x)+(oP1.y-oP2.y)*(oP1.y-oP2.y)
:[(x1-x2)2+(y1-y2)2]boolisEnLarge(Vector2oP1,Vector2oP2,Vector2nP1,Vector2nP2){floatlength1=Mathf.Sqrt((oP1.x-oP2.x)*(oP1.x-oP2.x)+(oP1.y-oP2.y)*(oP1.y-oP2.y));floatlength2=Mathf.Sqrt((nP1.x-nP2.x)*(nP1.x-nP2.x)+(nP1.y-nP2.y)*(nP1.y-nP2.y));if(length1<length2){returntrue;}else{returnfalse;}7.縮放功能定義兩個Vector2類型的變量,記錄兩個手指初始的位置Vector2oldPos1;Vector2oldPos2;首先判斷是否有兩個手指(Input.touchCount:觸摸數量)if(Input.touchCount==2)再判斷手指是否在移動if(Input.GetTouch(0).phase==TouchPhase.Moved||Input.GetTouch(1).phase==TouchPhase.Moved)
定義兩個Vector2類型的變量,記錄兩個手指移動后的位置Vector2temPos1=Input.GetTouch(0).position;Vector2temPos2=Input.GetTouch(1).position;7.縮放功能調用isEnLarge,將數據傳給形參,比較length1和length2,實現放大或縮小。if(isEnLarge(oldPos1,oldPos2,temPos1,temPos2)){floatoldScale=transform.localScale.x;//原始大小floatnewScalse=oldScale*1.025f;//放大的倍數transform.localScale=newVector3(newScalse,newScalse,newScalse);//整體放大}else{floatoldScale=transform.localScale.x;floatnewScalse=oldScale/1.025f;//縮小的倍數transform.localScale=newVector3(newScalse,newScalse,newScalse);//整體縮小8.案例發布在菜單欄中點擊File-BuildSettings,點擊PlayerSettings在PC端勾選VuforiaAugmentedRealit,最后點擊Build即可導出app。PART04重點難點難點重點1學會使用vuforia,了解vuforia的功能。vuforia識別快,功能也較多,他除了可以識別圖片,還可以識別文本等,建議大家去學習。重點2:在功能開發的時,一定要理清代碼的邏輯,例如在實現縮放功能時,先寫判斷手勢的方法,然后在實現縮放時在調用。難點難點1:在實現模型生成的時候,使Instantiate函數時,要計算好模型生成的位置及大小,難點2:在實現縮放功能的時候,要判斷是幾個手指的觸碰,如何判斷是放大還是縮小,以及利用數學公式去計算距離。為夢想不止步Adesignercanusedefaulttexttosimulatewhattextwouldlooklike.Itlooksevenbetterwithyouusingthistext.梧州學院AR中草藥功能實現——AR手冊目錄content01UI設計02按鈕交互03音頻播放功能04打包發布PART01UI設計UI設計首先導入我們準備好的資源包里面的圖像資源包中包含了我們所要使用到的美術資源UI設計我們新建Canvas,并在Canvas里面添加圖片image,然后給Image改好名字再將我們的Canvas里的圖片替換成我們的美術資源并且在界面中擺放好位置主要場景UI開始界面UIUI設計
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年文化產業管理挑戰性試題及答案
- 專利無效宣告的程序試題及答案
- 光電工程師證書考試中常見的誤解試題及答案
- 第5課《大自然的語言》比較閱讀教學設計 2023-2024學年統編版語文八年級下冊
- 找準2024年專利代理人試題及答案
- 深入解析2025公共營養師考試試題及答案
- 專利代理人職業生涯規劃2024年試題及答案
- 如何針對專利申請進行市場定位與分析試題及答案
- 文化產業管理考試深度試題及答案
- 2024年西醫臨床OLD病種試題及答案
- 房地產用戶需求分析報告
- 檔案學概論-馮惠玲-筆記
- DL∕T 1094-2018 電力變壓器用絕緣油選用導則
- 新能源電池產業報告課件
- 2024急救培訓心肺復蘇課件
- 《農業企業經營與管理》課件-項目七 農產品質量安全
- DB32∕T 3255-2017 液氯汽車罐車、罐式集裝箱卸載安全技術要求
- 南陽醫專三年制專科衛生信息管理專業人才培養方案
- 基層派出所消防培訓
- 中小學生中醫藥科普知識競賽
- (正式版)JBT 14694-2024 電氣絕緣用合成有機酯與結構材料的相容性試驗方法
評論
0/150
提交評論