2011-08-09 58 views
2

我正在尝试编写一个在网格中选择循环的方法。我遵循Maya帮助文件中提到的定义作为指导。选择边缘循环

http://download.autodesk.com/global/docs/maya2012/en_us/index.html?url=files/Polygon_selection_and_creation_Edge_ring_and_edge_loop_selection_tips.htm,topicNumber=d28e121580

在Maya,边缘环具有以下性质:

  • 连接边缘必须具有等于四价的顶点。配价是指连接到特定顶点的边的数量。
  • 连接序列的标准是序列中的下一条边是共享顶点的(i + 2)边,从当前边(i)开始依次确定。
  • 边缘序列(循环)可以在多边形网格上形成开放或闭合路径。
  • 开始和结束边缘不需要等于四。

我的问题是,我现在没有如何处理边缘的顺序。我一直在寻找暗示,但没有运气。甚至看着Blender的来源,试着弄清楚他们是如何做到的,但那也让我跺脚。

+1

你在使用什么数据结构?这可能有助于形成答案。 – tadman

+0

我正在使用Ruby API为Google SketchUp编写一个插件。对于每个顶点,我可以获得连接到该顶点的边的数组。如果这一点很重要,我也可以得到一张表格。 – thomthom

+0

我不知道他们使用的是什么数据结构,但我认为它是沿着[有边缘或半边缘的设置](http://www.cgal.org/Manual/latest/doc_html /cgal_manual/HalfedgeDS/Chapter_main.html),它更容易让你执行这些操作。你在使用类似的东西吗? – Bart

回答

0

我从来没有找到如何选择边缘循环玛雅方式。在确定边缘的顺序方面已经跺脚了。但是进一步挖掘Blender的来源,我发现他们使用的方法,我能够实现。

# Blender 2.58a 
# editmesh_mods.c 
# Line 1854 
# 
# selects or deselects edges that: 
# - if edges has 2 faces: 
# - has vertices with valence of 4 
# - not shares face with previous edge 
# - if edge has 1 face: 
# - has vertices with valence 4 
# - not shares face with previous edge 
# - but also only 1 face 
# - if edge no face: 
# - has vertices with valence 2