• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 英语学习 > 正文

    模型渲染_三维Obj模型在android中的载人与渲染

    时间:2019-03-30 03:32:27 来源:雅意学习网 本文已影响 雅意学习网手机站

      摘要:介绍了android平台对OpenGL的支持,流行的obj三维文件格式。并论述了如何在android平台中对obj格式进行载人和渲染。重点是介绍了如何用程序实现obj模型的载人和渲染。
      关键词:三维模型; 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是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库。OpenGL的前身是SGI公司为其图形工作站开的IRIS GL。IRIS GL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRIS GL的基础上开发OpenGL。Android 3D引擎采用的是OpenGL ES。OpenGL ES是一套为手持和嵌入式系统设计的3D引擎API,由Khronos公司维护。在PC领域,一直有两种标准的3D API进行竞争,OpenGL和DirectX。一般主流的游戏和显卡都支持这两种渲染方式,Direc? tX在Windows平台上有很大的优势,但是OpenGL具有更好的跨平台性。由于嵌入式系统和PC相比,一般说来,CPU、内存等都比PC差很多,而且对能耗有着特殊的要求,许多嵌入式设备并没有浮点运算协处理器,针对嵌入式系统的以上特点,Khronos对标准的OpenGL系统进行了维护和改动,以期望满足嵌入式设备对3D绘图的要求。
      Android系统使用OpenGL的标准接口来支持3D图形功能,android 3D图形系统也分为java框架和本地代码两部分。本地代码主要实现的OpenGL接口的库,在Java框架层,javax.microedition.khronos.opengles是java标准的OpenGL包,android.opengl包提供了OpenGL系统和Android GUI系统之间的联系。
      在真正的游戏中,我们要绘制的3D物体往往十分复杂,我们通常的做法都是在专门的建模工具中创建模型,再将模型导出为特定的格式,然后在我们的程序载入这个模型并进行渲染。在计算机平台上,常用的3D模型有3DS、OBJ、MD2、MD3、MDL等多种格式。这里只介绍OBJ模型。
      public int illum;//光照模型illum
      public String textureFileKa;//环境反射指定纹理文件map_Ka
      public String textureFileKd;//漫反射指定纹理文件map_Kd
      public String textureFileKs;//镜面反射指定纹理文件map_Ks
      }
      大模型TDModel类
      public class TDModel {
      Vector parts;//小模型数组
      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轴根据3dmax翻转public TDModel parseOBJ(String fileName) {}}
      mtl文件加载类
      public class MTLParser {
      //返回材质库
      public static Vector loadMTL(Context context, String file) {}
      }
      这些加载和渲染方法定义好之后就剩下android平台的实现了。Android的界面显示需要定义Activity,界面中需要View来显示3d模型。Android专门定义了GLSurfaceView建立了与opengl之间的联系。
      所以定义类OBJToDATASurfaceView继承GLSurfaceView实现Renderer接口。就可以绘制出obj模型了。一下是一个obj模型在android上各个侧面的渲染截图。
      Obj模型文件的载人和渲染已经完成,程序渲染效果比较理想,材质也渲染出来了,程序还实现了模型贴图的渲染。如果要实现android游戏的开发,除了模型外,还要有动画实现,物理引擎等很多复杂的东西,但是模型载人是这些游戏的基础。
      [1]刘甫迎.Android移动编程实用教程[M].北京:电子工业出版社,2012.
      [2]吴亚峰,苏亚光. Android游戏开发大全[M].北京:人民邮电出版社,2012.
      [3]郝玉龙.Android程序设计基础[M].北京:清华大学出版社,2012.
      [4]安吉尔.交互式计算机图形学[M].5版.北京:电子工业出版社,2009.
      [5]吕希奎,周小平.实战OpenGL三维可视化系统开发与源码精解[M].北京:电子工业出版社,2009.
      [6]希尔.计算机图形学[M].3版.北京:清华大学出版社,2007.
      [7]徐明亮,卢红星,王琬.OpenGL游戏编程[M].北京:机械工业出版社,2008.

    推荐访问:渲染 模型 Obj Android

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章