4

我有兴趣构建一个简单的“谷歌地球”类型的应用程序(用于覆盖我自己的信息,而不是谷歌拥有的大量数据)。我希望它只是一个简单的 X11 应用程序,可以用位移(地形)信息对球体进行光线追踪。射线-球体相交非常简单,但是当将显示映射放入其中时,它开始在我的脑海中变得混乱。

我想知道是否有一种简单的技术可以扩展基本的射线-球体相交以包含位移数据......

4

3 回答 3

1

我找到了这篇论文:http ://www.cgl.uwaterloo.ca/~ecdfourq/GI2008/FourquetGI2008.pdf

以为我会分享,因为它似乎涵盖了我想要做的事情,谢谢大家!

于 2010-12-18T20:15:53.557 回答
1

置换贴图非常简单——只需细分球体,根据从贴图中采样的高度向顶点位置添加偏移量,然后对所有部分进行光线追踪。

相机离球体/地球有多远?如果您就在地表附近,则可能根本不值得制作一个完整的“球体”,只需制作一个“高度场”即可。如果您很远(一次查看整个星球),那么即使是最高的山脉也不应该明显取代地表,因此您应该使用简单的凹凸贴图。还可以考虑使用组合 - 真正移位的粗镶嵌,以及残留高度差上的凹凸贴图。

但无论如何,我无法想象你为什么要进行光线追踪,正如你所描述的问题。只需将其切成三角形并使用 OpenGL。您可能不需要任何光线追踪效果。

于 2010-12-18T16:32:50.463 回答
0

好吧,无论您有一个简单的 20 多边形球体还是一个复杂的位移 2k 多边形球体,光线追踪过程都是相同的。无论场景包含什么,光线都会穿过场景。但它用于实现透明、反射、折射等视觉效果,从您在问题中所说的来看,我认为您可以在项目中不使用这些效果。在这里,您很可能可以通过简单的低成本Ray-Casting侥幸逃脱。

所以,一旦你得到了渲染引擎,你就可以将你想要的所有位移添加到场景中。修改几何图形的两种最常见的方法是:

  1. 凹凸贴图,以及
  2. 位移映射

置换贴图将真实的多边形添加到现有几何体中,而凹凸贴图仅通过弯曲表面法线来模拟视觉效果,从而影响对象的阴影。虽然弯曲法线比镶嵌几何体和添加新多边形更快且成本更低,但它不会产生精确的阴影结果,因此如果它对您的应用程序有任何影响,请注意这一点。

此外,考虑使用自适应 细节级别算法和数据结构,因为离几何越远,它需要的细节就越少。

于 2010-12-18T17:13:31.280 回答