OpenGL ES for Android (模型纹理)

模型纹理

模型加载最后的一课,就是使用贴图,不再使用纯色显示物体。纹理的信息也是和材料一样存放在mtl文件中,格式也是类似的,只是一些信息以map开头的,我们先下载https://free3d.com/3d-model/crocus-flower-v1--75899.html这个模型的文件,找到mtl文件,同样根据https://en.m.wikipedia.org/wiki/Wavefront_.obj_file文档来分析文件内容:

  # 与obj文件同理,#开头是注释可以忽略
  newmtl flower 定义一个名为flower的材料
      ……和材料相同的内容不再重复
 
      map_Ka lemur.tga           # 环境光照贴图 
      map_Kd lemur.tga           # 漫反射颜色
      map_Ks lemur.tga           # 镜面光颜色
      map_Ns lemur_spec.tga      # 反光度贴图
      map_d lemur_alpha.tga      # 透明贴图
      map_bump lemur_bump.tga    # 法线贴图,在后面会学到

值得注意的是,如果没有贴图时我们可以使用纯黑色的一个图片代替。我们可以使用光照贴图那一章的代码来显示,首先是我们下载的这个鲜花的显示,我们需要传入读取到的贴图信息,然后位移和旋转一定的角度,可以得到如下的显示效果:

随后我们再根据文档https://learnopengl-cn.github.io/03%20Model%20Loading/03%20Model/中提到的孤岛危机(Crysis)中的原版纳米装(下载地址https://learnopengl-cn.github.io/data/nanosuit.rar),下载之后加载它,我们调整光源位置,观察点位置,位移和旋转之后可以看到如下的效果:

因为这个模型有法线贴图,而我们还没有使用,所以效果上和教程上的有些许区别,等我们学习之后再修改代码显示。此章源码https://github.com/jklwan/OpenGLProject/blob/master/sample/src/main/java/com/chends/opengl/renderer/model/LoadModelTextureRenderer.java

到此关于模型加载也就学习完了,后面将要开始学习高级OpenGL的内容。

猜你喜欢

转载自blog.csdn.net/ajsliu1233/article/details/106337157