版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
AR奇石案例Adesignercanusedefaulttexttosimulatewhattextwouldlooklike.Itlooksevenbetterwithyouusingthistext.目錄content01案例簡介02環(huán)境配置03功能開發(fā)04重點難點PART01案例介紹
AR奇石案例本案例是利用Unity增強現(xiàn)實技術(shù)實現(xiàn)的以“奇石”為主題的圖像識別,通過學(xué)習制作本案例,使開發(fā)者了解我國的奇石文化,增加對傳統(tǒng)文化的認知,豐富民族文化的思想和內(nèi)涵。用戶可以通過手機攝像機識別奇石圖像,獲取奇石模型,也可以通過手指觸屏來實現(xiàn)奇石的縮放、旋轉(zhuǎn)等功能。PART02環(huán)境配置vuforia首先需要注冊一個Vuforia賬號,建議使用常用qq郵箱注冊登錄以后在Develop界面點擊“AddDatabase”創(chuàng)建一個數(shù)據(jù)庫點擊“AddTarget”增加圖片數(shù)據(jù)。最后點擊“DownloadDatabase”下載數(shù)據(jù)庫Vuforia是創(chuàng)建增強現(xiàn)實應(yīng)用程序的軟件平臺。開發(fā)人員可以輕松地將高級計算機視覺功能添加到任何應(yīng)用程序,使其能夠識別圖像和對象,并與現(xiàn)實世界中的空間進行交互。安裝vuforia環(huán)境0102打開unityHub,在安裝界面,選擇對應(yīng)版本的編輯器,右側(cè)添加模塊,勾選vuforia,繼續(xù)安裝。安裝vuforia打開unity,點擊菜單欄GameObject選項欄,看里面是否有vuforia選項,如果有,說明已經(jīng)安裝。查看自己是否已安裝vuforia5%70%PART03功能開發(fā)1.UI界面與交互創(chuàng)建Button菜單欄GameObject-UI中選擇Button,調(diào)整其位置與大小,添加image,找到簡介按鈕,將其拖曳至SourceImage處制作簡介面板創(chuàng)建一個Image,修改其大小及位置,找到背景圖片,將其拖曳至SourceImage處1.UI界面與交互創(chuàng)建一個腳本,代碼如下聲明兩個私有變量privateButtonjianjie;privateImagexiangqing;以尋找名字的方法,從場景中獲取簡介按鈕和詳情圖像jianjie=transform.Find("jianjie").GetComponent<Button>();xiangqing=transform.Find("xiangqing").GetComponent<Image>();監(jiān)聽簡介按鈕事件,判斷是否點擊按鈕,調(diào)整詳情的縮放大小transform.localScale:轉(zhuǎn)換相對于父對象的比例xiangqing.transform.localScale=Vector3.one;2.動畫功能制作識別封面圖像出現(xiàn)書翻頁動畫。1.在GameObject-Vuforia中選擇Image,創(chuàng)建Images對象,用于存放識別圖像。2.Database和ImageTarget分別選擇之前設(shè)置好的數(shù)據(jù)庫“cover”和圖片對象“fengmian”2.動畫功能創(chuàng)建一個腳本,代碼如下定義一個放置動畫的公有變量publicGameObjectmodelPrefab;選擇book動畫預(yù)制體,將其拖曳給Hierarchy面板中的fengmian對象和fengmian掛載的腳本的變量ModelPrefab處3.特效功能制作一個落葉的特效打開MyDefaultTrackableEventHandler.cs腳本,編寫如下代碼publicGameObjecttexiaoPrefab;//定義特效選擇特效預(yù)制體CFXM3_FallingLeaves,將其拖曳至fengmian對象的腳本變量TexiaoPrefab處。4.音頻播放功能0102選擇fengmian對象,在其屬性面板下添加音效組件。選擇音效TheFadingStories-不再年輕的村莊,將其拖曳至音效組件處4.音頻播放功能打開腳本MyDefaultTrackableEventHandler,代碼如下定義一個私有變量,用于存放音頻privateAudioSourceaudio;繼承項目中的音頻組件audio=this.GetComponent<AudioSource>();識別到圖像時播放背景音效if(!audio.isPlaying)//判斷音頻是否播放{audio.Play();//播放音頻}5.生成與銷毀功能010203找到預(yù)制體,拖拽到腳本變量ModelPrefab處,并隱藏模型制作第一張奇石識別圖像,選擇fengmian對象,Ctrl+D復(fù)制一份修改huanglashi對象屬性面板里的數(shù)據(jù)庫和識別圖片,Database選擇stone,ImageTraget選擇huangla2,并且移除音頻組件AudioSource。5.生成與銷毀功能打開腳本MyDefaultTrackableEventHandler,代碼如下定義一個UI變量,用于放置UI預(yù)制體publicGameObjectthisui;在代碼的最前面需對使用UI進行聲明usingUnityEngine.UI;識別到圖片時生成奇石模型。(Instantiate:復(fù)制物體及其位置和方向)Quaternion(四元數(shù)):用于角度的旋轉(zhuǎn)。Euler函數(shù):返回一個旋轉(zhuǎn)角度,繞z軸旋轉(zhuǎn)z度,繞x軸旋轉(zhuǎn)x度,繞y軸旋轉(zhuǎn)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.旋轉(zhuǎn)功能創(chuàng)建一個新腳本,命名為Rotate,代碼如下定義兩個變量,用于控制物體旋轉(zhuǎn)的速度floatxSpeed=150f;//水平速度floatySpeed=50f;//垂直速度先判斷是否觸摸了屏幕,再判斷是幾個手指觸摸。Input.GetMouseButton(0)表示鼠標左鍵按下。Input.touchCount==1表示單點觸摸if(Input.GetMouseButton(0)){if(Input.touchCount==1)6.旋轉(zhuǎn)功能判斷手指是否移動及移動方向。Input.GetTouch(0).phase==TouchPhase.Moved表示移動觸摸if(Input.GetTouch(0).phase==TouchPhase.Moved){//以手指橫向移動的值繞世界坐標的Y軸旋轉(zhuǎn)transform.Rotate(Vector3.up*Input.GetAxis("MouseX")*xSpeed*Time.deltaTime,
Space.World);//以手指縱向移動的值繞世界坐標的X軸旋轉(zhuǎn)transform.Rotate(Vector3.left*Input.GetAxis("MouseY")*ySpeed*Time.deltaTime,
Space.World);7.縮放功能通過兩個手指的手勢實現(xiàn)模型的放大與縮小原理通過判斷兩個手指間的距離變化來實現(xiàn),若距離變大,則放大模型,若距離變小,則縮小模型??梢允褂脙牲c間的距離公式√[(x1-x2)2+(y1-y2)2]來計算7.縮放功能創(chuàng)建一個新腳本,命名為EnLarge,代碼如下首先判斷手勢是放大還是縮小bool:返回true或falseMathf.Sqrt:返回一個數(shù)的平方根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:觸摸數(shù)量)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.縮放功能調(diào)用isEnLarge,將數(shù)據(jù)傳給形參,比較length1和length2,實現(xiàn)放大或縮小。if(isEnLarge(oldPos1,oldPos2,temPos1,temPos2)){floatoldScale=transform.localScale.x;//原始大小floatnewScalse=oldScale*1.025f;//放大的倍數(shù)transform.localScale=newVector3(newScalse,newScalse,newScalse);//整體放大}else{floatoldScale=transform.localScale.x;floatnewScalse=oldScale/1.025f;//縮小的倍數(shù)transform.localScale=newVector3(newScalse,newScalse,newScalse);//整體縮小8.案例發(fā)布在菜單欄中點擊File-BuildSettings,點擊PlayerSettings在PC端勾選VuforiaAugmentedRealit,最后點擊Build即可導(dǎo)出app。PART04重點難點難點重點1學(xué)會使用vuforia,了解vuforia的功能。vuforia識別快,功能也較多,他除了可以識別圖片,還可以識別文本等,建議大家去學(xué)習。重點2:在功能開發(fā)的時,一定要理清代碼的邏輯,例如在實現(xiàn)縮放功能時,先寫判斷手勢的方法,然后在實現(xiàn)縮放時在調(diào)用。難點難點1:在實現(xiàn)模型生成的時候,使Instantiate函數(shù)時,要計算好模型生成的位置及大小,難點2:在實現(xiàn)縮放功能的時候,要判斷是幾個手指的觸碰,如何判斷是放大還是縮小,以及利用數(shù)學(xué)公式去計算距離。為夢想不止步Adesignercanusedefaulttexttosimulatewhattextwouldlooklike.Itlooksevenbetterwithyouusingthistext.梧州學(xué)院AR中草藥功能實現(xiàn)——AR手冊目錄content01UI設(shè)計02按鈕交互03音頻播放功能04打包發(fā)布PART01UI設(shè)計UI設(shè)計首先導(dǎo)入我們準備好的資源包里面的圖像資源包中包含了我們所要使用到的美術(shù)資源UI設(shè)計我們新建Canvas,并在Canvas里面添加圖片image,然后給Image改好名字再將我們的Canvas里的圖片替換成我們的美術(shù)資源并且在界面中擺放好位置主要場景UI開始界面UIUI設(shè)計
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 標準版2024建設(shè)工程設(shè)計合同
- 2024年聘用副總經(jīng)理合同書
- 無勞動合同證明的獲取途徑分析
- 2024年承包魚塘合同范本
- 抵押短期借款合同格式
- 加工協(xié)議書撰寫要點
- 柴油發(fā)動機控制柜技術(shù)規(guī)格書
- 土地流轉(zhuǎn)合同補充協(xié)議2024年
- 建筑工程合同履約中的安全控制
- 業(yè)務(wù)經(jīng)理聘請合同
- 北京市第四中學(xué)2024-2025學(xué)年七年級上學(xué)期期中生物學(xué)試題(含答案)
- 體育教師先進個人事跡材料
- 2025屆江蘇省蘇州市第一中學(xué)物理高三第一學(xué)期期末學(xué)業(yè)水平測試模擬試題含解析
- 企業(yè)財務(wù)管理數(shù)字化轉(zhuǎn)型實施方案
- 第九課+發(fā)展中國特色社會主義文化+課件高中政治統(tǒng)編必修四哲學(xué)與文化
- 牙用漂白凝膠市場環(huán)境與對策分析
- 2024年山東省濟南市中考英語試題卷(含答案)
- 人教版七年級道德與法治上冊 期中復(fù)習知識梳理
- 3.1 農(nóng)業(yè)區(qū)位因素及其變化 課件 高一地理人教版(2019)必修第二冊
- 建筑施工企業(yè)(安全管理)安全生產(chǎn)管理人員安全生產(chǎn)考試參考題及答案
- 鍋爐應(yīng)急預(yù)案演練方案
評論
0/150
提交評論