WebGL绘制三维地球
通过Three.js也许可以很方便的展示出3D模型,但是你知道它是怎么一步一步从构建网格到贴图到最终渲染出3D模型的吗?现在我们直接使用底层的webgl加上一点点的数学知识就可以实现它。
3D模型在线预览提供多种低代码平台3D模型在线预览解决方案,实现了将多种3D模型格式无缝集成到低代码业务表单中。这意味着用户可以在不离开低代码平台的情况下,直接查看和操作3D模型,极大地提升了数据可视化的效果和用户交互体验。
构建网格
首先我们要建立球体的三维模型,三维网格模型包括如下属性(不熟悉请复习webgl教程):
- 顶点(position)
- 法线(normal)
- 贴图坐标(uv)
- 顶点索引(indices)
最后要构建出如下所示的经纬球模型:
首先可以从xy平面构建圆形,接着再从xz平面将圆形转化为圆球,这其中只需使用到三角函数而已,是不是非常简单。
- 法线使用的是顶点坐标,因为法线与顶点其实方向是一致的
- 顶点索引为6个点,是因为每个面由两个三角形构成
- 贴图uv坐标不需要深度信息,它对应上贴图的xy坐标即可
下面就是构建网格模型的基本逻辑:
编写着色器
和普通着色器相比,只是增加了uv坐标,uv直接通过顶点着色器差值透传到片段着色器即可,在片段着色器使用texture2D函数获取uv坐标对应的颜色,整体上也是比较基础。
实现3D地球
最后实现部分就和之前的webgl基本逻辑一致,不过要准备好地球贴图。
图片加载完将构建好的贴图sampler传入着色器即可,其他都是基础业务逻辑,不再详述,这样我们就将三维地球实现了。