小编TXP*_*ost的帖子

在 Godot 中的球体表面生成国家形状的几何图形

我目前正在 Godot 中开发一个游戏,该游戏涉及渲染地球上的国家/地区。我之前对 Godot 的经验很少,但过去曾尝试过。

我将来自 Natural Earth 的这些数据用于国家边界,并成功地使用线网格将其显示在地球上。数据最初是 shapefile 格式,但我使用mapshaper.org将其转换为 GeoJSON 。

图片

数据基本上归结为以纬度和经度给出的点列表,然后我将其转换为 3d 点并使用 SurfaceTool 创建网格。

但是,我无法为网格生成实际表面。首先,我无法找到一个内置函数来根据这些数据生成三角形网格。我研究了许多解决方案,包括使用内置的 Mesh.PRIMITIVE_TRIANGLE_FAN 格式,该格式不适用于凹面形状。

我研究了三角剖分算法,例如 delaunay 三角剖分,但在实现它们方面收效甚微。

我目前的计划是使用二维数据(x,y = 经度,纬度)生成一个三角形网格,并将其投影到球体表面。为了产生曲面,我将在网格中包含球体本身的顶点(示例)。

我想知道如何根据这些数据构建三角形网格。本质上,我需要一个可以做以下事情的算法:

  1. 从凹多边形(国家边界)创建三角形网格
  2. 将网格连接到此多边形内的一系列点
  3. 允许多边形内的孔(用于湖泊等)

是我正在寻找的结果示例。

再说一次,我对戈多很陌生,我可能把事情复杂化了。如果有更简单的方法来渲染地球上的国家/地区,请告诉我。

这是我当前的代码:

extends Node

export var radius = 1
export var path = "res://data/countries.json"

func coords(uv):
    return (uv - Vector2(0.5, 0.5)) * 360

func uv(coords):
    return (coords / 360) + Vector2(0.5, 0.5)

func sphere(coords, r):
    var angles = coords / …
Run Code Online (Sandbox Code Playgroud)

geography mesh triangulation godot

5
推荐指数
1
解决办法
395
查看次数

标签 统计

geography ×1

godot ×1

mesh ×1

triangulation ×1