Skip to content

Latest commit

 

History

History
83 lines (59 loc) · 2.22 KB

readme.md

File metadata and controls

83 lines (59 loc) · 2.22 KB

OpenGl draw Earth-Moon system

该项目为基于 open gl es 3.0 绘制的安卓端地月系统,根据目前的时间实时展现出地月所处的状态, 作为本科设计的一个小demo

todo

  • 加强交互性
  • 加入时间实时,计算太阳光源, 以及地球自传位置
  • 纹理压缩
  • 使用点🧚‍绘制🌃
  • 纹理采样器的使用

开发环境

  • OS: darwin x64
  • IDEA: Android Studio 4.0
  • Java: v8
  • OpenGl ES: 3.x
  • Shader Language: GLSL ES

运行环境

  • Core: Android 5.0
  • OS: Harmony OS
  • Type: HUAWEI P20

渲染效果图

[图片]

地月位置以及光源位置

xxxx

光照渲染模型

使用 Phong 光照模型 增加渲染真实感,场景中出现了三种光源

  • 高光(Specular) 计算公式:采用半角计算公式 [图片] [图片] 只有高光的效果图

  • 环境光 计算公式 [图片] [图片] 只有环境光的效果图

  • 散射光 计算公式 [图片] [图片] 只有散射光的效果图

云雾效果

纹理贴图

贴图实现

球体贴图:2D纹理,只给顶点附上纹理坐标值(s, t),每片元通过插值来计算。

为了提高渲染真实感,🌍采用两幅贴图,一副光亮部分贴图,一副黑暗贴图。 同时🌏上的☁️层,也是通过一个旋转球体实现 🌛所采用的贴图只有一副,明部提亮纹理原色,暗部暗化纹理原色。 🌃背景采用在星空球体上随机绘制点而成.

纹理压缩

为了减少加载纹理时bitmap的内存占用,采用的是 ETC1 压缩方式,忽略透明色彩通道(α)。采用 etc1tool 工具可用于将 PNG 图片编码为 ETC1 压缩标准格式。

采样器(sampler)

采样器定义了纹理的布局模式,采样器的配置对象 sampler 对象。

摄像机(Camera)

摄像机支持上下滑动观赏

投影(Projection)

投影矩阵公式,采用透视投影矩阵计算投影位置,增加视觉真实性, OpenGL ES 采用的透视运算投影矩阵如下 [公式图片]

交互(interaction)

通过滑动屏幕可以改变摄像机在空间坐标的位置,从不同角度观察地月系统

参考

测试图片样式