该项目为基于 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 对象。
摄像机支持上下滑动观赏
投影矩阵公式,采用透视投影矩阵计算投影位置,增加视觉真实性, OpenGL ES 采用的透视运算投影矩阵如下 [公式图片]
通过滑动屏幕可以改变摄像机在空间坐标的位置,从不同角度观察地月系统