Image processing WebGL地球:如何制作云 问题

Image processing WebGL地球:如何制作云 问题,image-processing,glsl,webgl,shader,image-manipulation,Image Processing,Glsl,Webgl,Shader,Image Manipulation,我想用WebGL从低轨道(这里约300公里)构建一个真实的地球视图。也就是说,在网络上,以及它所暗示的一切,而且在移动设备上。不要停止阅读这里:为了让这一点不那么困难,用户可以到处看,但不能平移,因此视图只涉及一个3000公里宽的小区域。但是,几分钟后,用户看到的是一颗卫星,随着地球自转的轻微移动,用户回到了原来的位置,等等。因此,云层不可能一直在同一个地方 事实上,我已经能够包括城市灯光,极光,闪电。。。除了云。我看过很多关于实时渲染的演示,有激情的人和研究人员,但是他们都没有一个好的,真实的

我想用WebGL从低轨道(这里约300公里)构建一个真实的地球视图。也就是说,在网络上,以及它所暗示的一切,而且在移动设备上。不要停止阅读这里:为了让这一点不那么困难,用户可以到处看,但不能平移,因此视图只涉及一个3000公里宽的小区域。但是,几分钟后,用户看到的是一颗卫星,随着地球自转的轻微移动,用户回到了原来的位置,等等。因此,云层不可能一直在同一个地方

事实上,我已经能够包括城市灯光,极光,闪电。。。除了云。我看过很多关于实时渲染的演示,有激情的人和研究人员,但是他们都没有一个好的,真实的云层。然而,我相信我是第100(…)00个考虑这样做的人,所以请启发我

这里暗示了几个问题:

  • 云使用什么输入?气象实况数据
  • 渲染的可能性是什么?使用着色器修改的带有云贴图的透明层?有几个透明层可以获得体积渲染的效果?但是如何将阴影彼此投射:唯一的解决方案是使用网格?或者阴影可以每x分钟按程序计算并映射到服务器上
少规格 以下是一些想法,按重要性排序,总结了我尚未看到的内容:

  • 云遮住了地球的60%

  • 云层散射城市和闪电的光线,在夜间有瑞利散射

  • 在这个距离上,视差效应是可见的,即使是最小的云层,它也非常可怕

  • 据我所见,即使是昂贵的实时在线气象资源也没有用处:它们借助UV和IR光波瞄准雨云或暴风云,因此它们无法100%捕捉到它们,也无法提供我们都知道的“正常”视图。此外,在可见光下拍摄的罕见的好云纹理很难区分地面和云层:有时,一条5000公里长的海岸就矗立在茫茫人海之中。服务器可以使用这些图像创建更好的纹理

    当我看到这些图片时,我想象最省钱的方法是从包含不同模型的数据库中合并几个漂亮的云网格,然后在用户经过时在着色器中稍微变换这些网格。如果90分钟后他回来时还在这里,不管模型是否又变了。然而,飓风不会消失


    您对此有何看法?

    对于这种效果,可能只有一种方法可以正确处理,那就是:

  • 体素贴图+体绘制可能使用反向光线跟踪器渲染

    由于您的位置是固定的,所以对内存的要求应该不会太高。您需要同时实现MIE和瑞利散射。散射可以简化很多,并且看起来仍然很好,请参见

    体素贴图处理光间隙、阴影和散射相对容易,但需要大量内存和计算能力。所有其他的2D技术通常只是痛苦地围绕着3D体素贴图所做的事情进行工作,几乎不费吹灰之力。例如:

  • 程序云图生成器

    对于每种类型的云,您都需要这样做,以便可以进行渲染。这里有LIB/演示/示例,请参见:


  • 我认为最好一次解决一个图形问题:如何提供一个(或多个)云层,如何计算/模拟这些层中的云,如何从这些结果投射阴影,并通过城市提供的灯光(以及闪亮海洋表面的反射)照亮云,如何在着色器中包含像云一样的光线、银线或极光等。。。你的问题有太多不同的部分,所以不适合so格式。@BeyelerStudios确实,我没有对答案格式做太多精确的说明。我需要的是一个宽泛的想法,这样我和futur的用户就可以找到一些关于如何做到这一点的线索。我编辑问题,然后请参加一门基于物理的光传输课程,因为你要求在你的问题中提供讲座的内容。渲染云是一个开放的挑战,通常通过着色器中的程序生成有效/欺骗地完成,这可能是你的问题/研究主题之一。如何让光线通过云层从表面反弹到相机的轨道/渲染极光或其他大气效果,这是一个全新的深度,每个效果本身。然后你的具体问题可能是:如何缩小/缩放程序云着色器?如何根据光照贴图照亮程序云?,如何使用程序云投射阴影。。。