2013-08-20 69 views
0

所以,我有点失落。对于我正在做的游戏,我想让“世界”成为几何圆顶(由等边三角形构成的球体)。为了生成世界和玩世界,我需要找到一种方法来保存所有的边和顶点,并且能够计算邻居。我不确定如何保存所有不同的顶点和边,这样可以很容易地确定哪些点与每个边相邻,哪些边与每个点相邻。我可以用什么方法来实现这个目标?在几何圆顶上存储顶点

回答

1

有很多方法可以做你想问的问题。 Wavefront OBJ files将每个顶点的坐标存储为一个索引列表,然后将每个面定义为以及围绕面法线顺时针确定顶点索引的循环。

我不喜欢这个,因为你必须做处理来找出连接的某些方面。对于描述的三角形网格,我更喜欢存储顶点和它们的1环。 1环是顶点周围相邻顶点的索引。

这样做可以让您从三角形移动到三角形更容易。 (v,v2,v3),...,(v,v4)如果对于顶点V, ,v1)。例如。

本博客文章进入更多细节:http://bluntobject.wordpress.com/2007/03/13/mesh-data-structures-vol-2-vertex-one-rings/

如果一个顶点是在边界上或是非歧管,你没有一个完整的1环。我将其作为部分单链列表处理。

+0

1环的方法听起来很棒!我将如何生成网格/球体和原来的所有三角形? – TheNickmaster21

+1

@ TheNickmaster21,这是一个完全不同的问题!如果球体的单个曲面细分足够好并且可以重复使用,只需下载一个.OBJ并读取数据。这非常简单。如果你需要更具适应性,那么在这里回答太多了。谷歌搜索“球面镶嵌”虽然提供了很多点击。我的方法将从一个铭文四面体开始,并细分为您想要的分辨率。 –

+1

@ TheNickmaster21,展开我以前的评论,可以在顶点放置一个顶点,并在底座周围放置几个顶点。也许5或6来获得最适合您的三角形的宽高比。然后,通过分割边缘并投影到球体上,每个三角形面可以细分为4个面。 –