前面绘制的矩形、立方体确实确实让人看烦了,并且实际生活中的物体是非常复杂的,我们不可能像前面哪样指定顶点来绘制,因此本篇博客就说明通过OpenGL ES加载一个3D模型。这样复杂物体的设计工作就可以交给专业的设计师来做了,进行3D建模的工具比如3dmax、maya等。
设计师通过这些软件构建出来漂亮的3D模型,并且可以通过软件导出有关该模型的各种数据信息文件,比如顶点坐标,法向量,纹理坐标等信息。模型文件有很多类型,不同的类型的模型文件其实就是按照不同的文件格式来保存有关3D模型的信息的。
一个开源C++库Assimp用来加载模型,Assimp可以导入几十种不同格式的模型文件(同样也可以导出部分模型格式)可以通过Assimp获取所有我们需要的模型数据信息,目前还没有java版的Assimp库,不过也可以将这个库编译到android上使用,不过对于简单的型很,只需要了解obj文件的格式也可以自己动手写代码来加载。
#
# object Teapot01
#
v 15.7604 27.2033 -0.2686
v 14.5306 27.2033 5.9599
v 14.3264 28.0401 5.8730
...
# 529 vertices
vn -0.9667 -0.2558 -0.0000
vn -0.8930 -0.2563 -0.3699
vn -0.8934 0.2560 -0.3691
...
# 530 vertex normals
vt 0.9541 0.9784 0.0000
vt 0.8991 0.9784