一半君的总结纸

听话只听一半君

#04 已经知道多边形物体的edge, 如何得到edge上的vertices?

proc int[] edgeVertices( string $edge )
{
  int $vertices[2];

  string $vlist[] = `listAttr $edge`;

  $vertices[0] = match( "[0-9]+", $vlist[0] );
  $vertices[1] = match( "[0-9]+", $vlist[4] );

  return $vertices;
}

但是, Maya 总是按vertex序号大小返回这些 vertices,而不是按照 “construction order”来返回. 比如, 如果你激活了 PolyAppendTool 然后选择一个 edge, 你会看到一个箭头,他所指方将就是那条edge的 “vector” 方向. 返回的vertices的顺序可能并不和这个vector的指向一致.

根据 documentation 里关于 ‘mesh’ DG Node 的描述,你应该可以这样来查询:

getAttr polymesh.e[0];

或者更直接的这样:

getAttr polymesh.e[0].edg1;
getAttr polymesh.e[0].edg2;

但是这个方法好像现在无效 (至少在 MEL 里) . Maya Tech Support 正在研究这个问题.(lz表示这里不知道原作者在说什么,现在2014里也不行)

加强版:

# 返回的顺序似乎也不是"construction order"顺序
pyNode = pm.PyNode('pPlane1.e[187]')
pyNode.connectedVertices()
# Result: (MeshVertex(u'pPlaneShape1.vtx[97]'), MeshVertex(u'pPlaneShape1.vtx[108]')) #
Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: