【Opengl Android】在安卓上渲染一个obj模型

本文详细介绍了如何在Android中使用OpenGL ES渲染OBJ模型。首先从3D溜溜网下载obj模型,分析其内容,接着介绍org.obj2openjl库用于解析obj文件。在Android中,通过OpenGL ES的渲染流程,包括顶点着色器和片段着色器的编写,以及数据传递给着色器的过程。最后展示了渲染效果,包括仅纹理和加上光线的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工具:eclipse

一、获得一个obj文件并分析内容

3D溜溜网 点击打开链接 可以下载到很多模型文件 用3dmax打开 导出外部格式文件obj  即可得到一个obj模型

将格式改为txt  即可看到里面的数据内容

有些模型文件还会带有mlt文件

数据详解请转——https://www.douban.com/note/142379570/

二、获得obj文件中的数据

一是自己分析里面的数据 请转 https://blog.csdn.net/xiaxl/article/details/77048507

提供了mlt和obj模型的解析方法,大概是将每一行的数据都遍历 分析格式 存入数组 最后会得到几个顶点,法向量,贴图一一对应的数组

二就是 比较懒得我就开始努力的找包 了

首先是obj2opengl.pl  一个可以通过命令行将obj模型自动分析然后转出成.h文件的库,里面会生成等数量的vertices、texture和normal数组

请转http://maider.blog.sohu.com/281704711.html

但.h放在android项目中不能直接使用(当然可以直接将.h里的数据复制到一个专门存数据的新类中,但数据少的时候还行,比如一个立方体可能也就几十行数据,但复杂的模型就会比较困难,需要导入大量float数组,这点上面链接中的博客也有说到解决方法)

或者是用jni方式来解析c++文件

BUT 本懒还是选择勤奋的找包

然后 org.obj2openjl 了解一下 https://github.com/miffels/org.obj2openjl

主要就是

RawOpenGLModel openGLModel = new Obj2OpenJL().convert("file");
OpenGLModelData openGLModelData = openGLModel.normalize().center().getDataForGLDrawElements();

float[] Vertices = openGLModelData.getVertices();
float[] Normals = openGLModelData.getNormals();
float[] TexCoords = openGLModelData.getTextureCoordinates();

然后将你的obj文件放到assets文件下就可以了

这个时候解析完的数据就已经赋给了以上数组 我们就可以开始渲染了


三、Android 中的 Opengl渲染

推荐<<Opengl ES 2 for Android>>这本书吧 你会详细了解在Android中opengl的渲染流程,摄像机设置,投影设置

还有一些这方面的书籍我也都一起打包了 https://download.csdn.net/download/qq_35263780/10366356


就这我自己的小项目讲一讲吧


首先是Activity的主类

获取opengl 读取版本信息检查是否支持  得到一个opengl的视图类 在其中开始渲染renderer类中的东西了

glSurfaceView = new GLSurfaceView(this);
final boolean supportsEs2 = configurationInfo.reqGlEsVersion >= 20000;
		
		if (supportsEs2){
			glSurfaceView.setEGLContextClientVersion(2);
			try {
				glSurfaceView.setRenderer(new FirstOpenGLProjectRender(this));
			} catch (Exception e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
setCo
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值