工具: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