代码之家  ›  专栏  ›  技术社区  ›  nukenine

开发地球科学过程的图形模型

  •  0
  • nukenine  · 技术社区  · 9 年前

    我是编程新手,对MATLAB、Python&具体来说,C++,但我不能做任何特别的事情。

    然而,我想尝试用3D图形制作一个模型来模拟一些地球科学过程,比如山的侵蚀、断层,我甚至在考虑地球的形成。

    我希望它看起来尽可能逼真,所以3D是必须的,我几乎在考虑像视频游戏电影般的场景质量。

    不管怎样,我想知道是否有人能给我一些关于什么样的编程语言能最好地完成这类项目的见解。

    我一直在寻找虚幻引擎、统一和世界机器来生成地形,但我从来没有做过这样的事情,所以任何帮助都将不胜感激。谢谢

    1 回复  |  直到 9 年前
        1
  •  0
  •   Community Mohan Dere    8 年前

    语言并不重要…重要的是你们的地球将如何存储和呈现。 3D引擎、框架和物理包 通常“容易”使用,但通常限制太多,以至于你不能做你想做的事,尤其是如果你想要科学等级的数据。看看现代游戏,看看它们都有多糟糕。尤其是那些基于Unity的。对游戏来说是可以的,但对于物理模拟或照片真实感渲染,它在大多数情况下是不可用的。

    1. 你需要决定什么是更重要的视觉外观或科学相关性

      一些科学物理数据不一定输出视觉上令人愉悦的内容。所以你想要好看的地球或相关数据?这是你要做的第一件事,这样你才能在这个基础上再接再厉。。。

    2. 决定如何存储/表示模型。

      这主要取决于要建模的内容和渲染方式。例如:

      1. 分析/体素/基于体积的表示

        许多物理模拟需要(或在体素空间和体素渲染上更好/更简单/更准确),尤其是基于场的模拟,如流体流动、热量传递、照明效果、云等。这种表示需要 很多记忆 但通常模拟是简单的,并且提供了最佳的视觉质量。对于规则形状,还可以使用分析表示法(等式代替多边形或体素)。渲染通常使用(反向)光线跟踪技术。当前的硬件不太适合这种渲染,所以请忘记速度(除非您使用一些快捷方式)。

      2. BR边界表示

        如今的标准3D可视化要求 BR 模型的边界表示。这意味着您的地球必须由覆盖要渲染的任何层的表面的多边形表示。这通常与你所写的科学数据不一致,除非你想将你的地球建模为一组动态的构造板块或只是地形表面效应。这适用于基于DEM(数字高程模型)的模拟(如雨水模拟和计算河流水位等)。要添加视觉详图,请使用 凹凸贴图 .

      3. 混合的

        这是非常常用的,尤其是在地球的照片逼真渲染中。由于地球是固体和巨大的,它用BR多边形或解析方程表示。在该局部视图区域的顶部,由包含云的体素空间(或纹理阵列)和可缩放分辨率的动态属性(取决于视图缩放/距离)表示。通过这种方式,您可以将BR渲染与通常在RT(实时)中的(反向)光线跟踪方法相结合。例如,请参阅我的回答中的图片:

        这是一个混合表示的例子。如果体素空间不在内存中,则以椭球体数学方程的形式与指数场梯度邻接(解析表示)。

      如果您想要高视觉质量,请参见 PBR (physically based rendering)

    如果你消化了上面所有的文本并选择了你想要/需要的内容,那么你就可以开始编码了。我会去的 C++/GLSL 这是因为我的大部分工作都是在这样的环境中完成的。正如我之前提到的,语言并不重要,使用你最熟悉或最喜欢的语言。图形API取决于你想要使用的平台和你需要的东西。例如,对于体素渲染,我将从 软件 ( 中央处理器 仅限)在小规模和工作时测试我的算法,然后移植到 GLSL公司 因为调试代码 绿色荧光灯 这张卡真的很难,尤其是你们从来并没有做过类似的事情。

    你可能想在谷歌上搜索一些东西(用于想法或数据汇编):

    对不起,不能比这更具体,因为你没有提供任何具体的数据。

    推荐文章