开发地球科学过程的图形模型
Developing a graphical model of Earth Science processes
我是编程新手,对MATLAB、Python和C++等几种语言几乎没有经验,具体来说,但我不能做任何特别的事情。
但是,我想尝试使用 3D 图形制作一个模型来模拟一些地球科学过程,例如山脉的侵蚀、断层,我什至在考虑地球的形成。
我希望它看起来尽可能逼真,所以 3D 是必须的,我几乎想到了像视频游戏电影过场动画质量。
无论如何,我想知道是否有人可以让我了解哪种编程语言最能完成此类项目。
我一直在研究 Unreal Engine、Unity 和 World Machine 以生成地形,但我从未做过此类事情,因此非常感谢您的帮助。谢谢。
语言并不重要...重要的是您的地球将如何存储和呈现。 3D 引擎、框架和物理包 通常 "easy" 可以使用,但经常限制太多,以至于您无法按照您的意图进行,特别是如果您需要科学级数据。看看现代游戏,看看它们有多糟糕。尤其是那些基于 Unity 的。是的,对于游戏是可以的,但是对于物理模拟或者逼真渲染,在大多数情况下是无法使用的。
你需要决定视觉外观和科学相关性哪个更重要
一些科学物理数据不一定能输出视觉上赏心悦目的内容。所以你想要看起来很棒的地球或相关数据?这是决定的第一件事,因此您可以在此基础上继续发展...
决定你的模型stored/represented.
这主要取决于你想要建模什么以及你想要如何渲染。例如:
Analytical/Voxel/Volume 基于表示
许多物理模拟需要(或更多 better/simpler/accurate )体素 space 和体积渲染,尤其是场基础模拟,如流体热流、能量传递、照明效果、云...这种表示需要 大量内存 但通常模拟很简单并且提供最好的视觉质量。对于规则形状,您还可以使用解析表示(方程而不是多边形或体素)。渲染通常使用(返回)光线追踪技术。当前的硬件不太适合这种渲染,所以忘记速度(除非你使用一些快捷方式)。
BR边界表示法
如今的标准 3D 可视化需要 BR 模型的边界表示。这意味着您的地球必须由覆盖您要渲染的任何图层表面的多边形表示。这通常与您所写的科学数据不一致,除非您想将地球建模为一组动态构造板块或只是地形表面效果。这适用于基于 DEM(数字高程模型)的模拟(如降雨模拟和计算河流水位等)。要添加视觉细节,请使用 凹凸贴图。
混合
这非常常用,特别是用于地球的照片逼真渲染。由于地球是固体和巨大的,它用 BR 多边形或解析方程表示。在局部查看区域的顶部由体素 space(或纹理数组)表示,其中包含云,以及可缩放分辨率的动态内容,具体取决于视图 zoom/distance)这样您就可以将 BR 渲染与(返回)光线追踪方法通常在 RT(实时)中。例如,请参阅我的回答中的图片:
这是一个混合表示的例子。其中体素 space 不在内存中,而是以具有指数场梯度的椭球数学方程形式代替(分析表示)。
此外,如果您想要高质量的视觉效果,请参阅 PBR (physically based rendering)
如果您消化了以上所有文本并选择了您 want/need 的内容,那么您终于可以开始编码了。我会选择基于 C++/GLSL 的应用程序,但那是因为我的大部分工作都是在这样的环境中完成的。正如我之前提到的,语言并不重要,使用你熟悉的或你最喜欢的。图形 API 取决于您要使用的平台和您需要的东西。例如,对于体素渲染,我将从 SW(仅 CPU 开始)以小规模测试我的算法,然后在工作时移植到 GLSL,因为 gfx 卡上的调试代码真的很难,尤其是如果你从未做过类似的事情。
你可能想要google的一些东西(用于想法或数据整理):
- my GLSLS atmospheric scattering shader
- Landsat GeoCover Mosaics
- World Geodetic System
抱歉,无法提供更具体的信息,因为您没有提供任何具体数据。
我是编程新手,对MATLAB、Python和C++等几种语言几乎没有经验,具体来说,但我不能做任何特别的事情。
但是,我想尝试使用 3D 图形制作一个模型来模拟一些地球科学过程,例如山脉的侵蚀、断层,我什至在考虑地球的形成。
我希望它看起来尽可能逼真,所以 3D 是必须的,我几乎想到了像视频游戏电影过场动画质量。
无论如何,我想知道是否有人可以让我了解哪种编程语言最能完成此类项目。
我一直在研究 Unreal Engine、Unity 和 World Machine 以生成地形,但我从未做过此类事情,因此非常感谢您的帮助。谢谢。
语言并不重要...重要的是您的地球将如何存储和呈现。 3D 引擎、框架和物理包 通常 "easy" 可以使用,但经常限制太多,以至于您无法按照您的意图进行,特别是如果您需要科学级数据。看看现代游戏,看看它们有多糟糕。尤其是那些基于 Unity 的。是的,对于游戏是可以的,但是对于物理模拟或者逼真渲染,在大多数情况下是无法使用的。
你需要决定视觉外观和科学相关性哪个更重要
一些科学物理数据不一定能输出视觉上赏心悦目的内容。所以你想要看起来很棒的地球或相关数据?这是决定的第一件事,因此您可以在此基础上继续发展...
决定你的模型stored/represented.
这主要取决于你想要建模什么以及你想要如何渲染。例如:
Analytical/Voxel/Volume 基于表示
许多物理模拟需要(或更多 better/simpler/accurate )体素 space 和体积渲染,尤其是场基础模拟,如流体热流、能量传递、照明效果、云...这种表示需要 大量内存 但通常模拟很简单并且提供最好的视觉质量。对于规则形状,您还可以使用解析表示(方程而不是多边形或体素)。渲染通常使用(返回)光线追踪技术。当前的硬件不太适合这种渲染,所以忘记速度(除非你使用一些快捷方式)。
BR边界表示法
如今的标准 3D 可视化需要 BR 模型的边界表示。这意味着您的地球必须由覆盖您要渲染的任何图层表面的多边形表示。这通常与您所写的科学数据不一致,除非您想将地球建模为一组动态构造板块或只是地形表面效果。这适用于基于 DEM(数字高程模型)的模拟(如降雨模拟和计算河流水位等)。要添加视觉细节,请使用 凹凸贴图。
混合
这非常常用,特别是用于地球的照片逼真渲染。由于地球是固体和巨大的,它用 BR 多边形或解析方程表示。在局部查看区域的顶部由体素 space(或纹理数组)表示,其中包含云,以及可缩放分辨率的动态内容,具体取决于视图 zoom/distance)这样您就可以将 BR 渲染与(返回)光线追踪方法通常在 RT(实时)中。例如,请参阅我的回答中的图片:
这是一个混合表示的例子。其中体素 space 不在内存中,而是以具有指数场梯度的椭球数学方程形式代替(分析表示)。
此外,如果您想要高质量的视觉效果,请参阅 PBR (physically based rendering)
如果您消化了以上所有文本并选择了您 want/need 的内容,那么您终于可以开始编码了。我会选择基于 C++/GLSL 的应用程序,但那是因为我的大部分工作都是在这样的环境中完成的。正如我之前提到的,语言并不重要,使用你熟悉的或你最喜欢的。图形 API 取决于您要使用的平台和您需要的东西。例如,对于体素渲染,我将从 SW(仅 CPU 开始)以小规模测试我的算法,然后在工作时移植到 GLSL,因为 gfx 卡上的调试代码真的很难,尤其是如果你从未做过类似的事情。
你可能想要google的一些东西(用于想法或数据整理):
- my GLSLS atmospheric scattering shader
- Landsat GeoCover Mosaics
- World Geodetic System
抱歉,无法提供更具体的信息,因为您没有提供任何具体数据。