




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、LUOYANG NORMAL UNIVERSITY 2015屆 本科畢業(yè)論文基于Unity實(shí)現(xiàn)虛擬樓盤(pán)展示制作 院(系)名稱專 業(yè) 名 稱學(xué)生姓名學(xué)號(hào)指導(dǎo)教師完 成 時(shí) 間20155基于Unity實(shí)現(xiàn)虛擬樓盤(pán)展示制作馬天宇數(shù)學(xué)科學(xué)學(xué)院 信息與計(jì)算科學(xué) 學(xué)號(hào):指導(dǎo)教師:劉青青摘要: Unity引擎推出后在全世界得到了大量的運(yùn)用。本文通過(guò)運(yùn)用Unity制作出來(lái)的是房地產(chǎn)虛擬展示的一個(gè)軟件,通過(guò)虛擬現(xiàn)實(shí)技術(shù)制作全方位三維展示以及逼真的動(dòng)畫(huà)和過(guò)場(chǎng)。關(guān)鍵詞:MentalRay烘培;材質(zhì);三維坐標(biāo);虛擬漫游;視頻播放;手指觸控引言虛擬現(xiàn)實(shí)(Virtual Reality,簡(jiǎn)稱VR)是最近幾年來(lái)新出現(xiàn)的高新
2、技術(shù),也稱靈境技術(shù)或者人工環(huán)境,虛擬現(xiàn)實(shí)技術(shù)集成了計(jì)算機(jī)圖形(CG)技術(shù)、計(jì)算機(jī)仿真技術(shù)、人工智能、傳感技術(shù)、顯示技術(shù)、網(wǎng)絡(luò)并行處理等技術(shù)的最新發(fā)展成果的集合,是一種由計(jì)算機(jī)技術(shù)輔助生成的高技術(shù)模擬系統(tǒng),虛擬現(xiàn)實(shí)技術(shù)的發(fā)展與應(yīng)用離不開(kāi)計(jì)算機(jī)技術(shù)的發(fā)展,兩者是相輔相成的關(guān)系,如果要正確認(rèn)識(shí)和剖析并把握虛擬現(xiàn)實(shí)技術(shù)的應(yīng)用與發(fā)展,就必須深入研究計(jì)算機(jī)技術(shù)的變化與發(fā)展趨勢(shì),這樣才能有利于我們未來(lái)更好的掌握與應(yīng)用虛擬現(xiàn)實(shí)技術(shù)。1 實(shí)時(shí)互動(dòng)的應(yīng)用程序可以讓你漫步在還沒(méi)有蓋好的房子里,或是回到幾世紀(jì)以前的廢墟讓你在里面可以行走,盡管現(xiàn)在的計(jì)算機(jī)輔助繪圖技術(shù)(CAD)能建立3D的模型,但仍不太容易真正的傳達(dá)客
3、戶希望看到的視覺(jué)仿真效果。大多數(shù)的房地產(chǎn)公司仍然無(wú)法給予客戶一個(gè)身歷其境的體驗(yàn)的感覺(jué),而交互式的3D可以讓我們創(chuàng)造出一個(gè)完整的模擬環(huán)境,現(xiàn)在已經(jīng)可以做到讓客戶在房子還沒(méi)蓋好之前就可以在未來(lái)的家里走來(lái)走去,甚至可以體驗(yàn)到當(dāng)早晨的陽(yáng)光從窗戶透進(jìn)來(lái)的感覺(jué)。本篇論文與大家一起分享Unity在非游戲領(lǐng)域的應(yīng)用實(shí)例,在房地產(chǎn)家居行業(yè)中,通過(guò)Unity開(kāi)發(fā)的應(yīng)用將傳統(tǒng)設(shè)計(jì)師的工作化繁為簡(jiǎn)并交予住戶,讓住戶自己設(shè)計(jì)呈現(xiàn)喜好的家居環(huán)境在虛擬現(xiàn)實(shí)中來(lái)感受及評(píng)估。制作地產(chǎn)樓盤(pán)漫游,能夠讓顧客更好的了解整個(gè)樓盤(pán)的規(guī)劃,效果,取代了以往圖片平面化信息的不夠直觀的表達(dá)效果,信息傳達(dá)不夠直觀全面的弊端。在樓盤(pán)尚未建成,也能
4、讓顧客身臨其境的感受到整個(gè)樓盤(pán)的居住環(huán)境,建筑外觀,配套設(shè)施,能夠推動(dòng)地產(chǎn)樓盤(pán)前期推廣的效率,促進(jìn)整體銷售的提升,更能提升整體地產(chǎn)公司整體的品牌及企業(yè)形象。1 研究主要內(nèi)容1.1 研究方法及手段以Unity3D為開(kāi)發(fā)平臺(tái)開(kāi)發(fā)的一個(gè)虛擬仿真樓盤(pán)展示系統(tǒng),是一個(gè)邏輯完整的、程序運(yùn)行流暢的三維軟件通過(guò)對(duì)相關(guān)資料的大量查詢以及對(duì)手指觸控的一些研究,對(duì)Unity3D游戲引擎有了相關(guān)的了解對(duì)Unity3D中需要使用的編輯語(yǔ)言C#進(jìn)行學(xué)習(xí),查閱C#相關(guān)資料,使自己的編程水平可以滿足這個(gè)展示的基本需要虛擬展示的制作過(guò)程以及軟件實(shí)現(xiàn)后的整體過(guò)程大致分為以下幾個(gè)步驟: 1)了解3Dmax建模軟件以及Mental
5、Ray渲染器,掌握相關(guān)的基本操控,熟悉3Dmax的四角面建模以及Mental Ray烘培方法。 2)熟悉Unity3D引擎,掌握unity基本的編輯器操作,熟悉Unity3D每個(gè)功能模塊的作用和操作方法熟練使用unityAPI的方法。3)設(shè)計(jì)軟件的UI主界面,對(duì)軟件的整體功能進(jìn)行架構(gòu),明確虛擬展示軟件的主要功能以及軟件的風(fēng)格。4)設(shè)計(jì)軟件的內(nèi)容,策劃軟件的主題,并設(shè)定軟件的相關(guān)場(chǎng)景。5)根據(jù)別人的需求和自己的理解,在Unity3D中制作下相關(guān)部分,包括交互邏輯,加載邏輯,UI邏輯,漫游邏輯等,用到了Easy Touch插件和NGUI插件。6)初步測(cè)試,對(duì)系統(tǒng)的各項(xiàng)功能進(jìn)行測(cè)試,及時(shí)發(fā)現(xiàn)問(wèn)題,進(jìn)
6、行逐項(xiàng)解決。7)在PC上進(jìn)行發(fā)布,并進(jìn)行測(cè)試,完成在PC端觸控上的正常操作。8) 在IOS上進(jìn)行發(fā)布,并進(jìn)行測(cè)試,解決Ipad平板上的正常操作。1.2 開(kāi)發(fā)的環(huán)境PSPhotoshop經(jīng)常用做于圖像處理,而不是圖形創(chuàng)作。圖像處理是對(duì)已有的位圖圖像進(jìn)行編輯加工處理以及運(yùn)用一些特殊效果,主要用做于在于對(duì)圖像的處理加工;圖形創(chuàng)作軟件是按照自己的構(gòu)思創(chuàng)意,使用矢量圖形等來(lái)設(shè)計(jì)圖形。3DMax3D Studio Max,(原名:3D Studio Max),常簡(jiǎn)稱為3ds Max或MAX,是Autodesk傳媒娛樂(lè)部開(kāi)發(fā)的基于PC系統(tǒng)的全功能的三維計(jì)算機(jī)圖形軟件。 MayaAutodesk Maya是美
7、國(guó)Autodesk公司出品的世界頂級(jí)的三維動(dòng)畫(huà)軟件,運(yùn)用領(lǐng)域是專業(yè)的影視廣告,角色動(dòng)畫(huà),電影特技等。Maya引擎的功能完善,工作靈活多變,易學(xué)易懂易用,制作效率很高,渲染真實(shí)感極強(qiáng),是電影級(jí)別的高端制作動(dòng)畫(huà)軟件,Mental Ray渲染器Mental ray是一個(gè)專業(yè)的3D渲染引擎,它可以生成十分逼真的高質(zhì)量真實(shí)感很強(qiáng)的圖象。現(xiàn)在你可以在3D Studio的高性能網(wǎng)絡(luò)渲染中直接控制Mental ray 。它在電影領(lǐng)域得到了大量的應(yīng)用和認(rèn)可,被認(rèn)為是市場(chǎng)上最高級(jí)的三維渲染解決方案之一。Unity3DUnity3D是由UnityTechnologies開(kāi)發(fā)的一個(gè)玩家輕松創(chuàng)建諸如三維視頻游戲、建筑可
8、視化、實(shí)時(shí)三維動(dòng)畫(huà)的類型互動(dòng)內(nèi)容的多平臺(tái)的綜合型游戲開(kāi)發(fā)工具,是一個(gè)全面整合的專業(yè)游戲引擎。C#C#是C+衍生出來(lái)的面向?qū)ο蟮木幊陶Z(yǔ)言,是微軟公司發(fā)布的一種面向?qū)ο蟮挠贜ETFramework之上的高級(jí)程序設(shè)計(jì)語(yǔ)言,并定于在微軟職業(yè)開(kāi)發(fā)者論壇(PDC)上登臺(tái)亮相,C#是微軟公司研究員AndersHejlsberg的最新成果,C#看起來(lái)與Java有著驚人的相似,它包括了諸如單一繼承,界面,與Java幾乎同樣的語(yǔ)法,和編譯成中間代碼再運(yùn)行的過(guò)程,C#是微軟公司NETwindows網(wǎng)絡(luò)框架的主角。AEAdobe After Effects簡(jiǎn)稱“AE”是Adobe公司推出的一款圖形視頻制作和處理軟件,
9、適用于從事視頻設(shè)計(jì)和視頻特效的機(jī)構(gòu),包括電視臺(tái)、動(dòng)畫(huà)制作公司、個(gè)人后期制作工作室以及多媒體工作室。屬于層類型后期制作類軟件。XcodeXcode 是蘋(píng)果公司開(kāi)發(fā)的特有的編程軟件,是開(kāi)發(fā)人員建立OS X 和 iOS 應(yīng)用程序的最快捷的方式。Xcode 具有統(tǒng)一的用戶界面設(shè)計(jì),編碼、測(cè)試、調(diào)試都在一個(gè)簡(jiǎn)單的窗口內(nèi)完成。2 Unity3D簡(jiǎn)介2.1 Unity3D總體概述Unity3D是一個(gè)用于創(chuàng)建諸如三維視頻游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫(huà)等類型互動(dòng)內(nèi)容的綜合型創(chuàng)作工具,由Unity Technologies開(kāi)發(fā),是一個(gè)全面整合的專業(yè)游戲引擎,Unity類似于Director,Blender,Vir
10、tools或Torque Game Builder等利用交互的圖型化開(kāi)發(fā)環(huán)境為首要方式的軟件其編輯器運(yùn)行在Windows 和Mac OS X下,可發(fā)布游戲至Windows、Mac、Wii、iPhone、Windows phone 8和Android平臺(tái),也可以利用Unity web player插件發(fā)布網(wǎng)頁(yè)游戲,支持Mac 和Windows的網(wǎng)頁(yè)瀏覽,它的網(wǎng)頁(yè)播放器也被Mac widgets所支持,Unity分成Free與Pro版。22.2 Unity3D軟件特色綜合編輯:通過(guò)Unity簡(jiǎn)單的用戶界面,易上手進(jìn)行界面編輯和編程工作。導(dǎo)入資源:支持所有主要的文件格式,并能和大部分的相關(guān)應(yīng)用程序協(xié)
11、同工作。一鍵部署:讓玩家的作品在多平臺(tái)呈現(xiàn)。著色器:著色器系統(tǒng)整合了易用性、靈活性和高性能。天空盒:優(yōu)化軟件流暢度的一種很好的辦法。資源包:資源和邏輯從外部加載。音頻和視頻:實(shí)時(shí)三維混合音頻流、視頻流。光影:提供了具有柔和和陰影與烘焙的高度完善的光影渲染系統(tǒng)。文檔:為學(xué)習(xí)者提供逐步的指導(dǎo)、文檔和實(shí)例方案。2.3軟件總體設(shè)計(jì)1.攝像機(jī)初始鏡頭,處于天空鳥(niǎo)瞰的感覺(jué) (單手指左右滑動(dòng)控制旋轉(zhuǎn),雙手指打開(kāi)合攏控制方縮小)(上圖箭頭只是做參考,主要操作還是基于觸屏,這兩個(gè)功能用的很多)2.拉近后,單擊可把視角轉(zhuǎn)移到黃色單個(gè)中心點(diǎn)進(jìn)行360度旋轉(zhuǎn)拉近拉遠(yuǎn)觀察(單手指左右滑動(dòng)控制旋轉(zhuǎn),雙手指打開(kāi)合攏控制方縮
12、小)3.1 軟件操作說(shuō)明3.1.1 場(chǎng)景操作說(shuō)明在開(kāi)始場(chǎng)景中為樓盤(pán)的外圍建筑的鳥(niǎo)瞰圖。拖動(dòng)鼠標(biāo)或者手指拖動(dòng)屏幕可對(duì)樓盤(pán)中心進(jìn)行水平360以及上下0度到60度旋轉(zhuǎn),下方按鈕功能,分別為1)區(qū)域分布:為大樓的地理位置的一個(gè)視頻2)鳥(niǎo)瞰:為大樓的中心進(jìn)行鳥(niǎo)瞰觀察3)街景漫游:設(shè)置了4個(gè)街景點(diǎn),點(diǎn)擊街景漫游,會(huì)響應(yīng)的出現(xiàn)4個(gè)街景漫游 的按鈕,4個(gè)按鈕分別為不同的場(chǎng)景漫游地點(diǎn),4)車庫(kù): 點(diǎn)擊車庫(kù)會(huì)跳轉(zhuǎn)場(chǎng)景,進(jìn)入車庫(kù)的場(chǎng)景5)室內(nèi):設(shè)置了4個(gè)室內(nèi)場(chǎng)景,兩個(gè)辦公室內(nèi),兩個(gè)家居室內(nèi),三個(gè)室內(nèi)為沒(méi)渲染的建模。一個(gè)室內(nèi)為渲染的簡(jiǎn)模,點(diǎn)擊跳轉(zhuǎn)在室內(nèi)場(chǎng)景后,有四個(gè)按鈕一個(gè)是毛胚房按鈕,一個(gè)是 簡(jiǎn)裝,一個(gè)是漫游,一個(gè)
13、是返回主程序6)主樓:點(diǎn)擊出樓會(huì)相應(yīng)的出現(xiàn)6個(gè)按鈕,分別為1,2,3,4,5,6點(diǎn)擊六個(gè)按鈕,圍繞的中心點(diǎn)這會(huì)變成相應(yīng)的主樓,7)退出按鈕:點(diǎn)擊按鈕,退出程序。3.2 軟件建模流程介紹3.2.1 建模和模型整理在3DMAX建模中標(biāo)準(zhǔn)單位設(shè)置為毫米,導(dǎo)入CAD原圖歸到一個(gè)圖層到坐標(biāo)原點(diǎn),根據(jù)CAD墻線制作墻體,根據(jù)設(shè)計(jì)方案硬裝模型,根據(jù)設(shè)計(jì)方案軟裝模型,建好模型后把所有的單體的Gimao(中心點(diǎn))整理到單體的中心,按程序不同的用處歸到不同的層中,這樣即使美術(shù)修改,跟程序也沒(méi)什么大關(guān)系,頂視圖在用線沿墻內(nèi)勾出一個(gè)閉合的空間,原則是避開(kāi)家具不能穿插墻體,描繪出線轉(zhuǎn)角要給一個(gè)圓角命令,用在程序中漫游時(shí)
14、不越過(guò)這個(gè)閉合的空間,盡量把該合并的材質(zhì)都合并,這樣的話會(huì)節(jié)省內(nèi)存開(kāi)銷,是軟件流暢度得以提升。漫游路徑模型例圖和程序不渲染路徑圖:3.2.2 貼圖方法及貼圖的制作材質(zhì)和貼圖不能出現(xiàn)中文名稱,純色的物體貼圖需弄32*32像素的純色貼圖,貼圖的尺寸要按照2的N次方像素設(shè)置,這些設(shè)置也是為了軟件運(yùn)行時(shí)減少內(nèi)存的開(kāi)銷,提高流暢度。例圖:3.2.3 材質(zhì)賦予,模型減面及合并指定Mental Ray渲染器,標(biāo)準(zhǔn)材質(zhì)(Standard)換成Mental Ray嵌套的材質(zhì),設(shè)置主要的幾種材質(zhì)參數(shù),例如墻體,透明玻璃,燈罩,黃銅金屬類,相同材質(zhì)物體必須是同一材質(zhì)球,材質(zhì)球命名不能是中文來(lái)寫(xiě)。模型減面要適當(dāng),不能
15、破壞模型原有的造型。不規(guī)則的模型要用ProOptimizer(批處理)命令??床坏降拿嬉?jiǎng)h除,但離地面比較高的面不能刪除,燈罩窗簾使用雙面模型,如果平面物體表面有黑斑時(shí),應(yīng)該取消那幾個(gè)面的光滑組,對(duì)曲面要統(tǒng)一曲面的光滑組,避免烘培的時(shí)候貼圖出現(xiàn)黑色接縫。模型減面 后都應(yīng)該用一下Reset XForm(重置變換)和Turn to Poly(轉(zhuǎn)換為多邊形); 對(duì)模型結(jié)構(gòu)與貼圖坐標(biāo)不起作用的點(diǎn)和面要?jiǎng)h除以減少數(shù)據(jù)量,提高FPS幀速率。在保證場(chǎng)景效果的前提下減少場(chǎng)景的總體面數(shù),曲線擠壓的時(shí)候要注意線的段數(shù),必要時(shí)候可以使用折線形式來(lái)代替曲線,模型的網(wǎng)格分布要合理,模型中平直部分可以使用較少的分段數(shù),曲
16、線部分為了表現(xiàn)曲線的轉(zhuǎn)折可以適當(dāng)多分配一些,模型平面邊緣輪廓點(diǎn)分布盡量做到均勻,否則容易使模型破面或者產(chǎn)生其他問(wèn)題。按空間里同材質(zhì)物體塌陷。不同材質(zhì)的掛畫(huà)可以塌陷在一起,后期不需要調(diào)節(jié),對(duì)整個(gè)空間影響不是很大的物體也可以塌陷在一起(具體方法視戶型而定)。剪完面后整體效果幀速率要大于60;最后的模型分別打?yàn)閮山M,一組是靜態(tài)的程序調(diào)用不到的場(chǎng)景模型,一種是程序有調(diào)用用到的按鈕,動(dòng)畫(huà)等等有用的模型例圖:3.2.4 展UV及燈光測(cè)試手動(dòng)展UV的目的是要盡量使UV鋪滿整張貼圖以節(jié)省內(nèi)存消耗。模型沒(méi)減面前展的都不符合規(guī)范,必須在減面后展。展完UV模型后面加上貼圖像素的大小。指定Mental Ray渲染器,
17、檢查Gamma值,選擇曝光方式,窗戶位置打射面燈模擬天光。燈槽位置用圓柱燈模擬燈帶,臺(tái)燈位置用球燈模擬,光域網(wǎng)模擬室內(nèi)筒燈,調(diào)節(jié)燈光強(qiáng)度和顏色,尺寸,陰影方式和陰影細(xì)分。同一空間的燈應(yīng)該關(guān)聯(lián)復(fù)制,調(diào)節(jié)渲染器常用參數(shù)。做渲染處理時(shí)盡量模塊化渲染,一般的計(jì)算機(jī)硬件對(duì)渲染處理都很慢。33.2.5 烘培以及烘培貼圖在PS中的處理按層給場(chǎng)景中要烘培的物體添加CompleteMap和LiaghtingMap,貼圖格式存為.exr。設(shè)置好存儲(chǔ)位置,貼圖格式,貼圖尺寸,烘培貼圖.exr格式的要在Photoshop中批處理一下Gamera值。3.2.6 Unity3D中場(chǎng)景模型的后期處理在模型導(dǎo)入unity后,
18、還需要進(jìn)一步的材質(zhì)和燈光的處理。在這里我采用了一些輸出的材質(zhì)插件名稱Marmoset著色器,在主場(chǎng)景中用到的著色器主要是有一自定義的Simple reflection(簡(jiǎn)單反射shader):這個(gè)著色器主要是用于大樓的整體玻璃效果,仔細(xì)看的話,會(huì)看到玻璃反射過(guò)來(lái)的天空云朵和光線,簡(jiǎn)單反射著色器的簡(jiǎn)單原理為:在一個(gè)鏡像攝像機(jī)內(nèi)投影的矩陣中,在我們的操作軟件時(shí)首先會(huì)將鏡子這個(gè)對(duì)象的頂點(diǎn)轉(zhuǎn)換為世界坐標(biāo),然后在使用鏡像攝像機(jī)空間內(nèi)的投影矩陣,最終頂點(diǎn)在屏幕上的投影會(huì)被用來(lái)作為UV貼圖坐標(biāo)來(lái)采樣鏡像相機(jī)渲染出啊來(lái)的材質(zhì)貼圖中(RenderTexture)。4這是普通著色器和簡(jiǎn)單反射著色器的區(qū)別: 二半透
19、明凹凸高光著色器:此著色器主要用于家具玻璃的呈現(xiàn)方式。它的簡(jiǎn)單原理為:光在半透明物體中沿著各個(gè)方向進(jìn)行反射和折射,所以光的方向性就消失了,但光在物體內(nèi)部的所能前進(jìn)的深度和物體的密度,物體到光源的距離密切相關(guān)的,所以我們用shader提供的兩個(gè)變量一個(gè)是控制物體到光源距離的偏差,一個(gè)是用來(lái)控制光在無(wú)題中的衰減速度,其實(shí)也就是對(duì)對(duì)象密度以及透明度的衰減控制。4普通著色器和半透明高光漫反射著色器的區(qū)別如圖:用到的著色器還有一些頂點(diǎn)著色,視差漫反射著色等等。3.3 軟件功能實(shí)現(xiàn)腳本介紹3.3.1 全局通用腳本的邏輯在本系統(tǒng)的開(kāi)發(fā)過(guò)程中,一些聲音的播放,對(duì)象的顯示與隱藏,對(duì)一些通用路基進(jìn)行了封裝使用,在
20、寫(xiě)通用方法開(kāi)發(fā)中,遇到了一些問(wèn)題。 遇到的問(wèn)題和解決方法是:當(dāng)鼠標(biāo)懸浮物體時(shí),寫(xiě)腳本使物體變紅,移開(kāi)恢復(fù)原來(lái)的顏色,但是,我是一個(gè)開(kāi)發(fā)者,不是使用者,我在操作時(shí),就會(huì)按照我的流程來(lái),使用者不知道怎么操作就會(huì)亂點(diǎn),最大的問(wèn)題就是:如果鼠標(biāo)懸停物體變紅,點(diǎn)擊拖著不放再移動(dòng)到不與物體碰撞的地方,再松開(kāi)鼠標(biāo),這時(shí)物體依然是紅色的,并沒(méi)有變回原來(lái)的顏色,我起初使用的是NGUI插件的OnHover()懸停方法,因?yàn)橛蠦ug,就放棄了這個(gè)方法,使用unity OnMouseOver()方法和OnMouseUp()方法。 當(dāng)鼠標(biāo)彈起方法,測(cè)試都是沒(méi)有任何問(wèn)題的。但是,如果NGUI插件結(jié)合使用的話,如果我們使用
21、NGUI來(lái)做一些UI按鈕邏輯的話,就會(huì)在攝像機(jī)上添加一個(gè)UICamera的組件,按鈕的原理是用的射線原理:即從攝像機(jī)發(fā)射出來(lái)一條射線,如果碰到碰撞盒,則會(huì)反饋回來(lái)一個(gè)消息事件,unity自帶的這兩個(gè)方法竟然就失效了,后來(lái)網(wǎng)上查詢資料和自己的理解,發(fā)現(xiàn)NGUI也封裝好了一個(gè)叫做OnPress()按下button響應(yīng)的方法。在這個(gè)方法里添加一句使物體顏色RGBA值變回原來(lái)的顏色,這樣的話,就解決了問(wèn)題,但是依然留下的問(wèn)題就是NGUI中封裝好的UICamera腳本與unity系統(tǒng)自帶的鼠標(biāo)事件沖突的問(wèn)題。解決問(wèn)題后的圖例:3.3.2 UI功能邏輯在UI功能開(kāi)發(fā)這個(gè)模塊中,都是要考慮一些,點(diǎn)擊那個(gè)出現(xiàn)
22、,點(diǎn)擊按鈕實(shí)現(xiàn)什么功能,例如:點(diǎn)擊室內(nèi)按鈕,會(huì)相應(yīng)的出現(xiàn)室內(nèi)的4個(gè)按鈕,點(diǎn)擊主樓按鈕,會(huì)相應(yīng)的會(huì)出現(xiàn)6個(gè)主樓的按鈕,但是,不能同時(shí)出現(xiàn),那么就得對(duì)這些做一個(gè)判斷了,如果室內(nèi)按鈕沒(méi)出現(xiàn)時(shí),點(diǎn)擊主樓,那么出現(xiàn)主樓按鈕,如果室內(nèi)按鈕出現(xiàn)后,再次點(diǎn)擊主樓按鈕,那么室內(nèi)按鈕隱藏,主樓按鈕出現(xiàn),相應(yīng)的其他一些類似的按鈕功能也相同。在UI邏輯開(kāi)發(fā)中遇到了一個(gè)問(wèn)題就是和3D模型有關(guān)。當(dāng)我點(diǎn)擊6個(gè)樓時(shí)會(huì)有一些相應(yīng)的反映,但是大樓的模型是一些組件拼起來(lái)的,并不是一個(gè)物體,而是很多個(gè)物體,但是按鈕就一個(gè),所以在這里就做了一個(gè)處理:建模的時(shí)候建兩個(gè)模型,一個(gè)超簡(jiǎn)模,一個(gè)模型,超簡(jiǎn)模用作按鈕使用,但是不做渲染,例圖:3
23、.3.3 手指觸控邏輯的深入研究在開(kāi)發(fā)過(guò)程中,手指觸控邏輯是最主要的一個(gè)環(huán)節(jié)開(kāi)發(fā),也是本系統(tǒng)開(kāi)發(fā)的一個(gè)最難得點(diǎn)。需求是手指觸控可圍繞中心點(diǎn)進(jìn)行360度旋轉(zhuǎn)和上下旋轉(zhuǎn)。由于是拖拽進(jìn)行旋轉(zhuǎn),所以就是用插值來(lái)改變相機(jī)的位置,在圍繞中心旋轉(zhuǎn)中,差值的使用方法用兩種,一種是歐拉角,另外一種是四元數(shù),但是使用歐拉角旋轉(zhuǎn)時(shí),可能會(huì)碰到萬(wàn)向鎖的Bug,所以就采用了四元數(shù)進(jìn)行對(duì)圍繞中心的旋轉(zhuǎn)。 手指觸控原理:在手指觸控中獲取手指觸點(diǎn)屏幕坐標(biāo)的點(diǎn)A(X,Y)這個(gè)點(diǎn)是在手指只要觸控屏幕就會(huì)實(shí)時(shí)檢測(cè)更新的,再定義一個(gè)點(diǎn)B(X.Y).加一個(gè)判斷Bool初始為真,如果手指觸控到屏幕就讓B=A,然后B=A不執(zhí)行,判斷Boo
24、l為假,直到手指脫離屏幕才能為真, 定義一個(gè)Vector3 C=(A.x-B.x,X.y-B.y,0)然后再次讓B=A。這里的大概意思就是:C就等于手指現(xiàn)在的坐標(biāo)減去上一刻的坐標(biāo),主要目的就是控制旋轉(zhuǎn)的速度。我們?cè)俣x兩個(gè)值RX和RYRX=Mathf.Clamp(RX+ Mathf.Clamp(-x *調(diào)節(jié)速度, -45, 45), minY,maxY);RY=Mathf.Clamp(RY+ Mathf.Clamp(-x *調(diào)節(jié)速度, -45, 45), minX,maxX);Quaternion QA= EulerToQuaternion(RY,RX,0);攝像機(jī)的角度= Quaternio
25、n.Slerp(攝像機(jī)現(xiàn)在的角度,QA,轉(zhuǎn)動(dòng)速度)攝像機(jī)的位置=攝像機(jī)角度*new Vector3(0,水平高度,-離中心點(diǎn)距離)離中心點(diǎn)距離=縮放滑動(dòng)值(觸摸縮放*縮放速度);縮放滑動(dòng)值=Mathf.Lerp(離中心點(diǎn)距離,Mathf.Clamp(這一刻的距離+=縮放值*縮放速度,最小值 ,最大值), 速度)) 縮放值的判斷原理:如果是兩點(diǎn)觸控并且第一個(gè)點(diǎn)和第二個(gè)點(diǎn)都移動(dòng)才能執(zhí)行以下判斷,獲取兩個(gè)點(diǎn)的屏幕坐標(biāo)A(X,Y)和B(X,Y),過(guò)一瞬間,獲取當(dāng)前的屏幕坐標(biāo)C(X,Y)和D(X,Y)如果C-A的絕對(duì)值并且D-B的絕對(duì)值都大于0那么就進(jìn)行放大返回float縮放值。 否則就縮小,返回flo
26、at縮小值。手勢(shì)判斷關(guān)鍵性數(shù)學(xué)代碼如下:Enlarge isEnlarge(Vector2 oP1, Vector2 oP2, Vector2 nP1, Vector2 nP2) /函數(shù)傳入上一次觸摸兩點(diǎn)的位置與本次觸摸兩點(diǎn)的位置計(jì)算出用戶的手勢(shì) var leng1 = Mathf.Sqrt(oP1.x - oP2.x) * (oP1.x - oP2.x) + (oP1.y - oP2.y) * (oP1.y - oP2.y); var leng2 = Mathf.Sqrt(nP1.x - nP2.x) * (nP1.x - nP2.x) + (nP1.y - nP2.y) * (nP1.y
27、- nP2.y); if (Mathf.Abs(leng1 - leng2) 10) return Enlarge.None;outx = leng1;outy = leng2; if (leng1 leng2) return Enlarge.Small;/ 縮小手勢(shì) else return Enlarge.Large; / 放大手勢(shì) 根據(jù)歐拉角到四元數(shù)的轉(zhuǎn)換的數(shù)學(xué)公式寫(xiě)出轉(zhuǎn)換的方法。5 / 歐拉角到四元數(shù)的轉(zhuǎn)換的代碼: public Quaternion EulerToQuaternion(float _x, float _y, float _z) float x = Mathf.Cos(_
28、y / 2 * Mathf.Deg2Rad) * Mathf.Sin(_x / 2 * Mathf.Deg2Rad) * Mathf.Cos(_z / 2 * Mathf.Deg2Rad) + Mathf.Sin(_y / 2 * Mathf.Deg2Rad) * Mathf.Cos(_x / 2 * Mathf.Deg2Rad) * Mathf.Sin(_z / 2 * Mathf.Deg2Rad); float y = Mathf.Sin(_y / 2 * Mathf.Deg2Rad) * Mathf.Cos(_x / 2 * Mathf.Deg2Rad) * Mathf.Cos(_z /
29、 2 * Mathf.Deg2Rad) - Mathf.Cos(_y / 2 * Mathf.Deg2Rad) * Mathf.Sin(_x / 2 * Mathf.Deg2Rad) * Mathf.Sin(_z / 2 * Mathf.Deg2Rad); float z = Mathf.Cos(_y / 2 * Mathf.Deg2Rad) * Mathf.Cos(_x / 2 * Mathf.Deg2Rad) * Mathf.Sin(_z / 2 * Mathf.Deg2Rad) - Mathf.Sin(_y / 2 * Mathf.Deg2Rad) * Mathf.Sin(_x / 2
30、* Mathf.Deg2Rad) * Mathf.Cos(_z / 2 * Mathf.Deg2Rad); float w = Mathf.Cos(_y / 2 * Mathf.Deg2Rad) * Mathf.Cos(_x / 2 * Mathf.Deg2Rad) * Mathf.Cos(_z / 2 * Mathf.Deg2Rad) + Mathf.Sin(_y / 2 * Mathf.Deg2Rad) * Mathf.Sin(_x / 2 * Mathf.Deg2Rad) * Mathf.Sin(_z / 2 * Mathf.Deg2Rad); return new Quaternion
31、(x, y, z, w);3.3.4 播放視頻的不同方法在視頻播放問(wèn)題上。我遇到了一些難題,由于在IOS和Android移動(dòng)端不支持unity自帶的Movtexture播放模式,所以經(jīng)過(guò)網(wǎng)上查詢后,解決了這一辦法, 先寫(xiě)一個(gè)宏定義,如果是電腦端,那么就執(zhí)行電腦端播放視頻的方法,如果是移動(dòng)端,就執(zhí)行移動(dòng)端播放視頻的方法。電腦端比較簡(jiǎn)單,這里主要做移動(dòng)設(shè)備中播放視頻的方法。,利用IOS和安卓的播放視頻的控件來(lái)對(duì)視頻進(jìn)行播放。這里用到的是Handheld.PlayFullScreenMovie播放方法具體的4種方法代碼如下:/視頻播放時(shí)觸摸屏幕視頻關(guān)閉Handheld.PlayFullScreenM
32、ovie(“視頻名稱.格式”,背景顏色,F(xiàn)ullScreenMovieControlMode.CancelOnInput);/視頻播放時(shí)彈出IOS高級(jí)控件,可以控制視頻暫停播放全屏等等Handheld.PlayFullScreenMovie(“視頻名稱.格式”,背景顏色,F(xiàn)ullScreenMovieControlMode.Full);/視頻播放時(shí)無(wú)法停止,當(dāng)播放萬(wàn)一此后自動(dòng)關(guān)閉Handheld.PlayFullScreenMovie(“視頻名稱.格式”,背景顏色,F(xiàn)ullScreenMovieControlMode.Hidden);/視頻播放時(shí)彈出IOS高級(jí)控件,可以控制視頻播放進(jìn)度;Han
33、dheld.PlayFullScreenMovie(“視頻名稱.格式”,背景顏色,F(xiàn)ullScreenMovieControlMode.Minimal);關(guān)鍵注意點(diǎn):一定要將播放的視頻文件放在unity的Assets/SteeamingAssets/路徑下,否則是無(wú)法播放的,而且這些在電腦端測(cè)試是沒(méi)有任何效果的,只有在移動(dòng)端測(cè)試才行。63.3.5 發(fā)布打包PC端以及PC觸控端測(cè)試測(cè)試性能并修改參數(shù)打包電腦端程序后,普通的電腦并不是點(diǎn)觸屏電腦,寫(xiě)了一些鼠標(biāo)控制旋轉(zhuǎn)縮放的一些代碼來(lái)測(cè)試,但是,放在觸控屏上測(cè)試,滑動(dòng)的速度和縮放的速度太慢,估算了幾次,調(diào)大了10倍才差不多。3.3.6 Xcode發(fā)布
34、IOS打包Ipad測(cè)試性能并修改參數(shù)工程導(dǎo)進(jìn)mac電腦里后,首先就是調(diào)整發(fā)布平臺(tái),點(diǎn)擊Swtich platfrom按鈕。此過(guò)程慢,然后點(diǎn)擊Bulid。例圖:在發(fā)布ios的ipa文件時(shí),經(jīng)過(guò)網(wǎng)上查詢資料,發(fā)布成功。主要的流程如下:一, unity發(fā)布成成功后,打開(kāi)發(fā)布文件夾,打開(kāi)unity-iPhone.xcodeproject文件,這時(shí)候會(huì)默認(rèn)Xcode打開(kāi),二, 如果IOS移動(dòng)設(shè)備越獄了,連接移動(dòng)端,點(diǎn)擊運(yùn)行,可以直接發(fā)布到移動(dòng)端里,如果沒(méi)有,那么需要用99美元蘋(píng)果官網(wǎng)購(gòu)買一個(gè)開(kāi)發(fā)者賬戶然后在Team欄輸入你的帳號(hào)密碼,然后點(diǎn)擊運(yùn)行,這樣你的移動(dòng)設(shè)備上就直接有運(yùn)行的軟件了,但是要的是一個(gè).
35、ipa文件(類似于安卓的.apk)。三, 點(diǎn)擊Xcode編輯器上的Product按鈕點(diǎn)擊Archive。此過(guò)程需要幾分鐘,成功后會(huì)自動(dòng)彈出一個(gè)Organizer-Archives的窗口。四, 點(diǎn)擊發(fā)布的文件點(diǎn)擊右鍵,點(diǎn)擊Show in Finder,會(huì)彈出一個(gè)有一個(gè)文件的窗口。點(diǎn)擊文件右鍵,單擊顯示包內(nèi)容,會(huì)彈出一個(gè)有三個(gè)文件夾的窗口。點(diǎn)擊Products/Applications文件路徑。里面發(fā)現(xiàn)了一個(gè).app的文件,主要流程圖如下:五, 打開(kāi)iTunes。把.app文件拖到iTunes里,然后把iTunes文件里生成的文件拖拽到桌面上就是想要的.ipa文件。73.4 軟件BUG檢查在軟件運(yùn)
36、行測(cè)試中,出現(xiàn)了以下BUG:1)在外部漫游時(shí)有時(shí)會(huì)穿墻。1)配置不好的機(jī)器很卡。3)不好看。4)漫游時(shí)碰到物體。松開(kāi)按鈕,會(huì)產(chǎn)生力的反作用。5)電腦端的很多效果移動(dòng)端顯示不出來(lái),特別是陰影效果。解決辦法:1)把漫游移動(dòng)速度調(diào)慢,就不會(huì)有穿墻的效果。2)優(yōu)化模型,未解決。3)自己不是專業(yè)美工,沒(méi)解決。4)取消重力。5)做Mental Ray渲染,把陰影什么渲染到貼圖上解決一部分問(wèn)題。4 總結(jié)本軟件是利用了Unity3D引擎的多平臺(tái)發(fā)布的便利。向各個(gè)平臺(tái)展現(xiàn)出了一個(gè)可視化的虛擬樓盤(pán)。虛擬現(xiàn)實(shí)的最大優(yōu)點(diǎn)就是充分調(diào)動(dòng)客戶的參與感,客戶不僅是被動(dòng)的觀看,而是積極的互動(dòng),在售樓中心現(xiàn)場(chǎng),結(jié)合實(shí)物沙盤(pán),通過(guò)投影儀或等粒子顯示器等大屏幕設(shè)備,通過(guò)電腦的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中學(xué)教師招聘-教師招聘考試《教育學(xué)與教學(xué)法基礎(chǔ)知識(shí)》歷年真題1
- DBT29-138-2018 天津市歷史風(fēng)貌建筑保護(hù)修繕技術(shù)規(guī)程
- 2020-2025年中國(guó)棉紗線行業(yè)市場(chǎng)深度分析及行業(yè)發(fā)展趨勢(shì)報(bào)告
- 2024-2025學(xué)年高中歷史第一單元中國(guó)傳統(tǒng)文化主流思想的演變第4課明清之際活躍的儒家思想導(dǎo)學(xué)案新人教版必修3
- 2024-2025學(xué)年高中地理課時(shí)分層作業(yè)13交通運(yùn)輸方式和布局含解析新人教版必修2
- 2024-2025學(xué)年高中語(yǔ)文第五單元散而不亂氣脈中貫第23課文與可畫(huà)筼筜谷偃竹記課后課時(shí)作業(yè)含解析新人教版選修中國(guó)古代詩(shī)歌散文欣賞
- 2024-2025學(xué)年高中生物課時(shí)分層作業(yè)15降低化學(xué)反應(yīng)活化能的酶含解析新人教版必修1
- 2024-2025學(xué)年高中生物第4章生態(tài)系統(tǒng)的穩(wěn)態(tài)第2節(jié)生態(tài)系統(tǒng)的穩(wěn)態(tài)第3課時(shí)生態(tài)系統(tǒng)中的信息傳遞生態(tài)系統(tǒng)穩(wěn)態(tài)的維持學(xué)案蘇教版必修3
- 2025年保溫活動(dòng)房項(xiàng)目投資可行性研究分析報(bào)告
- 2025年工藝骨灰盒項(xiàng)目可行性研究報(bào)告
- 電腦維修合同三篇
- 2024版房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)內(nèi)容解讀
- 城市生物多樣性調(diào)查技術(shù)導(dǎo)則
- 高三數(shù)學(xué)試卷含答案
- 工資調(diào)級(jí)制度模版(3篇)
- 2023年新疆省公務(wù)員錄用考試《行測(cè)》真題卷及答案解析
- 2024年國(guó)網(wǎng)公司企業(yè)文化與職業(yè)道德試考試題庫(kù)(含答案)
- 牙周牙髓聯(lián)合病變治療
- 機(jī)場(chǎng)食品配送應(yīng)急處理方案
- 醫(yī)院培訓(xùn)課件:《黃帝內(nèi)針臨床運(yùn)用》
- 語(yǔ)文新課標(biāo)“整本書(shū)閱讀”深度解讀及案例
評(píng)論
0/150
提交評(píng)論