国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

三維Obj模型在android中的載人與渲染

2012-04-29 16:54:01楊乾
電腦知識與技術(shù) 2012年16期
關(guān)鍵詞:載人嵌入式定義

楊乾

摘要:介紹了android平臺對OpenGL的支持,流行的obj三維文件格式。并論述了如何在android平臺中對obj格式進行載人和渲染。重點是介紹了如何用程序?qū)崿F(xiàn)obj模型的載人和渲染。

關(guān)鍵詞:三維模型; opengl; obj; android; 3d

中圖分類號:TP18文獻標識碼:A文章編號:1009-3044(2012)16-3951-03

Load and Render Three-dimensional Model of Obj in the Android

YANG Qian

(Department of Automation, Xiamen University, Xiamen 361005, China)

Abstract:Introduce the support for OpenGL of the Android platform and popular obj 3D file format.discusses how to load and render the obj model in the android .the focus is how to load and render the obj model with the program.

Key words:three-dimensional model; opengl; obj; android; 3d

OpenGL是個專業(yè)的3D程序接口,是一個功能強大,調(diào)用方便的底層3D圖形庫。OpenGL的前身是SGI公司為其圖形工作站開的IRIS GL。IRIS GL是一個工業(yè)標準的3D圖形軟件接口,功能雖然強大但是移植性不好,于是SGI公司便在IRIS GL的基礎(chǔ)上開發(fā)OpenGL。Android 3D引擎采用的是OpenGL ES。OpenGL ES是一套為手持和嵌入式系統(tǒng)設計的3D引擎API,由Khronos公司維護。在PC領(lǐng)域,一直有兩種標準的3D API進行競爭,OpenGL和DirectX。一般主流的游戲和顯卡都支持這兩種渲染方式,Direc? tX在Windows平臺上有很大的優(yōu)勢,但是OpenGL具有更好的跨平臺性。由于嵌入式系統(tǒng)和PC相比,一般說來,CPU、內(nèi)存等都比PC差很多,而且對能耗有著特殊的要求,許多嵌入式設備并沒有浮點運算協(xié)處理器,針對嵌入式系統(tǒng)的以上特點,Khronos對標準的OpenGL系統(tǒng)進行了維護和改動,以期望滿足嵌入式設備對3D繪圖的要求。

Android系統(tǒng)使用OpenGL的標準接口來支持3D圖形功能,android 3D圖形系統(tǒng)也分為java框架和本地代碼兩部分。本地代碼主要實現(xiàn)的OpenGL接口的庫,在Java框架層,javax.microedition.khronos.opengles是java標準的OpenGL包,android.opengl包提供了OpenGL系統(tǒng)和Android GUI系統(tǒng)之間的聯(lián)系。

在真正的游戲中,我們要繪制的3D物體往往十分復雜,我們通常的做法都是在專門的建模工具中創(chuàng)建模型,再將模型導出為特定的格式,然后在我們的程序載入這個模型并進行渲染。在計算機平臺上,常用的3D模型有3DS、OBJ、MD2、MD3、MDL等多種格式。這里只介紹OBJ模型。

public int illum;//光照模型illum

public String textureFileKa;//環(huán)境反射指定紋理文件map_Ka

public String textureFileKd;//漫反射指定紋理文件map_Kd

public String textureFileKs;//鏡面反射指定紋理文件map_Ks

}

大模型TDModel類

public class TDModel {

Vector parts;//小模型數(shù)組

public float left = 0;//模型最左邊

public float right = 0;//模型最右邊

public float front = 0;//模型最前邊

public float back = 0;//模型最后邊

public float bottom = 0;//模型最上邊

public float top = 0;//模型最下邊

public void draw(GL10 gl) {}//定義模型渲染的方法

}

同時定義了兩個輔助類對obj和mtl文件進行加載。Obj文件加載類

public class OBJParser {

//返回讀取的模型,模型坐標為opengl左手坐標,yz軸根據(jù)3dmax翻轉(zhuǎn)public TDModel parseOBJ(String fileName) {}}

mtl文件加載類

public class MTLParser {

//返回材質(zhì)庫

public static Vector loadMTL(Context context, String file) {}

}

這些加載和渲染方法定義好之后就剩下android平臺的實現(xiàn)了。Android的界面顯示需要定義Activity,界面中需要View來顯示3d模型。Android專門定義了GLSurfaceView建立了與opengl之間的聯(lián)系。

所以定義類OBJToDATASurfaceView繼承GLSurfaceView實現(xiàn)Renderer接口。就可以繪制出obj模型了。一下是一個obj模型在android上各個側(cè)面的渲染截圖。

Obj模型文件的載人和渲染已經(jīng)完成,程序渲染效果比較理想,材質(zhì)也渲染出來了,程序還實現(xiàn)了模型貼圖的渲染。如果要實現(xiàn)android游戲的開發(fā),除了模型外,還要有動畫實現(xiàn),物理引擎等很多復雜的東西,但是模型載人是這些游戲的基礎(chǔ)。

[1]劉甫迎.Android移動編程實用教程[M].北京:電子工業(yè)出版社,2012.

[2]吳亞峰,蘇亞光. Android游戲開發(fā)大全[M].北京:人民郵電出版社,2012.

[3]郝玉龍.Android程序設計基礎(chǔ)[M].北京:清華大學出版社,2012.

[4]安吉爾.交互式計算機圖形學[M].5版.北京:電子工業(yè)出版社,2009.

[5]呂???周小平.實戰(zhàn)OpenGL三維可視化系統(tǒng)開發(fā)與源碼精解[M].北京:電子工業(yè)出版社,2009.

[6]希爾.計算機圖形學[M].3版.北京:清華大學出版社,2007.

[7]徐明亮,盧紅星,王琬.OpenGL游戲編程[M].北京:機械工業(yè)出版社,2008.

猜你喜歡
載人嵌入式定義
著名的載人深潛器
搭建基于Qt的嵌入式開發(fā)平臺
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應用
“聯(lián)盟”MS02載人飛船發(fā)射升空
太空探索(2016年12期)2016-07-18 11:13:43
載人大戲再開場
太空探索(2016年9期)2016-07-12 10:00:02
載人火星何日成行
太空探索(2016年6期)2016-07-10 12:09:06
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
Altera加入嵌入式視覺聯(lián)盟
倍福 CX8091嵌入式控制器
自動化博覽(2014年4期)2014-02-28 22:31:15
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
固阳县| 庆阳市| 迁西县| 中阳县| 赤峰市| 略阳县| 香格里拉县| 隆昌县| 隆安县| 沂水县| 富平县| 介休市| 青川县| 牟定县| 通渭县| 屏东县| 通化县| 临朐县| 桓台县| 宜城市| 威海市| 靖西县| 商河县| 科技| 旺苍县| 铁岭市| 北京市| 镇远县| 长沙县| 禹城市| 孟连| 建阳市| 银川市| 武陟县| 永靖县| 高平市| 宁明县| 清镇市| 德阳市| 武汉市| 赤水市|