所以,我有点失落。对于我正在进行的游戏,我想让'世界'成为几何圆顶(由等边三角形组成的球体)。为了生成世界并玩世界,我需要找到一种方法来保存所有边和顶点,并能够计算邻居。我不确定如何以一种方式保存所有不同的顶点和边缘,以便您可以轻松地找出每个边缘相邻的点以及与每个点相邻的边缘。我可以用什么方法来实现这个目标?
答案 0 :(得分:1)
有很多方法可以做你要求的。 Wavefront OBJ files将每个顶点的坐标存储为索引列表,然后将每个面定义为和面法线顺时针方向的顶点索引循环。
我不喜欢这样,因为您必须进行处理以找出连接的某些方面。对于你描述的三角形网格,我更喜欢存储顶点和它们的1环。 1环是顶点顺时针相邻顶点的索引。
这样做可以让您更轻松地从三角形移动到三角形。如果对于顶点V你有1个环(v1,v2,v3,v4),那么你立即知道它在三角形(v,v1,v2),(v,v2,v3),...,(v,v4) ,v1)。例如。
此博客文章详细介绍:http://bluntobject.wordpress.com/2007/03/13/mesh-data-structures-vol-2-vertex-one-rings/
如果顶点位于边界上或非流形,则没有完整的1环。我将其作为部分单链的列表来处理。