用瓷砖绘制球体表面时,如何处理极性变形?


24

在干净的笛卡尔网格上处理位置交互的方式很容易。这只是简单的数学。如果您只想截断两极或其他物体,则可以忽略一堆球体表面的几何形状。但是我一直想出极地空间至关重要的游戏的想法。地理编码的ARG和全球无赖类物品。

我想要正方形(ish?)位置-无论如何,可以用全球范围内相同大小的正方形瓷砖合理地表示。

这必须是一个已解决的问题,对吗?

有什么解决方案?

预计到达时间:

在赤道上-并假设您的正方形位置相当小,它非常接近真实值,您可以在最赤道行南北两行拥有一个正方形。而且,您可以通过手动挥动高达45度左右的差异来避免这种情况。但是最终,极点向圆周的行中需要减少正方形。如果我将行的长度减少1并将正方形偏移1/2,则它们就像十六进制,并且进行编码以跟踪连接相对容易。但是,随着您的步入正轨,它变得越来越极端。

将世界的表面投影到立方体的表面上很诱人。但是我认为必须已经使用了更优雅的解决方案。

如果我做了立方体的事情(不通过大地测量学进一步剖析),那么将杆放在面的中心或三个侧面的顶点是否有任何利弊?


1
您能详细说明“正方形”的意思吗?“正方形”是如何方形的?
史蒂夫H

Answers:



9

我一直想看到一个游戏,其中球面地图使用某种规则的多面体而不是在圆环上玩世界。这种技术称为Dymaxion映射(来源:grunch.net替代文字         

我会推荐一个二十面体。绘制当前三角形,使其在正方形的一条边上对齐。当玩家离开三角形时,向上拉下一个三角形并再次相同地映射它。然后将玩家的坐标重新映射到新部分。因此,地图的每个部分都有其自己的坐标系。另外,您还需要为3个相邻部分和9个半相邻部分绘制背景。我认为,如果做得好,用户将无法确定其实施方式。

是一个可能如何工作的示例。

当然,在阅读本文之后,您可能会使用经典的环面贴图,而我将等着看一个真正的多面体宇宙。


我不会使用圆环。我可以像Civ游戏一样使用圆柱体。但是,由于缺乏出色的解决方案,我正认真地倾向于一个立方体。立方体是多面体!:)
clweeks 2010年

5

如果使用测地线基础创建球体,则在顶点间距方面,极地区域将与任何其他区域一样对待,这有利于统一的uv贴图。

大多数建模应用程序允许您使用测地线设计来创建球体图元。


问题在于,在这种情况下,您将获得菱形而不是正方形,而这并不是OP想要的。
Kornel Kisielewicz

除非我缺少任何东西,否则不会给我提供更易于协调,映射和链接的区域...是吗?
clweeks 2010年

测地线似乎是我的选择,无法想到常规细分的任何其他选择。如果确实需要正方形区域,那么即使与其他图块重叠,也可以生成以三角形中心为中心的正方形区域。对于足够大的球体(和足够小的三角形),正方形区域和相邻三角形面之间的偏移将是可忽略的。那应该保留能够在同一坐标系中描述局部(即相同正方形)相互作用的优点,不是吗?
MrCranky

我认为,如果确实需要,有些测地线形状可以给出近似的正方形。
speeder 2010年

您得到的是菱形而不是正方形,但是进行校正就应该很容易。无极保证。
克里斯(ChrisE)2011年

5

没有办法用正方形(或矩形)“映射”一个球体并使它们全部在“公共”顶点连接。

但是,按需生成“本地视图”是否可行?问题空间并未真正在问题中说明,但是如果我正在做一些需要城市景观但又希望能够旋转世界的工作,我可能会暂时将网格映射到地图的“足够平坦”部分世界。网格的原点将位于您本地中心所在的任何位置,并且该点处的法线与行星表面的法线匹配。

然后,当一个人离开网格时,将按需生成一个新的。

这可能适用于OP,也可能不适用,但对于某些操作可能有用。


4

取一个立方体,其顶点和立方体中心之间的距离等于所需的半径。您有一个由6个四边形组成的球体。

现在,在每个步骤中,将每个四边形划分为4个,然后将新的5个顶点(一个在中心,四个在边上-警告,它们已共享)从中心移开,以便它们像期望的那样半径。

不,这种方法并不完美,但至少它在球体上的分布大致相同。


3
扭曲实际上非常严重-面部中间的四边形将接近正方形,而拐角附近的四边形将严重失真。
JasonD 2010年

@JasonD:它将仍然比所有钻石都要好。如果您要投票,建议一种失真较小的解决方案。
Kornel Kisielewicz

好吧,您可以用测地线划分很好地近似一个球体,但是我不确定我是否知道这对我有什么帮助。
clweeks 2010年

1

使用dymaxion max时,您可以在平面上将六边形布置成三角形,但是由于地图并不是真的平坦,因此它们是五边形。如果要允许播放器在它们经过某些部分时保持其方向,则需要将位置图与它们的实际存储方式分开。对于建筑物之类的东西,您可以存储一张矩形向量的小地图,然后就可以按照所需的方向进行粗略的绘制。

您不必总是使内部看起来就像最近的地震一样,因为我认为普通玩家甚至不应该为进入东北门而大惊小怪,而应该以面向前门的方式进入屏幕南部和整个建筑物都位于规则的网格上。

尽管如果您仅要存储建筑物和类似的重要地点,那么无论如何您已经完成了足球模式的所有工作。最终结果是,您将世界存储为某种非正方形的图案,然后将其强行放入玩家所在的网格中。

不过,还有另一种选择-如果您不给他们所有如此精确的球体指示,例如,如果您只是给他们一个低精度的指南针,以告诉他们四个正交方向中的哪个最接近北,那么您就可以逃脱只需在玩家到达的任何位置做90度旋转。在假定的图形水平下,您不必担心高层建筑会遮挡某些门道。只要他们知道自己是否在极点附近,就应该对指南针的变化不感到烦恼,除非周围的NPC告诉他们去东北或他们尝试实际到达特定的经纬度坐标。


1

您问的一个问题是制作地图的人问了很久了 :)

无疑,最重要的是阅读Map Projectsions以获得一些可能有用的见解和想法。人们在很长一段时间以来一直在思考在平面2D平面上/以平面2D表示球体表面的挑战。

简短的答案是,不,你不能做。这就是为什么当您查看世界地图时,某些部分会失真,而有些部分则不会。通常是极点,因为大多数地图都是关于非极性区域的。

正如其他答案所说,答案是使用不同的形状(例如六边形或三角形),或动态生成用户当前视点的地图。

毫无疑问,正方形瓷砖很容易管理,但我认为创建平铺十六进制地图并不难。

这是GameDev.net上的较旧文章,您可能会觉得有用。这是关于在网格上做等距和六角形的瓷砖。

http://www.gamedev.net/reference/articles/article747.asp

谷歌搜索“平铺十六进制地图”会给您带来很多成功,有些却没有。


1

我正在使用Sony的几台PNC网络摄像机SNC-RX570N,用于跟踪天空中的移动物体并进行三角测量以获得真实的3D轨迹。初始设置的方面之一是定义无人值守的“旅行”,必须为其选择航路点。这种可编程的航路点数量有限,我想覆盖从地平线到天顶的整个半球(“天球”),不留任何空隙。

因此,我问自己一个问题:“全覆盖(无间隙)所需的最少航点数量是多少?”。我发现我实际上无法完全弄清楚这一点。

摄像机具有无限的摇摄角度(360度)和0-90度的倾斜度,因此从理论上讲,它可以实现完全覆盖。供计算机使用的相机显示屏为4:3长宽比的矩形。1倍变焦时的大致水平FOV为58度。

表示问题的方式有两种,具体取决于选择哪种投影方式:-像墨卡托(Mercator)一样为直线,其中地平线为“赤道”,天顶为“极点”,并在360度平移角度范围内扩展。-极点,即地平线是圆的周长,天顶是圆的中心。

我发现极性是解决问题的最简单方法。我可以将圆切成水平FOV大小的饼图,这告诉我需要绕58度H-FOV的圆上有7个航路点。到目前为止,一切都很好。内半径就是倾斜度或V-FOV,即58度的3/4。到目前为止一切顺利-我已经覆盖了圆圈的最外层。

但是随着我们接近顶峰,它变得更加棘手。我假设我的路标之一就是天顶。如何将视图矩形映射到圆心周围的区域?该形状是矩形,椭圆形,枕形还是其他形状?如何填充漂亮的整洁的外壳和天顶上奇怪的形状之间的中间部分?Flummoxed。

我注意到半球的立体角是2 * PI球面度,而我的FOV在1倍变焦时的立体角是0.762 st,这意味着我至少需要9个镶嵌。我怀疑答案是否高于9。


怎么样。圆的面积为PI ^ 2 rad ^ 2,FOV矩形的面积为0.75 rad ^ 2。因此,我们天真地需要13.16点,必须将其四舍五入以完全覆盖14点。现在的问题是-这些将如何放置?
安德鲁(Andrew)

0

如果要制作世界范围的网格,建议您将星球划分为多个国家或大洲,并在每个网格上适当地放置一个正方形网格。让海洋覆盖接缝。


实际上,我的问题是“由于我显然无法做到你以为我真正在问的事情,我该怎么办?”
clweeks 2010年

很好,然后进行编辑。
zaratustra

是的,我想我被另一部分所困扰。我当时正在考虑实现Fuller的Dymaxion贴图,但是使用三角片似乎和我刚开始的极化平铺问题一样,是clusterF *的一部分。因此,根据您的建议,如果有人从北美航行到北亚,并且坐标很重要(也许他们可以建立浮动基地或其他东西),那么如何将接缝缝合在一起?只是拿出一张NA:A5-> A:Z475类型的连接表?
clweeks 2010年

我猜。虽然如果他们设法做到这一点,我只是给他们额外的奖励,让他们离开电网,直到他们明智地去了。
zaratustra
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.