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

        ?

        基于Android的3D恐龍博物館系統(tǒng)的設(shè)計與實現(xiàn)

        2013-12-31 00:00:00張鵬魏嘉銀秦永彬
        計算機光盤軟件與應(yīng)用 2013年17期

        摘 要:在深入分析Android的系統(tǒng)架構(gòu)及其應(yīng)用程序的組成基礎(chǔ)上,設(shè)計和實現(xiàn)了一款基于Android的3D恐龍博物館系統(tǒng)。該系統(tǒng)主要包括場景模塊、恐龍展臺模塊和恐龍展示廳模塊。該系統(tǒng)能夠運用3D恐龍模型實現(xiàn)與用戶的互動,具有較強的實用性、開發(fā)指導(dǎo)性和科普知識宣傳的意義。

        關(guān)鍵詞:3D恐龍博物館;Android系統(tǒng);互動;科普

        中圖分類號: TP391.9

        移動互聯(lián)網(wǎng)是移動通信和互聯(lián)網(wǎng)的結(jié)合,移動通信和互聯(lián)網(wǎng)是全球增長最快、發(fā)展?jié)摿ψ畲蟮膬纱髽I(yè)務(wù),而對于兩者的結(jié)合體,移動互聯(lián)網(wǎng),必然在未來創(chuàng)造巨大的市場和經(jīng)濟神話。移動互聯(lián)網(wǎng)是一種通過智能移動終端,采用移動無線通信方式獲取網(wǎng)絡(luò)業(yè)務(wù)和服務(wù)的新興業(yè)態(tài),其包含終端、軟件和應(yīng)用三個層面。近年來,移動互聯(lián)網(wǎng)取得了飛速的發(fā)展,深刻改變了人們上網(wǎng)和獲取信息的方式。

        全球移動互聯(lián)網(wǎng)的終端主要以Android系統(tǒng)和IOS系統(tǒng)為主,據(jù)國際數(shù)據(jù)公司(IDC)調(diào)查顯示,截止2013年5月,Android系統(tǒng)占據(jù)全球智能手機操作系統(tǒng)市場75%的份額,中國市場占有率為86%。由此可見,手機等移動終端已經(jīng)成為人們接受新知識的重要途徑之一。

        博物館是征集、典藏、陳列和研究代表自然和人類文化遺產(chǎn)的實物的場所,為公眾提供知識、教育和欣賞的文化教育的場所,其主要以學(xué)習(xí)、教育、娛樂為目的,為公眾提供服務(wù)。目前,國內(nèi)的博物館雖然都有自己的主頁,但基本上僅含該博物館的概況、展覽、活動等信息,并未提供詳細(xì)的物體介紹和精致的物體模型,人們必須身臨其境才能了解實物的情況,且交互性不強,難以達到科普宣傳的效果。

        而大多數(shù)家長因為工作或其它原因,沒有時間和精力陪同孩子參觀博物館,使得一些以少年兒童為主要參觀對象的博物館資源未能充分發(fā)揮其作用(比如恐龍自然科技博物館),并且博物館的交互性較弱,導(dǎo)致了少年兒童無法充分應(yīng)用這樣的渠道以更好地接受新知識。

        基于此,以Android操作系統(tǒng)為基礎(chǔ),我們開發(fā)一款基于Android的3D恐龍博物館系統(tǒng),該系統(tǒng)使用3D虛擬模型,可以做到恐龍模型與用戶的交互,充分調(diào)動使用者的興趣,在與恐龍的互動交流間了解恐龍的基本知識,從而達到寓教于樂的目的。

        1 系統(tǒng)基本原理

        1.1 碰撞檢測基本技術(shù)

        1.1.1 AABB包圍盒原理

        所謂的AABB包圍盒就是采用一個長方體將物體包裹起來,在進行兩個物體的相交性檢測時僅檢測物體對應(yīng)包圍盒(包裹物體的長方體)的相交性。另外AABB包圍盒有一個重要的特性,那就是包圍盒對應(yīng)的長方體每一個面都是與某個坐標(biāo)軸平行的,因此AABB包圍盒又稱為軸對齊包圍盒。

        在具體實現(xiàn)中,只要記錄6個值即可,這6個值分別代表每個坐標(biāo)軸上的最大值與最小值,即Xmin、Xmax、Ymin、Ymax、Zmin與Zmax,在具體的應(yīng)用中,實際物體上所有的點都必須滿足如下條件:

        Xmin

        為了便于開發(fā)實現(xiàn),可以將表示AABB包圍盒的6個參數(shù)分成如下兩組:

        Pmin =[Xmin,Ymin,Zmin]

        Pmax = [Xmax,Ymax,Zmax]

        由此可非常方便的求得AABB包圍盒的幾何中心C,公式如下:

        C=(Pmin+Pmax)/2 [4]

        1.1.2 AABB包圍盒的計算

        首先記錄X、Y、Z三個分量,對每個頂點進行循環(huán)求出X、Y、Z這3個坐標(biāo)的最大/最小值并將其作為包圍盒的6個參數(shù)值。最后通過這6個參數(shù)的值生成包圍盒對象的構(gòu)造器并獲得物體平移后的AABB包圍盒。

        1.1.3 AABB包圍盒的碰撞檢測

        運用AABB包圍盒的目的是為了簡化物體運動過程中的碰撞檢測計算。其基本原理如圖1所示。

        圖1 碰撞檢測的基本原理

        區(qū)域A為重疊區(qū)域,主要是用來判斷AABB是否相交,在這里可以設(shè)定該重合區(qū)域的閥值,如果重合度大于設(shè)定的閥值,則認(rèn)為發(fā)生了碰撞。

        由于任何一個AABB包圍盒的各個面都是平行于坐標(biāo)平面的,因此判斷兩個AABB包圍盒是否發(fā)生碰撞僅需分別判斷3個軸方向的交疊部分大小是否大于設(shè)定的閥值,若大于則發(fā)生了碰撞,否則沒有發(fā)生碰撞。[4]

        構(gòu)造檢測兩個剛體是否碰撞的方法為首先分別計算A、B兩剛體當(dāng)前位置對應(yīng)的AABB包圍盒,然后再計算兩個AABB包圍盒在同一軸向上的交疊值。若最大值中較小的大于最小值中較大的則有交疊,交疊值為最大值中較小的減去最小值中較大的;否則沒有交疊。按照此方法即可計算出兩個剛體對應(yīng)的AABB包圍盒3個軸方向上的交疊部分大小。

        1.2 標(biāo)志板的使用

        模擬現(xiàn)實世界的場景中經(jīng)常需要放置一些裝飾物,如樹、灌木等。由于這些植物的外形是十分復(fù)雜的幾何形狀,若直接使用三角形進行構(gòu)建將需要海量的頂點,以現(xiàn)在主流智能手機的硬件配置是難以支撐的。因此構(gòu)建場景中的植物時需要其他成本更為低廉的技術(shù),所以本系統(tǒng)的場景中均采用了標(biāo)志板技術(shù),使用紋理矩形來繪制恐龍展臺。[4]

        1.3 著色器

        1.3.1 頂點著色器

        頂點著色器是一個可編程的處理單元,功能為執(zhí)行頂點的變換、光照、材質(zhì)的應(yīng)用與計算等與頂點相關(guān)的操作。其工作過程為,首先將原始的頂點幾何信息及其他屬性傳送到頂點著色器中,經(jīng)過頂點著色器處理后產(chǎn)生紋理坐標(biāo)、顏色和點位置等后繼流程所需要的各頂點屬性信息,然后再將其傳遞給圖元裝配階段。

        1.3.2 片元著色器

        片元著色器是用于處理片元值及其相關(guān)數(shù)據(jù)的可編程單元,其可執(zhí)行紋理采樣、顏色的匯總、計算霧顏色等操作,每片元執(zhí)行一次。片元著色器的主要功能為,通過重復(fù)執(zhí)行將3D物體中的圖元光柵化后產(chǎn)生的每個片元的顏色等屬性計算出來交由后繼階段使用,如剪裁測試、深度測試以及模板測試。

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

        2.1 系統(tǒng)的主要功能

        本文所設(shè)計的3D恐龍博物館平臺的主要功能模塊如下:

        (1)場景模塊。主要分為博物館和恐龍兩個實體,用于調(diào)整博物館和恐龍模型在系統(tǒng)中的位置。

        (2)主角人物模塊。主要用于設(shè)置主角的特性,如視角轉(zhuǎn)換,碰撞檢測等。此外該模塊還負(fù)責(zé)設(shè)置人物的動作。

        (3)控制模塊。包括主角移動控制和恐龍旋轉(zhuǎn)控制兩部分。

        (4)展臺模塊。該模塊負(fù)責(zé)對展臺中的恐龍進行簡單的圖片介紹和語音介紹。

        (5)展示廳模塊。主要負(fù)責(zé)對恐龍進行詳細(xì)介紹,包括語音控制,背景音樂控制和恐龍觸控控制。

        系統(tǒng)結(jié)構(gòu)功能如圖2所示。

        圖2 恐龍博物館系統(tǒng)結(jié)構(gòu)

        2.2 系統(tǒng)層次

        整個軟件系統(tǒng)架構(gòu)分為三個層次,每個層次的功能分別如下:

        (1)庫和接口層。該層主要提供給應(yīng)用框架層一些基本的類庫和接口,包括Android的C/C++庫、RTP/RTCP庫和多媒體的處理接口。

        (2)應(yīng)用框架層。該層采用模塊化開發(fā)方法,通過使用其下層的函數(shù)庫提供的接口,將實現(xiàn)相同或相似功能的封裝成為一個模塊進而供應(yīng)用層來開發(fā)使用。

        (3)應(yīng)用層。通過與應(yīng)用框架層提供的模塊相交互、資源分配等,基于Android的四大組件及其他相關(guān)控件完成畫面設(shè)計,為用戶提供一個可視的界面平臺。[3]

        3 系統(tǒng)實現(xiàn)

        3.1 場景中恐龍展臺的實現(xiàn)

        每個展臺用一個紋理矩形進行繪制,紋理矩形上采用內(nèi)容為裝飾物的透明背景紋理圖。繪制紋理矩形時要采用恰當(dāng)?shù)幕旌弦蜃?,使裝飾物產(chǎn)生正確的遮擋效果。由于基本標(biāo)志板實現(xiàn)的裝飾物實際上是簡單的紋理矩形,因此適合用來呈現(xiàn)左右軸對稱的物體,對于非左右對稱的物體可能會給人虛假的感覺。同時也正是由于每一個裝飾物僅需要一個紋理矩形,所以此技術(shù)需要的系統(tǒng)資源非常少,效率很高。[4]

        3.2 3D模型的設(shè)計與加載的實現(xiàn)

        3.2.1 用3DMax設(shè)計3D模型

        系統(tǒng)所呈現(xiàn)的3D模型都是在3DMax軟件下進行模型設(shè)計的。在進行模型設(shè)計時,首先用基本幾何圖形構(gòu)造出恐龍模型的輪廓,然后再用擠壓法做出恐龍模型,最后經(jīng)過軟件自帶的優(yōu)化系統(tǒng)優(yōu)化后以“*.obj”格式導(dǎo)出。

        3.2.2 加載obj文件

        (1)加載僅有頂點坐標(biāo)與面數(shù)據(jù)的obj文件

        (2)為了使模型具有更強的立體感這一環(huán)節(jié)采用了加載后自動計算面法向量的方法。其計算方法為首先將法向量數(shù)據(jù)由構(gòu)造器參數(shù)中傳入,然后求出三角形中的一個點到另外兩個點的向量,最后將求出的兩個向量進行叉積即可得出三角形面的法向量。

        (3)加載后自動計算平均法向量

        點平均法向量是指當(dāng)一個頂點屬于不止一個平面時,其法向量采用其所屬多個平面各自法向量的平均值。采用平均值后,繪制出來的物體表面就平滑了。

        為了便于計算點平均法向量,首先表示出頂點法向量。在這里要判斷兩個法向量是否相同,由于浮點數(shù)有計算誤差,事實上相等的法向量其浮點值也很難做到絕對一致。因此比較時需設(shè)定一個閥值,當(dāng)差小于閥值時就認(rèn)為相等,本系統(tǒng)在這里采用的閥值為0.0000001。求一組法向量平均值的策略為,首先將所有法向量的X、Y、Z分量值各自求和得到和向量,然后將和向量規(guī)格化即可得到平均法向量。計算出各個面的法向量后并加入到各個頂點對應(yīng)的法向量集合中。當(dāng)所有面的法向量計算結(jié)束后,再求出各個頂點的平均法向量,接著送入法向量數(shù)據(jù)數(shù)組以供創(chuàng)建加載物體對象時使用。

        (4)加載紋理坐標(biāo)

        為了實現(xiàn)模型紋理的加載,首先要增加接收紋理坐標(biāo)數(shù)據(jù),并將紋理坐標(biāo)數(shù)據(jù)送入緩沖以備渲染管線使用,值得注意的是繪制方法也要增加紋理ID的入口參數(shù),這樣在繪制時可根據(jù)需要傳入不同的紋理,方便后續(xù)不同模型的紋理加載。

        在將obj文件加載的步驟中也要加載頂點紋理坐標(biāo)數(shù)據(jù),并將數(shù)據(jù)存放到數(shù)組中供創(chuàng)建對象使用,在加載紋理坐標(biāo)時可以將加載后的值除以2,這樣可以減少紋理的重復(fù)次數(shù)。

        最后在著色器上也要增加接收紋理坐標(biāo)、紋理數(shù)據(jù)以及進行紋理采樣。[4]

        3.3 3D恐龍模型縮放與旋轉(zhuǎn)的實現(xiàn)

        為了方便用戶的操作,在縮放與旋轉(zhuǎn)上采用了多點觸控的技術(shù)。

        多點觸控是指同時支持兩個或兩個以上的觸控點,一個稱為主點,另一個稱為輔點,每個觸控點都有按下、移動和抬起3個動作。實現(xiàn)多點觸控的原理為:在觸控到下一點后將原來位置記錄為舊位置,設(shè)置新位置然后計算兩個觸控點的直線距離。

        縮放的實現(xiàn)。首先判斷用戶是否已觸控到兩個點,若已完成觸控,則計算兩個觸控點之間的距離。根據(jù)兩點間的距離設(shè)置以完成對恐龍模型的縮放。

        旋轉(zhuǎn)的實現(xiàn)。首先計算上一位置對應(yīng)的角度和當(dāng)前對應(yīng)的角度,將兩個角度相減得到旋轉(zhuǎn)變化角度,然后將旋轉(zhuǎn)變化角度疊加到總旋轉(zhuǎn)角度中。根據(jù)旋轉(zhuǎn)的角度與恐龍移動的關(guān)系來實現(xiàn)恐龍的旋轉(zhuǎn)。

        3.4 主角(展翅飛翔的雄鷹)的動畫實現(xiàn)

        主角動畫采用關(guān)鍵幀動畫,就是給頂點著色器提供動畫中每個關(guān)鍵幀對應(yīng)的各個頂點的位置數(shù)據(jù)以及融合比例。頂點著色器根據(jù)兩套位置數(shù)據(jù)集當(dāng)前融合的比例融合出一套結(jié)果頂點位置數(shù)據(jù)。只要在繪制每一幀時提供不同的混合比例即可。

        老鷹用到了3個關(guān)鍵幀包含4個動畫階段。

        第一階段是對1、2號關(guān)鍵幀中頂點數(shù)據(jù)的融合。

        第二階段是對2、3號關(guān)鍵幀中頂點數(shù)據(jù)的融合。

        第三階段是對3、2號關(guān)鍵幀中頂點數(shù)據(jù)的融合。

        第四階段是對2、1號關(guān)鍵幀中頂點數(shù)據(jù)的融合。

        重復(fù)執(zhí)行上述四個階段即可完成雄鷹展翅飛翔的動畫。具體效果如圖3所示。[4]

        圖3 雄鷹運行效果圖

        具體實現(xiàn)方法如下:

        (1)在用3dmax設(shè)計好雄鷹模型后導(dǎo)出obj文件。

        (2)加載雄鷹模型,創(chuàng)建第一個頂點坐標(biāo)數(shù)據(jù)緩沖,設(shè)置字節(jié)順序轉(zhuǎn)換為浮點型緩沖,向緩沖區(qū)放入頂點坐標(biāo)數(shù)據(jù),設(shè)置緩沖區(qū)起始位置。重復(fù)此方法將3個關(guān)鍵幀的頂點數(shù)據(jù)加載進應(yīng)用程序并存放到緩沖中。

        (3)為了在頂點著色器中能夠根據(jù)比例融合關(guān)鍵中的頂點數(shù)據(jù),因此需要將融合的比例傳入渲染管線。由于有3個關(guān)鍵幀,因此融合比例在0-2之間連續(xù)變化。

        4 系統(tǒng)應(yīng)用效果

        4.1 恐龍博物館場景

        點擊應(yīng)用圖標(biāo)便可以進入到開場動畫,進入開場動畫后會看到該應(yīng)用的主界面,在這里滑動可選擇不同的博物館場景,每個場景中有不同的博物館和恐龍。點擊一下屏幕后我們會進入到恐龍博物館的加載界面。系統(tǒng)在恐龍模型和場景模型加載完成后進入博物館。完成后的效果如圖4所示。

        圖4 恐龍博物館場景

        4.2 恐龍展臺

        進入博物館后,接近恐龍點擊右上角圖標(biāo)進入個體恐龍展臺,在展臺界面中可以得到該恐龍的一些簡單信息,如身高、體重、生存時期等。完成后的效果如圖5所示。

        圖5 恐龍展臺

        4.3 恐龍展示廳

        在展臺中點擊左上角的球形圖標(biāo)即可進入單個恐龍的展示廳,在這里調(diào)用的是恐龍的3D模型,用戶可對模型進行放大縮小,旋轉(zhuǎn)等操作。觸摸恐龍的部位,會自動跳轉(zhuǎn)到對該部位的單獨介紹界面,同時該部位會發(fā)亮以提醒用戶為該部位的單獨介紹。完成后的效果如圖6所示。

        圖6 恐龍展示廳

        5 結(jié)束語

        作為時下最熱門的手機系統(tǒng),Android的應(yīng)用擁有廣大的用戶群,所以Android的應(yīng)用開發(fā)也顯得尤為重要。

        目前本系統(tǒng)的預(yù)期目標(biāo)已經(jīng)基本達到了,整體系統(tǒng)運行良好,在本系統(tǒng)中添加了大量的恐龍模型和相關(guān)的資料,起到了較好的科普宣傳作用。美中不足的是娛樂性方面還存在欠缺,這是本系統(tǒng)的進一步重點完善的內(nèi)容。

        參考文獻:

        [1]柯元旦,宋銳.Android程序設(shè)計[M].北京:北京航空航天大學(xué)出版社,2010:12-35.

        [2]宋小青,周東升.基于Android平臺的應(yīng)用開發(fā)研究[J].軟件導(dǎo)刊,2011,10(2):104-106.

        [3]周時偉,謝偉波.基于Android的智能家居終端設(shè)計與實現(xiàn)[J].微型機與應(yīng)用,2012,7:11-13.

        [4]吳亞峰.Android 3D游戲開發(fā)技術(shù)寶典[M].北京:人民郵電出版社,2013:227-289.

        [5]吳亞峰.Android 3D游戲開發(fā)技術(shù)詳解與典型案例[M].北京:人民郵電出版社,2011:49-55.

        [6]火星時代.3ds Max 2011白金手冊[M].北京:人民郵電出版社,2011:235-271.

        作者簡介:張鵬(1991.3-),男,學(xué)士,主要研究方向:軟件工程;魏嘉銀(1986.3-),男,博士,主要研究方向:算法設(shè)計與分析;秦永彬(1980.11-),男,博士,博士后,副教授,碩士生導(dǎo)師,主要研究方向為:企業(yè)ERP研究與應(yīng)用、智慧計算與智能計算、大數(shù)據(jù)管理與應(yīng)用、移動互聯(lián)網(wǎng)研究與應(yīng)用。

        97久久天天综合色天天综合色hd| 亚洲综合自拍偷拍一区| 国产高清av在线播放| 亚洲欧美日韩中文在线制服| 日韩中文在线视频| 国产无套粉嫩白浆内精| 亚洲av精二区三区日韩| 亚洲av无码成人专区片在线观看| 久久99精品免费一区二区| 中文字幕中文字幕人妻黑丝| 国产自拍视频免费在线| 国产顶级熟妇高潮xxxxx| 国产成人国产在线观看| 人妖系列在线免费观看| 久久精品99国产精品日本| 色欲av自慰一区二区三区| 亚洲精品中文字幕观看| 午夜精品男人天堂av| 中文无码伦av中文字幕| 国产成人精品午夜福利| 日韩精品免费在线视频| 极品粉嫩小仙女高潮喷水操av| 亚洲国产成人精品无码区二本| 国产亚洲精品自在久久蜜tv | 自慰高潮网站在线观看| 日本一区二区三区四区在线视频| 粗大的内捧猛烈进出小视频| 免费特级黄毛片| 女优免费中文字幕在线| 国产一级二级三级在线观看视频| 亚洲精品午夜无码电影网| 精品久久久久中文字幕APP| 国产精品麻豆一区二区三区 | 东京热加勒比无码少妇| 亚洲国产成人精品激情资源9| 全国一区二区三区女厕偷拍| 男女做爰高清免费视频网站| 国产成人国产在线观看入口| 亚洲国产成人精品一区刚刚| 一本无码中文字幕在线观| 三上悠亚av影院在线看|